在构建时更新 dSYM 中的 CFBundleShortVersionString?

2023-12-30

我将其用作项目中的构建阶段:

export PLISTBUDDY="/usr/libexec/PlistBuddy"

export INFO="${CODESIGNING_FOLDER_PATH}/Info.plist"
export RXREVISION=`git describe --tags | perl -pi -E "s/[^-]+\-([^-]+).*/\1/"`
export RXVERSION=`git describe --tags | perl -pi -E "s/([^-]+)\-[^-]+.*/\1/"`
$PLISTBUDDY $INFO -c "add CFBundleVersion string $RXREVISION"
$PLISTBUDDY $INFO -c "set :CFBundleVersion $RXREVISION"
$PLISTBUDDY $INFO -c "add CFBundleShortVersionString string $RXVERSION"
$PLISTBUDDY $INFO -c "set :CFBundleShortVersionString $RXVERSION"

这非常适合更新构建应用程序的 Info.plist 中的构建修订版本,并且不会改变我的源代码树。

我尝试将更新版本脚本放在链接阶段的末尾和之前。无论哪种方式,它都能够影响对已构建应用程序的更改,但 dSYM 是从原始源代码树构建的。

构建的应用程序和构建的 dSYM 之间的版本号不匹配是一个问题。 (HockeyApp 在这里抛出一个错误。)

如果我更新源树中的 Info.plist,我需要处理它的变化。这给我留下了两个我可以看到的选择:

  1. 将 Info.plist 置于源代码管理之下,并让脚本直接对其进行编辑。但这意味着我需要在每次构建后检查更改。
  2. 忽略 Info.plist,让脚本直接编辑它。但是 Info.plist 中还有很多其他的东西我do想要受到源代码控制。

如何让 dSYM 中的版本也自动更新,而不必处理源树中的 Info.plist 更改每个构建?

另外,切线:我如何查看 dSYM 中的版本?


接受的答案是正确的,但没有给出有关如何修改 dsym 的 plist 的实际详细信息。将以下行添加到构建脚本会修改 dsym 中的 plist:

cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app.dSYM/Contents"
$PLISTBUDDY -c "Set CFBundleVersion $RXREVISION" Info.plist  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在构建时更新 dSYM 中的 CFBundleShortVersionString? 的相关文章

  • 我应该使用什么 Xcode 设置来支持armv6 和armv7?

    我最近将 Xcode 从 3 2 升级到 4 2 升级后 我在 iPhone 3 设备上测试我的应用程序时遇到问题 因为我的目标的 Build Settings Architectures 项设置为 armv7 将 Architecture
  • 归档时 XCode 挂起

    当我尝试归档某个项目时 Xcode 无法响应 如果不管他 他会在很长一段时间后设法打开组织者 档案就在那里 如果从library developer xcode archives中手动删除 Xcode会再次响应 这种情况只发生在这个项目中
  • 使用 c11 标准和 clang 来使用 strcpy_s

    我正在运行 OS X Sierra 并尝试编译一个使用的 c 程序strcpy s 但是我安装的 clang 编译器使用的是 c99 标准 但是据我读到的 https embeddedgurus com barr code 2017 08
  • Cordova 4.3.0 - 构建命令返回错误无法找到模块“Q”

    将 cordova 更新到版本 4 3 0 后 命令 cordova build 返回以下错误 module js 340 throw err Error Cannot find module Q at Function Module re
  • 如何向用户显示我的App当前的项目版本?

    我想将当前版本添加到我的应用程序的 关于 部分 如所附屏幕截图所示 Apple 提供版本控制 如何在您的应用程序中显示这些设置 经过进一步的搜索和测试 我自己找到了解决方案 NSDictionary infoDictionary NSBun
  • Xcode 未创建 .h 文件

    我使用的是 Xcode 6 0 1 我创建了一个自动生成 h 和 m 文件的新项目 当我尝试添加新的 Objective C 文件时 它仅创建 m 文件 h 文件未生成 我尝试了所有首选项 但没有找到一个显示 生成 h 文件 的选项 出于好
  • 如何更改 FileMerge 的字体/设置/首选项?

    一段时间以来 我无法更改 FileMerge 的字体 然后它突然开始对它无法识别的文件 如打字稿源文件 使用类似 Helvetica 的字体 无衬线 可变宽度 通过将字体更改为 Helvetica 可以暂时更改为 monaco 是的 这很奇
  • 提交的代码签名应用程序无效

    我尝试向应用程序商店提交应用程序 但收到以下错误 我见过类似的问题 并提出了 2 个不同的解决方案 但都没有解决问题 无效的代码签名权利 您的应用程序包的签名包含不受支持的权利值 具体来说 不支持密钥 com apple developer
  • 与 UIActivityViewController 共享 PDF 文件

    我正在尝试使用共享 PDF 文件UIActivityViewController但是当我按下按钮时 我没有共享文件的选项 我怎样才能显示这些选项 https i stack imgur com ywDQw jpg https i stack
  • 如何以编程方式将传入的 iPhone 短信静音?

    我目前正在尝试使用AVSystemController根据用户的选择来静音系统噪音的私有框架 我目前正在通过以下方式将电话静音 AVSystemController object setVolumeTo 0 0 forCategory Ri
  • ios 7 - 强制视图布局翻转到 RTL,无需更改语言

    我的应用程序中有一些视图需要能够显示 LTR 和 RTL 内容 但不能同时显示 并且它必须与一般应用程序布局方向无关 意思是 我希望能够告诉特定视图将其布局从 LTR 翻转到 RTL 反之亦然 无需更改系统语言 我对此进行了相当多的研究 但
  • 已删除的测试仍保留在 Xcode 测试导航器中

    我最近从我的项目中删除了一些旧的测试类并删除了这些文件 正如预期的那样 文件被移至垃圾箱并在 git 中显示为已删除 不幸的是 它们定义的测试类和测试用例继续出现在测试导航器中 我尝试过常见的方法 例如清理和重建 以及退出并重新打开 Xco
  • 如何了解xcode调试中的CPU和内存消耗

    在 Xcode 5 中 有一个新的调试面板 分别以 和 MB 为单位显示 CPU 和内存消耗 我们如何利用这个 我应该尝试保持在以下 CPU 百分比阈值吗 我有时会看到我的应用程序达到 100 或以上 这是否意味着我在应用程序中进行了太多处
  • 在 xcode 中使用线程调用函数

    我在 xcode 中创建了一个线程 并且给出了从该线程调用的函数名称 但我的问题是 给 call 的函数名称没有被调用 知道何时在该函数中放置断点 code NSThread myThread myThread start self per
  • 保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS、Xcode 4)

    在我的应用程序中 我希望用户能够录制一个声音文件并播放它 然后保存该声音文件以供以后使用 我用了本教程 http www techotopia com index php Recording Audio on an iPhone with
  • 是否有针对不同屏幕尺寸的单独故事板?

    基本上我已经完成了一个应用程序 我唯一的问题是 ATM 机应用程序在设计时只考虑了 4 英寸显示屏 当在 3 5 英寸模拟器上运行时 应用程序会丢失 0 5 英寸 显然 那么我的问题是 如何在 Xcode 5 中为不同的屏幕尺寸设置不同的故
  • 本地化现有的 iOS 应用程序

    我不敢相信以前没有人问过这个问题 要么是我的编码实践太无组织性 要么是我没有使用正确的关键字 How can I localize an existing iOS app that does not use NSLocalizedStrin
  • XCode 无法将 iPhone 应用程序部署到 iPhone 3GS

    因此 我构建了我的 iPhone 应用程序 它在模拟器中运行良好 因此我想将其部署到我的 iPhone 上进行最后一轮测试 然后再使用我的分发配置文件进行公开 Beta 测试 我已经这样做过很多次了 从来没有出现过问题 然而 自从上次测试运
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后

