标签: xcodebuild

如何在Xcode中暂时禁用运行脚本阶段

我为项目的目标配置了运行脚本阶段.它运行在每个构建上.是否可以临时禁用此脚本而不将其从目标中删除?

iphone xcode xcodebuild

15
推荐指数
2
解决办法
2725
查看次数

Github Actions:xcodebuild 由于服务器指纹而失败

我正在尝试使用 Github Actions 构建一个 macOS 应用程序。这已经很有效了,直到我将我的依赖项迁移到 Swift Package Manager。现在我在构建我的应用程序时收到以下错误:

xcodebuild: error: Could not resolve package dependencies: The server SSH fingerprint failed to verify.

我有一个私有 GitHub 存储库作为我的应用程序中的依赖项,使用 ssh 位置添加为 Swift 包。因此,我需要在Set up ssh-agent步骤中为依赖项添加我的 ssh 密钥。在一个步骤中手动克隆存储库git clone工作正常,但我需要让它与 xcodebuild 一起使用才能成功构建我的应用程序。

工作流文件

name: Main
on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  build:
    name: Release
    runs-on: macOS-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master
        with:
          fetch-depth: 1
      - name: Set up ssh-agent
        uses: yakuhzi/action-ssh-agent@v1
        with:
          public: ${{ secrets.SSH_PUBLIC_KEY }}
          private: ${{ secrets.SSH_PRIVATE_KEY }} …
Run Code Online (Sandbox Code Playgroud)

ssh xcode xcodebuild swift-package-manager github-actions

15
推荐指数
3
解决办法
4531
查看次数

内部不一致错误(didStartTask)

有时,当我通过 Xcode 运行应用程序时,大约有十分之二的情况会出现以下错误:

Internal inconsistency error (didStartTask): targetID (174) not found in _activeTargets.
Internal inconsistency error (didEndTask): '12' missing from _activeTasks.
Run Code Online (Sandbox Code Playgroud)

使用Xcode 14.1、14.2、14.3版本会重现此错误。

可以通过清理项目并重建它来修复此错误。我在forums.swift.org上找到了帖子,但没有解决方案。

从线程判断,问题可能出在SPM以及依赖关系连接不正确

有人有解决办法吗?

xcode xcodebuild swift-package-manager

15
推荐指数
1
解决办法
2729
查看次数

如何将现有Xcode目标从动态更改为静态?

我正在使用一个生成动态库(Cocoa API)的现有项目.

我宁愿生成一个静态库,但如果我将[Linking | Mach-O Type]字段从"Dynamic Library"更改为"Static Library",则Clean Project和Build Project都会抱怨目标的MACH_O_TYPE值无效'staticlib'.

是否有一种直接的方法来使构建生成静态.a文件?

谢谢,
埃里克

xcode xcodebuild

14
推荐指数
2
解决办法
1万
查看次数

是否有API或任何其他方法来自动化提交过程?

我有许多功能和用户界面相似的应用程序.我通过从.plist文件中获取变量来创建用户界面.例如,我从我获取数据的地方保存了API的来源.

创建新应用程序只需更改.plist文件中的值并重建应用程序,最后将其提交到App Store.此外,我还需要创建Ad-Hoc配置文件并构建测试版本.

我希望自动化这个过程.为此,我需要:

  1. 通过命令行界面构建应用程序.

  2. 将二进制文件和其他所需文件/信息(应用程序图标,说明等)上传到iTunes Connect.

我应该看哪些指针?

iphone xcodebuild app-store

14
推荐指数
2
解决办法
7867
查看次数

SSL连接从命令行运行单元测试时出现问题

目标

我们的目标是在持续集成环境中执行我们的单元测试(Jenkins)

(我认为每个问题都必须说明一个人想要实现的目标.也许这个问题实际上可以通过一种非常不同的方式解决)

更新:更多关于"你为什么要这样做?"

首先,我们正在讨论具体的,自行开发的硬件.我希望持续集成测试告诉我是否有人在没有告诉所有开发人员的情况下改变了盒子的行为(是的,是的,我知道,这样的事情永远不会发生......)

其次,我们的一些(并非所有)连接使用默认无效的证书,因此我们有代码来检查证书的有效性(SecTrustEvaluate等).当然,理想情况下,我们的测试也会测试该代码.但这似乎太多了.

第三:嗯,如果我能得到真正的交易,为什么我要嘲笑任何东西?IDE没有问题,为什么要命令行.

如果我想要可预测性,我会YES在所有测试中返回;)(我已经看到人们这样做了).不,我想知道代码是否真正适用于我们的设备.这是某种变态的欲望吗?

到目前为止问题已解决

从命令行运行测试听起来非常简单,但是

xcodebuild -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO clean test
Run Code Online (Sandbox Code Playgroud)

导致一个丑陋的错误:

