使用Jenkins+xcodebuild搭建iOS的持续集成系统
2016-05-16 11:23
585 查看
准备工作:
* 向keychain导入证书,向xcode导入provisioning profile. 都是双击即可导入
* 在xcode中设置bundle id, 这个bundleid需要为将要使用签名的证书允许的.
* signing identity, provision(provisioning profile最好是anySDK也选上,但不知道是不是必须) , 并在preferences中增加对应的开发者账号(增加账号这步不知道是不是必须)
然后通过以下命令行得到工程的配置信息
*首先到iOS的工程目录
*然后运行如下命令,将工程按照指定的scheme编译成xrchive文件. 我的scheme比较简单,是默认的Unity-iPhone. 所有的certificate, profile, 都是按照xcode中设置选择的
上面运行的命令行输出中会打印使用的是哪个签名.
如果需要覆盖设置,加入
CODE_SIGN_IDENTITY="iPhone Distribution: Name1 Name2"(这个没有验证过)
PROVISIONING_PROFILE="UDID_Of_Provisioning_Profile"
* 下面导出为ipa, 有两个办法
第一个办法是实用xcrun. 这个办法通过了测试, 并且可以安装.
如果希望替换企业签名,可以运行如下命令
第二个办法是实用xcodebuild
可能出现的问题:
如果导出过程中出现 CSSMERR_TP_NOT_TRUSTED, 可以尝试到苹果网站下载并安装Apple Woldwide Developer Relations Certification Authority证书
下载地址 http://www.apple.com/certificateauthority/, 然后选择Worldwide Developer Relations - G2 Certificate
如果导出ipa过程中出现resource envelope is obsolete, 那么需要修改一下程序运行参数,首先找到PackageApplication的位置
第一步: 不要使用任何和resource rules有关的东西, 做如下检查. 改为这个, codesign的时候就不报上面的错误了。
第二步:使用vim去修改里面的运行参数.
如果碰到 Program /usr/bin/zip returned 15 : [zip I/O error: No such file or directory的错误,那么应该是在导出的输出目录没有使用绝对路径, 这里不能使用相对路径.
记得在login item里面增加企业签名,不要在系统中(在login的tab, 点击+, 然后选择p12)
第一次签名,记得询问权限的时候点击一直允许,否则选择私钥然后get info, 然后trust里面选择允许任意.
* 向keychain导入证书,向xcode导入provisioning profile. 都是双击即可导入
* 在xcode中设置bundle id, 这个bundleid需要为将要使用签名的证书允许的.
* signing identity, provision(provisioning profile最好是anySDK也选上,但不知道是不是必须) , 并在preferences中增加对应的开发者账号(增加账号这步不知道是不是必须)
然后通过以下命令行得到工程的配置信息
xcodebuild -list Information about project "Unity-iPhone": Targets: Unity-iPhone Unity-iPhone Tests Build Configurations: Release Debug
*首先到iOS的工程目录
*然后运行如下命令,将工程按照指定的scheme编译成xrchive文件. 我的scheme比较简单,是默认的Unity-iPhone. 所有的certificate, profile, 都是按照xcode中设置选择的
xcodebuild -scheme Unity-iPhone -configuration Debug -archivePath build/.xcarchive archive
上面运行的命令行输出中会打印使用的是哪个签名.
如果需要覆盖设置,加入
CODE_SIGN_IDENTITY="iPhone Distribution: Name1 Name2"(这个没有验证过)
PROVISIONING_PROFILE="UDID_Of_Provisioning_Profile"
* 下面导出为ipa, 有两个办法
第一个办法是实用xcrun. 这个办法通过了测试, 并且可以安装.
xcrun -sdk iphoneos PackageApplication -v build/.xcarchive.xcarchive/Products/Applications/iblis.app -o /Users/xxx/work/LOG/build/ios_release.ipa
如果希望替换企业签名,可以运行如下命令
xcrun -sdk iphoneos PackageApplication -v build/.xcarchive.xcarchive/Products/Applications/some.app -o build/ios_release.ipa --sign "iPhone Distribution: Shanghai xxx Science and Technology Co., Ltd" --embed "/Users/cpeng/work/xxx.mobileprovision"
第二个办法是实用xcodebuild
xcodebuild -exportArchive -exportFormat IPA -archivePath build/.xcarchive.xcarchive -exportPath build/ios_release.ipa
可能出现的问题:
如果导出过程中出现 CSSMERR_TP_NOT_TRUSTED, 可以尝试到苹果网站下载并安装Apple Woldwide Developer Relations Certification Authority证书
下载地址 http://www.apple.com/certificateauthority/, 然后选择Worldwide Developer Relations - G2 Certificate
如果导出ipa过程中出现resource envelope is obsolete, 那么需要修改一下程序运行参数,首先找到PackageApplication的位置
xcrun -sdk iphoneos -f PackageApplication /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication
第一步: 不要使用任何和resource rules有关的东西, 做如下检查. 改为这个, codesign的时候就不报上面的错误了。
- 在buildSetting中去掉resource rules path - 在PackageApplication脚本中去掉 --resource-rules相关(codesign line and do the code signing) - Verify App: codesign --verify -vvvv Payload/*.app
第二步:使用vim去修改里面的运行参数.
my $result = runCmd("/usr/bin/codesign", "--verify", "-vvvv", , $plugin );
my $result = runCmd("/usr/bin/codesign", "--verify", "-vvvv", , $origApp ); 修改为 my $result = runCmd("/usr/bin/codesign", "--verify", "--no-strict", "-vvvv", , $plugin );
my $result = runCmd("/usr/bin/codesign", "--verify", "--no-strict","-vvvv", , $origApp );
如果碰到 Program /usr/bin/zip returned 15 : [zip I/O error: No such file or directory的错误,那么应该是在导出的输出目录没有使用绝对路径, 这里不能使用相对路径.
记得在login item里面增加企业签名,不要在系统中(在login的tab, 点击+, 然后选择p12)
第一次签名,记得询问权限的时候点击一直允许,否则选择私钥然后get info, 然后trust里面选择允许任意.
相关文章推荐
- UI基础_hitTest扩大响应范围
- 连接数据库超时设置autoReconnect=true
- SurfaceFlinger sequence diagram
- HZAU--21--Arithmetic Sequence(二维dp)
- iOSUIView是否包含,相交
- 浅谈getElementById / querySelector
- iOS UIView中坐标转换
- errors running builder "Integerate External Tool Builder "
- POJ 1904 King's Quest tarjan
- break与continue
- Creating a Quick Report with knitr, xtable, R Markdown, Pandoc (and some OpenBLAS Benchmark Results)
- 使用 RequireJS 优化 Web 应用前端
- android-UI(pulltorefresh)
- 生成UUID的一个工具类
- [HDOJ4027]Can you answer these queries?(线段树,特殊成段更新,成段查询)
- MySQL中因为unique key 非空唯一索引存在导致修改主键失败案例
- 347. Top K Frequent Elements
- 解决tableView separate 分割线不从最左边开始问题
- hibernate提供了强大的查询系统,query.setFirstResult,query.setMaxResults
- uva 11572 unique snowflakes——yhx