使用Jenkins构建iOS应用:模拟器无应用及真机构建方法咨询
模拟器构建成功但看不到应用的解决方法
- 你当前执行的
build动作仅完成代码编译,产物默认存放在Xcode的DerivedData缓存目录,不会自动安装到指定模拟器,这是看不到应用的核心原因。 - 先固定编译产物路径,在原有构建命令中追加
CONFIGURATION_BUILD_DIR=$WORKSPACE/ios-build参数,构建成功后.app文件会直接输出到Jenkins任务工作区的ios-build目录下,无需去DerivedData里翻找。 - 编译完成后追加模拟器安装命令,即可把应用装到目标模拟器:
# 先启动指定模拟器(如果模拟器已经启动可以跳过这步) xcrun simctl boot "iPhone 12" # 安装编译好的app,替换成你自己的app名称 xcrun simctl install "iPhone 12" $WORKSPACE/ios-build/Name.app # 可选:安装完成后直接启动应用,把bundle id换成你项目的实际id xcrun simctl launch booted com.yourcompany.name
- 常见坑点:如果Jenkins是以系统后台守护进程方式启动的,会和当前登录用户的模拟器实例产生权限隔离,哪怕命令执行成功也看不到模拟器里的应用。解决方法是把Jenkins改为当前登录用户下的前台启动进程,不要用系统级daemon运行。
Jenkins构建iOS真机应用的配置流程
- 前置依赖准备
- 必须使用MacOS设备作为构建节点,非Mac系统无法完成iOS编译打包
- 节点上提前安装对应版本的Xcode,执行
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer切换到正确的命令行工具路径 - 提前准备好苹果开发者账号对应的发布/开发证书(p12格式+导入密码)、匹配App ID的描述文件(mobileprovision格式)
- 签名环境配置
- 双击p12证书导入到Mac节点的「登录」钥匙串,将证书的信任选项设置为「始终信任」
- 把描述文件放到固定目录:
~/Library/MobileDevice/Provisioning Profiles/ - 构建前先执行命令解锁钥匙串,避免签名时弹权限框导致构建失败:
security unlock-keychain -p "你的Mac节点登录密码" ~/Library/Keychains/login.keychain-db
- 真机构建命令参考
真机构建不需要关闭代码签名,指定iphoneos sdk和签名参数即可,示例:xcrun xcodebuild -project Name.xcodeproj \ -scheme Name \ -sdk iphoneos \ -configuration Release \ -destination 'generic/platform=iOS' \ CODE_SIGN_IDENTITY="你导入的证书名称" \ PROVISIONING_PROFILE_SPECIFIER="你导入的描述文件名称" \ clean build - 后续可选操作:如果需要导出可安装的ipa包,可以在build步骤后追加archive、exportArchive流程;如果要直接安装到连接在Mac节点上的真机设备,可以安装
ios-deploy工具,构建完成后执行命令把ipa直接推送到真机安装。真机首次连接需要在设备上点击「信任」,并开启iOS系统的开发者模式。
内容的提问来源于stack exchange,提问作者shweta
相关产品推荐
相关产品推荐

