标签: agvtool

增加内部版本号的更好方法?

我一直在使用shell脚本作为我的Xcode构建过程的一部分来增加plist文件中的内部版本号,但是它使得Xcode 4.2.1经常崩溃(关于不属于项目的目标的错误;我猜更改plist文件会以某种方式混淆Xcode).

shell脚本执行此操作,以便只有agvtool当文件比plist文件更新时才会增加构建号(因此只是构建时没有增加值):

if [ -n \"`find ProjDir -newer ProjDir/Project-Info.plist`\" ]; then agvtool -noscm next-version -all; else echo \"Version not incremented\"; fi
Run Code Online (Sandbox Code Playgroud)

有没有办法增加不破坏Xcode 的构建号(在plist文件中,或其他任何地方)?

最后编辑:我现在使用python脚本来做这种事情,我刚刚在github上公开了.它没有很好的记录,但不应该很难解决.作为奖励,此repo还包含一个有用的脚本,可自动将第三方库捆绑到应用程序包中.

shell xcode version agvtool xcrun

133
推荐指数
9
解决办法
5万
查看次数

在一个目录中使用带有多个.xcodeproject文件的agvtool

我已经尝试使用agvtool进行ios构建版本化.当目录中只有一个.xcodeproj文件时,它很有用.在我的例子中,我们的项目结构是在一个目录中有4个.xcodeproj文件.当在此目录中触发agvtool命令时,它会抛出错误消息,'agvtool不能与同一目录中的多个项目一起使用'.任何人都知道如何使用这个文件夹结构使agvtool工作?

versioning projects build agvtool ios

17
推荐指数
1
解决办法
796
查看次数

与agvtool版本变量的$ non_lazy_ptr链接错误?

我一直在使用agvtool我的iPhone应用程序的一般原则,并且最近找到了我想能够检查版本变量的原因(以便我可以将帮助内容重新复制到Documents目录中,如果它已经出来日期).MyAppVersionNumber在MyApp_vers.c中定义的变量在构建期间自动生成.它是在.o文件中生成的,并显示在链接应用程序本身的(以前的版本?)中.到目前为止,这似乎很好.

所以现在我已经extern double MyAppVersionNumber.m文件中声明了我需要使用它(后来尝试使用它,只是在一个NSLog语句中开始),我尝试为iPhone模拟器构建,并得到一个链接错误:

  "_MyAppVersionNumber", referenced from:
      _MyAppVersionNumber$non_lazy_ptr in HelpViewController.o
     (maybe you meant: _MyAppVersionNumber$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

那么,我需要做些什么来让这个链接?

我用google搜索了$ non_lazy_ptr和agvtool,并且什么也没有得到,只有$ non_lazy_ptr,它提供了一些东西,但主要是应用于库,这不是,真的(是吗?).到目前为止,在我的挖掘中,我还没有出现一个关于agvtool的页面,它实际上讨论了使用变量的任何细节 - 我读过的那些只是随便说出来的一个extern变量,我已经完成了.

有人熟悉这个,和/或能否提供任何帮助?

谢谢!

iphone xcode non-lazy-ptr linker-errors agvtool

8
推荐指数
1
解决办法
733
查看次数

AGVTool新版本和什么版本不对应

当我做:

agvtool new-version -all 99
Run Code Online (Sandbox Code Playgroud)

它更新了我的Info.plist文件.但是,如果我这样做:

agvtool what-version
Run Code Online (Sandbox Code Playgroud)

要么

agvtool next-version
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

There does not seem to be a CURRENT_PROJECT_VERSION key set for this project.
Add this key to your target's expert build settings.
Run Code Online (Sandbox Code Playgroud)

为什么这不对应.我是否必须使用plist命令行工具才能检索我的应用程序的当前版本.奇怪的是agvtool what-marketing-version工作正常.具有讽刺意味的是,agvtool似乎没有版本本身;-)

iphone xcode cocoa-touch agvtool ios

7
推荐指数
1
解决办法
2993
查看次数

在Xcode中构建之前运行shell脚本

在构建/存档之前,我需要调整项目的构建和版本号.
我尝试了很多东西,但到目前为止无济于事.

我添加了一个带脚本的目标来更新数字,并将其作为第一个依赖项添加到我的主目标.但是因为我有多个依赖项,因为我在我的应用程序中有扩展并且所有依赖项都是由Xcode并行执行的(或者至少是随机顺序),这不起作用.

我为我的方案添加了一个预先行动,结果相同.在继续构建之前,Xcode没有等待我的预操作完成(我添加了一个睡眠100来测试).

由于我正在改变构建号,因此脚本在开始其他任何操作之前就可以完成,但是还有一个副作用:构建甚至因为plist文件在构建相关文件时被更改而停止目标.

让我更难的是,我想用它agvtools来设置我的版本和内部版本号.这显然会启动我无法控制的后台进程以更改plist.

免责声明:我搜索了其他答案,没有帮助.

build-process agvtool ios

6
推荐指数
1
解决办法
7282
查看次数

agvtool 新营销版本在 Xcode 13 上不起作用

从 Xcode 13 开始,默认情况下没有Info.plist。相反,公共字段位于 target\xe2\x80\x99s Info 选项卡中,并在项目编辑器中构建设置。一个分开的Info.plist仅当存在其他字段时,才会将

\n

当我运行以下命令在 Jenkins 上设置 MARKETING_VERSION 时

\n
$ xcrun agvtool new-marketing-version 1.0.0\n
Run Code Online (Sandbox Code Playgroud)\n

Info.plist除非密钥存在,否则它不会对文件产生任何影响CFBundleShortVersionString。但是每次我更新目标的“信息”选项卡中的字段时,该Info.plist文件似乎都会再次重新生成并且CFBundleShortVersionString消失。

\n

因此,我想知道在这种情况下是否有关于如何MARKETING_VERSION通过命令行设置或如何使用 agvtool 的建议。任何建议将不胜感激!

\n

xcode agvtool xcode13

6
推荐指数
1
解决办法
2721
查看次数

Xcode Versioning在框架上构建设置

我正在开发基于以下模板的iOS框架:https://github.com/jverkoey/iOS-Framework

现在我需要稍微改进一下,并使用适当的构建/营销编号设置版本控制系统.

该框架项目有3个目标,第一个生成静态库,第二个生成资源包,第三个目标是静态库和资源包的聚合目标.所以我的第一个问题是确定我应该在哪个目标上配置版本控制构建设置(或者我应该配置所有目标).

我的第二个问题是我应该配置什么设置以及它们的含义:

当前项目版本=>是构建版本还是营销版本?因此,如果我发布的应用程序版本如:1.2.3.4,我应该设置4吗?还是1.2.3?或1.2.3.4?

生成的版本控制源文件名=>生成的.c文件的名称,包含我猜的整数构建号?

生成的版本控制变量=>这是什么?

版本控制名称前缀=>包含内部版本号的变量名称的前缀

版本控制名称后缀=>包含内部版本号的变量名称的后缀

版本控制系统:每个人都使用Apple Generic,所以我猜它是唯一可用的

版本控制用户名:这是什么?

还有其他设置,比如"打包"部分中的"框架版本",我想在iOS上总是使用"A"(因为它们实际上是静态框架,版本无关紧要)?对于"链接"部分的"兼容版本"/"当前库版本"设置,我应该仅在静态库目标上配置它们吗?或者它们是否被链接库的应用程序使用?

versioning frameworks static-libraries agvtool ios

5
推荐指数
1
解决办法
2451
查看次数

有没有办法在构建阶段自动将自定义值写入bundle的.plist?

我正在使用Jenkins建立一个CI系统,并且正在使用agvtool在构建时碰撞和设置营销和技术版本.

除了在构建时设置版本控制之外,在.plist中设置几个自定义值非常有用.

这可能吗?

xcode xcodebuild agvtool ios

4
推荐指数
1
解决办法
1763
查看次数