unsupported build action 'test'
Run Code Online (Sandbox Code Playgroud)

所以我在网上搜索了一篇关于从命令行运行OCUnit测试的文章.

我按照所有步骤操作,我可以从命令行运行我的测试,如下所示:

xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
Run Code Online (Sandbox Code Playgroud)

剩下的问题

但是,现在对SSL服务器的任何NSURLConnection都将失败,因为"此服务器的证书无效.".从命令行运行测试时,我听说过钥匙串问题,但这是真的吗?是否拒绝任何SSL连接?

重现

https://github.com/below/SSLTestDemo获取示例.打开它,然后使用Xcode自己的Test⌘U命令运行样本测试.测试应该成功.

现在在命令行上运行测试:

xcodebuild -scheme CITests -sdk iphonesimulator TEST_AFTER_BUILD=YES ONLY_ACTIVE_ARCH=NO clean build
Run Code Online (Sandbox Code Playgroud)

由于"此服务器的证书无效",测试失败.错误.

任何指针?

  • 我做错了吗?
  • 这是一个真正的错误吗?
  • 如果是这样,有工作吗?

任何输入都表示赞赏!

xcode xcodebuild ocunit ios jenkins

14
推荐指数
1
解决办法
1099
查看次数

有条件地构建具有不同资产目录的应用程序

我的XCode项目以多种配置的方式设置,允许我为我的应用程序的不同变体使用相同的代码库,但每个都有独特的元素,如应用程序名称,版本,包标识符,图标,启动屏幕等我已经关注了这个网站,以便进行大部分设置:http: //appfoundry.be/blog/2014/07/04/Xcode-Env-Configuration/

我还有一个config.plist,其中包含与每个XCode配置相关联的各种唯一设置,这些设置只能在构建时成功复制.以下是运行脚本构建阶段的片段,以便执行此操作:

RESOURCE_PATH=${SRCROOT}/${PRODUCT_NAME}/config/${CONFIGURATION}

BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app

echo "Copying all files under ${RESOURCE_PATH} to ${BUILD_APP_DIR}"
cp -v "${RESOURCE_PATH}/"* "${BUILD_APP_DIR}/"
Run Code Online (Sandbox Code Playgroud)

我的下一个目标是能够在构建时复制特定配置的资产目录,以避免将所有不同配置的图像捆绑到构建中,从而导致它变得臃肿.我使用Run Script尝试了与上面相同的解决方案,更改了复制行以包含递归选项(因为资产目录本质上是一个目录):

cp -rv "${RESOURCE_PATH}/"* "${BUILD_APP_DIR}/"
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我的应用程序无法构建,并说它无法找到应用程序图标并启动图像.有任何想法吗?

xcode xcodebuild ios

14
推荐指数
1
解决办法
4384
查看次数

在启动时传递参数的xcode命令行测试

我在CI上实现xcodebuild命令测试时遇到小问题.我有与特定设备语言相关的测试,在xcode中我可以将"在启动时传递的参数"设置为-AppleLanguages(语言).我可以使用xcodebuild传递该参数吗?

我的脚本看起来像这样

xcodebuild -workspace MyApp.xcworkspace -scheme "MyAppTests" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.0' test
Run Code Online (Sandbox Code Playgroud)

谢谢!

xcode continuous-integration xcodebuild ios

14
推荐指数
1
解决办法
1768
查看次数

如何使用xcodebuild与-only-testing和-skip-testing标志?

我注意到在xcodebuildman的页面中有两个选项.

-only-testing:TEST-IDENTIFIER       
Run Code Online (Sandbox Code Playgroud)

通过指定包含和排除其他测试的测试来约束测试

-skip-testing:TEST-IDENTIFIER       
Run Code Online (Sandbox Code Playgroud)

通过指定要排除的测试来约束测试,但包括其他测试

我尝试了什么:

xcodebuild -workspace MyWorkSpace.xcworkspace / 
-sdk iphonesimulator / 
-destination id=7F52F302-C6AF-4215-B269-39A6F9913D5B / 
-scheme SCHEME-iOS / 
test -only-testing:???
Run Code Online (Sandbox Code Playgroud)

什么TEST-IDENTIFIER意思?

xcode xcodebuild

14
推荐指数
3
解决办法
8255
查看次数

xcodebuild -exportArchive失败并显示错误找到签名资产失败

我正在使用命令行xcodebuild工具从Xcode档案中导出.ipa文件.它在Xcode 8.3.3中运行良好.相同的设置已停止使用Xcode 9 beta.现在它失败并出现此错误:

IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fc309310550>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed."
Run Code Online (Sandbox Code Playgroud)

看来Xcode 9找不到配置文件,但为什么呢?

xcodebuild ios ipa xcode9-beta xcode9

14
推荐指数
2
解决办法
8763
查看次数