本文目录:
- 1、iOS打包的两种方式
- 2、iOS远程自动打包问题
- 3、能教一下怎么做 IOS app的 云服务器么
- 4、iOS 打包自动配置环境的简易方法
- 5、iOS一键自动编译打包提交
iOS打包的两种方式
我们在做项目的过程中很多时候都是会遇到打包的需求,打包就是将我们的工程打成ipa包,然后交给运营或者测试部门去测试。那么这么打包怎么打呢?以下我就会为大家介绍以下打包的最普遍多用的两种方式。
PS: 当然还有很多种打包方式,比如说用Fastlane自动打包,还有自己写自动化打包脚本都可以实现打包的需求。
PS: 如果大家对证书和描述文件的创建有问题的话,请参考以下传送门:
PS: 选择模拟器是Archive不了的:
PS: 如果此处用模拟器去command+B之后生成的.app文件经过后面的步骤生成的.ipa包是没有.mobileprovision这个文件的。所以千万不可以用模拟器打包,建议用Generic iOS Device方式。
以上就是两种最常见的打包方式!!!
大家感兴趣可以去看看 iOS-打包成ipa的4种方法
以上!!!
iOS远程自动打包问题
遇到的问题是这样:有一台通用的构建服务器,自动打包脚本已经写好,本地测试通过,需要在这台构建服务器上通过Jenkins调用这个自动打包脚本,完成持续化集成的工作。但是在构建过程中报了如下错误:
/usr/bin/codesign --force --sign 5F99020C8E18342FDC41502FACD430C23B975430 --entitlements /Users/wsbg/Library/Developer/Xcode/DerivedData/WesaiPoker-doyqrrerzicjnzekyyrdbzcmjhju/Build/Intermediates/ArchiveIntermediates/WesaiPoker/IntermediateBuildFilesPath/WesaiPoker.build/Release-iphoneos/WesaiPoker.build/WesaiPoker.app.xcent --timestamp=none /Users/wsbg/Library/Developer/Xcode/DerivedData/WesaiPoker-doyqrrerzicjnzekyyrdbzcmjhju/Build/Intermediates/ArchiveIntermediates/WesaiPoker/InstallationBuildProductsLocation/Applications/WesaiPoker.app/Users/wsbg/Library/Developer/Xcode/DerivedData/WesaiPoker-doyqrrerzicjnzekyyrdbzcmjhju/Build/Intermediates/ArchiveIntermediates/WesaiPoker/InstallationBuildProductsLocation/Applications/WesaiPoker.app: unknown error -1=ffffffffffffffffCommand /usr/bin/codesign failed with exit code 1 ** ARCHIVE FAILED **
问题排查
排查1:直接登录进入远程的构建机,手动运行打包脚本是没有问题的,这说明脚本本身是没有问题的。看了上面的输出错误日志,应该是签名问题
排查2:通过ssh的方式登录远程的构建机,运行打包脚本报同样的错误,说明如果通过ssh方式解决了,那Jenkins应该也可以
排查3:在Google上搜索了Command /usr/bin/codesign failed with exit code 1 附带ssh 关键词,发现很多人也遇到了这个问题。同样的持续集成工具fastlane有很多相似的[ Issue ]。大致的原理是因为codesign命令需要进行签名的时候,会访问keychain来获取打包脚本中对应的证书。通过ssh这种方式访问的时候,是没有访问权限的。
排查4:按照网友们的做法,添加命令 security unlock-keychain -p password /Users/username/Library/Keychains/Login.keychain
. 其中password是你登录当前机器账户的密码,username是当前账户的名称。在最新的Mac Sierra中在Keychains下面是没有Login.keychain的,新的名字被改成了Login.keychain-db.所以需要做一个软连接 ln -s ~/Library/Keychains/login.keychain-db ~/Library/Keychains/login.keychain
然后先执行上面的命令,然后执行打包脚本,就可以远程打包了
补充: 由于这个解锁并不是永久的,所以每次在执行打包脚本时,必须先执行解锁命令后执行打包脚本。
能教一下怎么做 IOS app的 云服务器么
具体部署
1)远程登录:
第一次购买小鸟云后,会把该小鸟云服务器的root账号、密码发送购买者的邮箱,然后购买者可以通过远程登录到小鸟云服务器
2)安装web环境
根据自己应用特点选择安装相关web服务器tomcat或者jetty,小鸟云提供了一条龙安装部署脚本,为开发者提供了更多的方便
3)打包应用
将web源码下载到本地,使用命令mvnpackage打成war包。如果不是maven工程,可以用类似ant打成war包。
4)上传war包
Linux下面可以使用sftp上传war包,上传war包到指定目录后进行解压
5)启动web服务
将tomcat或jetty服务启动
6)配置反向代理、绑定域名
具体信息参考:
iOS 打包自动配置环境的简易方法
对于所有开发人员而言,开发环境都绝不会陌生,至少接触过 测试环境(debug) 和 生产环境(release) 。那么必然涉及到环境的切换。
一般我们打生产环境包的时候,是不是都通过宏来区分测试环境还是生产环境?是不是需要一遍遍确定当前环境是否是生产环境?万一选错了环境,提交了测试环境而不是生产环境,就浪费时间需要重新打包上传审核,甚至影响到产品的发布时机。而且,一旦没及时发现且通过了审核,就会造成很严重的后果,瞬间翻车。
所以针对这个问题,我们需要找到一个方法来避免风险,做到一键打包并且确保是生产环境,而不是通过选择是生产环境还是测试环境。
下面是一些通过网上找到的资料。有兴趣的可以自己去研究下 使用 Xcode 的 Target 区分开发和生产环境 , iOS 多环境下实现环境切换 ,以及 使用iOS APP的Build Configuration区分开发和生产环境 。
既然我们上传app store的包都是release包,而平时开发打的都是debug包,就可以从这点下手试试。
至此只需要简单的3个步骤,就将生产和测试环境区分开了,再也不需要频繁的设置宏来确保 Archive 的是不是正式环境了。测试的时候要打生产的包,也只需要修改 DEBUG 的部分就可以了。
iOS一键自动编译打包提交
在开始之前先唠叨两句自己对iOS自动化打包的接触,觉得没啥看头滴老铁可以略过直接从第二部分开始。项目自动打包提交的优势不用说了,很高效便捷的东西,很早就接触到了,但是一直没有用到项目中,分析一下主要有以下几个原因:
总结以上原因,一直没有用到自动打包技术。而现在的情况是,
基于以上的情况,所以想自己写一个自动打包的脚本,能够实现 只运行一句命令就自动编译打包发布 ,啥都不要做,挂着就行,打包完自动打开页面提醒。
打包所需要的文件已经挂在 Github 上了。只需要把 BuildTool 文件夹 复制 到 项目主目录 ,注意是复制!不是拖入项目主目录,因为苹果审核有屏蔽fir关键词。然后打开终端, cd 到 BuildTool 文件夹,输入 sh build.sh 命令,回车,开始执行此打包脚本。
具体的使用方法和参数配置 shell脚本 里面已经有非常详细的注释。
有 AppStoreExportOptions.plist 和 AdHocExportOptions.plist 两个plist文件,分别对应发布到AppStore和AdHoc(蒲公英、fir)。简单说一下里面的属性:
写完脚本后,发现已经有老铁对打包脚本做了很详细的分析了: 详解Shell脚本实现iOS自动化编译打包提交 。也有老铁早就写了iOS自动打包的脚本: xcode_shell 。
看了一下,功能也比较全,比如上传包到自己的服务器、上传完成发邮件测试人员。但是现在已经有第三方平台也做到了比这更多的功能,比如蒲公英,还可以手机短信通知测试人员,有专门的页面外链,支持持续集成等。
老铁们如果还有什么建议,欢迎在下面给我留言或私信。🤗 🤗 🤗
问题一(更新于2018年11月14日):
升级 Xcode 10 以上版本,苹果采用新的构建系统,之前的 xcodebuild clean 命令已经无法使用,如果用这个命令的话会报错,苹果给的建议是删除根目录下的 build 目录文件夹,删除就可以完整打包了。但是每次打包都需要再删除一遍,由于这个目录的主要作用就是存储 该项目的历史构建包(Archive归档文件和iPA包) ,所以解决办法是:
参考资料: build_system_release_notes_for_xcode_10
【ios云服务器打包】的内容来源于互联网,如引用不当,请联系我们修改。
网友留言: