一、场景
如果公司只有一台MAC电脑,但是有多个人需要进行IOS应用定制化修改操作,或者想要实现持续集成自动分发操作,此时就需要进行命令行打包操作了。
二、操作过程
在Mac配置中将登录中的远程登录打开即可:
开启后在windows电脑端安装Putty 等终端工具,通过ssh协议可以登录到Mac电脑,实现命令行操作。
2、命令行打包
在界面开发IOS需要依赖xcode工具来调试打包,此工具也提供了命令行操作xcodebuild命令,具体使用方法可参考:
https://www.jianshu.com/p/770d5df137bf
也可以直接在终端使用xcodebuild –help 或者 –usage命令来查看使用方法:
在ssh终端上使用xcodebuild命令编译时会出现签名失败的问题,原因是因为MAC上的key被锁定了,需要使用命令$security unlock-keychain 进行解锁后才能正常编译。
在使用过程中一定要注意指定project 或者 workspace 以及schema, 不能直接使用xcodebuild 编译出来的文件,这种方式生成的.app文件是安装在模拟器上会直接闪退,无法正常运行。例如正确地操作编译出模拟器能使用的.app文件操作命令为:
xcodebuild -project 02_UIViewTest.xcodeproj/
-sdk iphonesimulator
-scheme 02_UIViewTest
注意指定sdk,因为默认是编译出真机的版本的,最终生成的文件是在Deriveddata目录下:/Users/hongboni/Library/Developer/Xcode/DerivedData/02_UIViewTest-busthufdygdmfvfjxuarqtsflyof/Build/Products/Debug-iphoneos/02_UIViewTest.app
当然xcode还提供了安装应用的命令xcrun,可以通过运行此命令将指定目录下的生成文件安装到指定模拟器中。当需要查看Mac中的模拟器时可以使用instruments 命令。例如 instruments -s devices
然后使用 xcrun instruments -w "模拟器名" 来启动模拟器, 例如xcrun instruments -w "iPhone 6 Plus (12.2)", 在使用xcrun simctl install booted
以上用xcodebuild生成的.app文件适用于给模拟器安装,而对于真机需要生产ipa文件,需要用到的命令参数archive 和 exportArchive,在运行前最好先clean一下,于是操作流程可以总结为如下:
清理
xcodebuild -project BaseWebviewApp.xcodeproj/ clean
打包
xcodebuild -scheme BaseWebviewApp -archivePath build/BaseWebviewApp.xcarchive archive
导出
xcodebuild -exportArchive -archivePath build/BaseWebviewApp.xcarchive -exportPath build/BaseWebviewApp.ipa -exportOptionsPlist ExportOptions.plist
最后会在工程的同一级目录下生产build目录,以及带有打包和导出文件:
关于里面的文件结构在下一节分发里面讲述。
3、ipa文件发布
前面讲到了文件可以用命令行打包出来,但是在xcode界面工具开发时,需要将手机连接到MAC电脑使用工具才能将测试ipa安装到iphone, xcrun命令可以用来将.app文件安装到模拟器,三方工具命令ios-deploy也可以通过命令行来安装ipa到真机(网上资料,没有实际测试,因为暂时无真机),但是这些最终还是要将测试机器连接到MAC电脑才能进行,对于各个项目以后内测时进行版本安装测试时操作不方便。有没有一种像AppStore一样的方式可以直接让手机安装但是又还没有上架的应用呢?
在网上查找了一下,这时就会出现蒲公英或者飞机移动应用分发托管平台,但是进入其官网查看,都是要收费的,所以放弃此方案。之后又发现了可以使用苹果提供的ad-hoc方式打包,然后通过苹果Safari浏览器支持的itms-service协议来进行下载安装ipa的方式。
https://blog.csdn.net/xiaowenwen1010/article/details/52970736
根据此说明进行的操作需要注意几点:
3.1 证书创建方面
ad-hoc签名证书创建可参考:
https://blog.csdn.net/u013085795/article/details/51490884
证书certificate类型要选对ad-hoc, identifier中的bundleId以及具有的能力,比如push之类的要设置正确,最后生成的描述文件中要包含certificate identifier device 信息。
3.2 签名手动配置
在xcode中配置签名改为手动签名时,需要选择对应的profile文件
3.3 导出配置
在export中需要继续选择ad-hoc方式,并且在填写如下url路径时需要填入https方式访问的放置ipa和应用图标的地址:
最终打包出来会有一个ExportOptions.plist 文件,即上一节里面的截图所示,我们可以将这个xcode界面操作配置好的生成的这个文件用来做命令行打包时使用。
3.4 上传ipa文件部署
根据itms-service协议,最终需要部署的文件有三个,ipa安装包,说明文件manifest.plist,用户通过Safari浏览器直接访问的文件,并且要使用https访问的服务器,由于目前公司没有https的域名,因此先在github上搭建测试:
其中manifest.plist文件就是打包之前填写的各个文件路径地址集合信息以及应用包名等基本信息。
用户直接用Safari浏览器访问的文件: https://XXX你的服务器地址XXX/ipa_distribution.html, 即可以进行安装了。