标签: xcodebuild

应用扩展可以有条件地包含在构建中吗?

我正在开始开发 2 个应用程序扩展,我想按如下方式设置我的构建:

  • 面向 App Store 的构建不应包含任何扩展
  • 用于 TestFlight 的构建应包括几乎准备就绪的扩展
  • 本地构建应包含两个扩展

目前,我对每个项目都有不同的构建配置,以显示和隐藏应用程序的其他方面(在某些情况下也包括编译器标志)。我使用 fastlane 来进行构建。

据我所知,添加或删除应用程序扩展的唯一方法是:

  • 将主目标复制两次,并为上述每个构建使用一个(缺点 - 必须维护 3 个目标副本,直到扩展完全完成)
  • 在构建之前手动添加/删除扩展(缺点 - 无法从 CI 环境中的给定分支构建 TestFlight 和 App Store,因为需要手动干预)

有人能想出更好的解决方案来有条件地包含应用程序扩展吗?

xcode conditional-compilation xcodebuild ios-app-extension fastlane

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

Xcode xccov 命令抛出错误“无法在方案操作中加载覆盖率存档”

多年来我一直在 CI 上使用以下命令来生成代码覆盖率报告:

\n
xcrun xccov view --report --json path/to/App.xcresult > ./test_output/reports/xccov.json\n
Run Code Online (Sandbox Code Playgroud)\n

在最后一天(我不确定发生了什么变化),我开始收到此错误:

\n
2023-11-02 23:24:36.067 xccov[22876:146900] Requested but did not find extension point with identifier Xcode.IDEFoundation.IDEResultKitSerializationConverter\n
Run Code Online (Sandbox Code Playgroud)\n

其次是:

\n
Error: Error Domain=XCCovErrorDomain Code=0 "Failed to load coverage archive in scheme action \'Testing project App with scheme App\' in result bundle" UserInfo={NSLocalizedDescription=Failed to load coverage archive in scheme action \'Testing project Handshake with scheme App\' in result bundle, NSUnderlyingError=0x600001c70870 {Error Domain=NSCocoaErrorDomain Code=260 "The file \xe2\x80\x9cMetadata.plist\xe2\x80\x9d couldn\xe2\x80\x99t be opened because …
Run Code Online (Sandbox Code Playgroud)

xcode continuous-integration code-coverage xcodebuild ios

5
推荐指数
0
解决办法
263
查看次数

从Xcodebuild启动RETINA模拟器以实现持续集成

我正在针对iPhone应用程序的CI环境下运行自动化应用程序单元测试,并且一切正常,使用命令行,如;

xcodebuild -scheme "Tests" -configuration Debug -sdk iphonesimulator5.0
Run Code Online (Sandbox Code Playgroud)

这很好,但我现在想强制iPhone模拟器以Retina模式启动,而不是默认的标准模式.

我知道我可以使用硬件菜单选项切换它,但是我在无头集成服务器上运行它,所以没有那个选项.

我想做的是在命令行上以某种方式传递开关,告诉模拟器以Retina模式启动.

我乐观地尝试将SimulateDevice ="iPhone(Retina)"附加到xcodebuild命令,但这似乎不起作用.

这可能吗?我现在似乎无法找到办法.

如果不可能,我可以采取另一种方法吗?

continuous-integration xcodebuild ios retina-display ios-simulator

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

从控制台构建时无法找到头文件

我有一个使用嵌套项目依赖项的项目,在我的例子中是RestKit.

在Xcode中

当我从Xcode中构建项目时,RestKit也会被编译并将其标题放在这里:

~/Library/Developer/Xcode/DerivedData/myproject-blrrqydtywxuereiowkehhhcbozj/Build/Headers
Run Code Online (Sandbox Code Playgroud)

Header Search Path值被相应地设置:

${TARGET_BUILD_DIR}/../../Headers
Run Code Online (Sandbox Code Playgroud)

从终端

但是,当我从终端I构建我的项目时,Headers最终会在这里:

~/MyProjectSourceFolder/RestKit/Build/Headers
Run Code Online (Sandbox Code Playgroud)

我在编译过程中遇到错误RestKit.

现在我如何xcodebuild使用相同的位置或相同的构建环境,以便我的构建也可以在控制台上运行?非常感谢你的帮助.

iphone objective-c xcodebuild ios restkit

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

xcodebuild使用的配置与从Xcode中进行构建的配置不同

在命令行上,xcodebuild提供的结果与在Xcode UI中进行构建的结果不同。

这是我通过的命令行:

$ xcodebuild -sdk iphonesimulator5.0 -configuration Release -scheme mylib -target mylib

重要的是要注意,已将目标设置为创建静态库文件。

我知道正在使用不同的设置,因为在项目文件中已将-Wundeclared-selector禁用。但是,从命令行运行xcodebuild时会收到这些警告。

似乎其他人也有此问题: 为什么xcodebuild与XCode UI提供不同的生成结果

xcode build objective-c xcodebuild

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

将xcodeproj应用程序内购买转换为终端(Bash)的pkg文件或如何将xcarchive文件转换为pkg文件?

我正在尝试创建一个bash脚本来自动创建应用内购买pkg文件.

我的目的是脚本成功创建所有应用内购买xcodeproj项目,然后使用此命令将其归档

xcodebuild -scheme $nameOfProject archive
Run Code Online (Sandbox Code Playgroud)

$ nameOfProject是一个变量,它在循环内部保存与应用内购买相对应的xcodeproj文件的名称.

执行此操作后,我必须打开Xcode的存档部分并手动导出所有存档以创建我需要上传到iTC的pkg文件.

是否有任何命令可以用来从终端自动执行此操作?

提供相同解决方案的另一件事是:如何将xcarchive文件转换为pkg文件?

iphone xcode xcodebuild ios

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

如何从.p12文件中获取分发标识的名称

我正在尝试为Xcode创建自动构建.直到现在一切正常.为了从命令行构建项目,我使用此命令

xcodebuild –project {“xcode_project file path”}–target {“target_name”} –sdk iphoneos –
configuration Release clean build CODE_SIGN_IDENTITY={$distribution_signing Identity} 
PROVISIONING_PROFILE={UUID for provisioning profile}
Run Code Online (Sandbox Code Playgroud)

我想动态获取UUID和CODE_SIGN_IDENTITY,

对于我正在做的UUID

UUID=$(grep "<key>UUID</key>" "$PROVISIONING_PROFILE_PATH" -A 1 --binary-files=text | sed -E -e "/<key>/ d" -e "s/(^.*<string>)//" -e "s/(<.*)//")
Run Code Online (Sandbox Code Playgroud)

上面的脚本代码为我提供了任何配置文件的UUID.

我坚持动态获取CODE_SIGN_IDENTITY.我知道它的形式是这样的iPhone Distribution: Developer name

如何iPhone Distribution: Developer name 从.p12文件中提取.

xcode xcodebuild jenkins xcode4.5

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

在模拟器内启动时,创建并安装的命令行iOS .app崩溃

我正在使用xcodebuild和xcrun进行一些概念测试,以便在我的ios模拟器上创建和部署.app(甚至将.app目录传递给我的最终客户端).

无论如何,事情是我成功处理了所有需要的步骤,从头开始创建.app文件(好吧,目录),但是当我执行下面的2行,特别是第二行,一旦我执行后,我得到了一个应用程序崩溃尝试上传然后将.app运行到模拟器上:

xcrun simctl install booted $(PWD)/build/Debug-iphoneos/APP_NAME.app
xcrun simctl launch booted somebundle.id.from.me    <- CRASH
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,xcrun命令都会在system.log上产生这个错误:

Error Domain=FBSOpenApplicationErrorDomain Code=1 "(null)"
Run Code Online (Sandbox Code Playgroud)

显然我的应用程序被安装到模拟器上(我已经多次擦除以创建一个全新的安装),它甚至可以启动(启动屏幕从模拟器桌面上出现的图标增长),但是我得到的第一件事就是我期待通过启动画面的应用程序是前面提到的崩溃行错误(在system.log文件中).

有人说我可能在我的模式定义面板中有一些虚拟空变量浮动.我已经检查过了,情况并非如此.没有任何变量.

其他一些人说应用程序的旧版本可能在模拟器的任务调度程序中处于活动状态.事实上,有时我发现我的任务是过去的一项旧任务,但是两次按"home"去模拟器任务管理器,杀死它,并试图用xcrun再次启动我的.app文件什么也没做,这个问题还在那里.我甚至停止从Xcode本身启动的相同应用程序的旧执行(使用STOP按钮),但没有运气.

所以,我肯定迷路了.我无法通过命令行将我最近创建的.app启动到模拟器上.

使用9.3(iPhone 4s)模拟器和9.3(iPhone 6plus)模拟器失败了.我的XCode工具是我的XCode 7.3.1中包含的工具.我正在使用"ElCapitán".

我想不出别的什么.

我希望能够通过"命令行工具"上传和运行我的.app.我希望它可能以某种方式,或者至少看起来我真的很接近成功.

我可能忽略了任何其他暗示?

问候和感谢.

xcodebuild ios ios-simulator xcrun

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

如何签署未签署的IPA?

我已经用xcodebuild实用程序生成了一个未签名的IPA文件,现在我的客户想要对其进行签名。是否可以使用开发人员帐户生成的现有配置文件进行签名?另一个问题,是否可以使用与xcode相关的命令行来执行此操作?

xcode code-signing xcodebuild ios ipa

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

iOS UITests失败:IDETestOperationsObserverErrorDomain Code = 13

我正在从Jenkins构建脚本运行iOS应用程序的AppUITests.单元测试(AppTests)运行正常但AppUITests由于以下问题而失败.我该如何解决这个问题?

09:19:53.506 XCTRunner [22911:77924]无法在30.0秒内进行后台测试跑步.09:19:53.507 xcodebuild [22835:77541] - [IDETestOperationCoordinator testRunnerSession:initializationForUITestingDidFailWithError:] 09:19:53.507 XCTRunner [22911:77924]调用完成.09:19:53.507 xcodebuild [22835:77541]测试操作失败:无法进行后台测试跑步者.09:19:53.507 xcodebuild [22835:77541] _finishWithError:错误Domain = IDETestOperationsObserverErrorDomain Code = 13"无法对后台测试跑步者. "UserInfo = {NSLocalizedDescription =无法进行后台测试跑步者.} didCancel:1

xcode xcodebuild ios jenkins xcode-ui-testing

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