随机推荐

  • Java/Android 从 xml 获取数组

    我在整个应用程序中使用的 xml 文件中有一个经度和经度点的列表 我发现自己经常重复这段代码来获得积分 并认为一定有更好的方法吗 String mTempArray getResources getStringArray R array s
  • http.antMatcher("/**") .authorizeRequests().antMatchers("/") 中的 antMatcher("/**") 需要什么? [复制]

    这个问题在这里已经有答案了 我正在学习 Spring Security 我发现了这段代码https spring io guides tutorials spring boot oauth2 https spring io guides t
  • 使用 Java 和 MimeMessage 发送之前在默认邮件客户端中预览电子邮件

    如何将 MimeMessage 发送到默认电子邮件客户端 以便在 JavaMail 中发送之前可以预览它 我在一家非常官僚的公司工作 这是必须的 如果消息总大小很小并且是纯文本 您可以调用MimeMessage saveChanges ht
  • 荣格图形每次都能出现在同一个地方吗?

    我正在使用JUNG http jung sourceforge net index html http jung sourceforge net index html 在java中绘制图形 这个软件很棒 但我有一个小问题 我如何确保每次显示
  • 如何使用 Python 从 Salesforce 获取文件

    我正在使用 Python Beatbox 访问 Salesforce 案例 service beatbox PythonClient instantiate the object service login login using your
  • 使用 Java 分叉和删除权限

    我正在用 Java 编写一个服务器程序 允许用户使用 DRMAA 提交作业 尽管主服务器进程运行为root 它所做的就是验证用户身份 然后启动另一个以该用户身份运行的 Java 程序 并实际完成工作 以遵守最小化特权的原则 最初 我是这样做
  • Azure应用程序服务找不到已安装的模块

    我正在尝试通过 Azure 应用服务将 Django 应用程序部署到 Linux 服务器 在通过 Azure Devops Pipelines 进行部署期间 所有需求均从项目根目录中的requirements txt 文件安装 我已使用 K
  • 在哪里可以找到有关 OpenGL 着色器函数texture2DRect() 的文档?

    我通常是一个自给自足的 Google 员工 但我找不到任何有关 OpenGL 着色器函数的文档texture2DRect 以前有人遇到过这个吗 它被用于在 openframeworks 中编写着色器的一些示例代码中 所以我知道它存在 并且它
  • “new Object()”和对象字面量表示法有什么区别?

    这种基于构造函数的创建对象的语法有什么区别 person new Object 以及这个字面语法 person property1 Hello 看起来两者都做同样的事情 尽管 JSLint 更喜欢使用对象文字表示法 哪一个更好 为什么 对于
  • Tomcat servlet 应用程序的后台线程[重复]

    这个问题在这里已经有答案了 我对 Tomcat 不是很熟悉 在我看来 它基本上被抽象为一个 cgi 服务器 可以在调用之间保存 JVM 不过 我知道它可以做的远不止这些 我正在寻找一种方法来启动背景当 Tomcat 服务器启动时 它会定期更
  • .NET Framework 和 .NET Standard 冲突(兼容性问题)

    我的 DLL 是使用 NET Standard 1 6 创建的 ASP net 使用 NET Framework 4 这是我收到的错误 严重性代码 说明 项目文件行抑制状态 错误项目目标为 NETStandard 版本 v1 6 它不可能是
  • curl:如何为https请求指定目标主机名

    我有一个x example为双方提供流量a example and b example x example都有证书a example and b example DNS 为a example and b example尚未设置 如果我添加一
  • pyspark dataframe使用组来获取多个字段计数[重复]

    这个问题在这里已经有答案了 我有按区域划分的客户数据源 如下所示 region source consumer id APAC mail 1 APAC referral 2 APAC mail 3 APAC referral 5 APAC
  • Qt - 鼠标悬停并单击时自定义按钮的样式表

    我想要一个隐形按钮 但是当用户将鼠标悬停在其上时 我想要有浅蓝色 当他单击它时 我想要有深蓝色 经过一些研究 我发现我可以使用样式表功能 但我是 Qt 新手 并且没有任何 Qt 经验 所以我更愿意询问和学习 yourBtn gt setSt
  • 如何设置带有 UTC 时间的日历?

    海报here https stackoverflow com questions 308683 how can i get the current date and time in utc or gmt in java假设 Date 始终采
  • heatmap.2 指定行顺序还是防止重新排序?

    我正在尝试使用 heatmap 2 下面的代码 生成一些对数转换的折叠变化数据图 我想按最后一列中的值 从大到小 对热图中的行进行排序 这些行正在自动排序 我不确定 幕后 使用的精确计算 如图所示 正在执行一些聚类 样本数据 gid 2hr
  • 如何摆脱 SKTextures?

    也许这很容易 但我迷路了 我有一个项目 我必须制作一个全屏动画 使用 8 张 jpg 来模拟页面打开 所以我正在做的是 我有一个全屏显示的 SKSpriteNode 制作 8 个 SKTextures 的数组 使用 SKTexture pr
  • 将脚本调整为多个对象时 Unity 冻结

    我正在努力通过 Unity 扔球并获取球的坐标 应用了两件事 一个用于身体动作的脚本和一个用于落球的脚本 我认为这两个代码的运行没有问题 因为当我将脚本应用于一个球时没有问题 顺便说一句 当球的数量增加到 100 个时 Unity 就会停止
  • QOpenGLWidget 在 update() 上停止重画

    我有一个自定义 QDialog 其中包含一个具有 4 个独立实例的层次结构QOpenGLWidget 这些中的每一个QOpenGLWidget有自己的 GL 上下文 并渲染不同的场景 我有一个循环调用update 推荐的重新绘制方法 在每个
  • 在构建时更新 dSYM 中的 CFBundleShortVersionString?

    我将其用作项目中的构建阶段 export PLISTBUDDY usr libexec PlistBuddy export INFO CODESIGNING FOLDER PATH Info plist export RXREVISION