irpas技术客

iOS自动化之打包-xcodebuild命令行打包.app并安装到ios模拟器_ios 自动化打包_踩坑记

未知 1865

1.目的 做ios ui自动化测试过程中,想通过试验命令行自动打包到特定的ios模拟器,以便后期集成到shell脚本 2.思路 先了解下整个手动安装包的流程,开发用xcode写完代码,并编译就可以打出安装包,测试把包安装到手机上测试 自动化就是想办法可以让他自动完成xcode的一些操作,自动安装到手机,但跑自动化测试的话一般会放到模拟器上 这个时候自动化就分为了两步,一自动打包,二自动安装 3.涉及到的知识 自动打包的命令涉及到xcodebuild 自动安装的命令涉及到xcrun iOS安装包的类型有两种,一种是.ipa安装到真机上的,一种是.app安装到ios模拟器上的,之所以不同是因为ios真机(i386/x64)和模拟器(armv7/arm64…)的架构不一样,这些设置可以在xcdoe build setting里的Excluded Architectures进行修改,但用命令行打包可以不用管这里

4.实践 1.有一个可以打包的xcode账号,一般问开发要就可以 2.git clone对应项目到本地 3.进到项目文件夹下 4.打开模拟器 open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

5.打包 -scheme 一般是你们在xcode里运行项目时product-scheme里选中的那个选项,我这个直接是app的名称 -workspace 这个看你们项目一般用.workspace还是.proj运行,如果有.workspace的话就用👇的,如果是.proj就把-workspace xxx.xcworkspace换成-project xxx.proj -destination后面加打包到的机型,如果不填,默认是打iphone的包而不是iphonesimulator xcodebuild -scheme xxx -workspace xxx.xcworkspace -destination 'platform=iOS Simulator,name=iPhone 13,OS=15.0' -derivedDataPath build 6.运行完后,会在项目文件夹的build里生成.app包,进行安装 xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/xxx.app 就大功告成啦 5.踩的坑 1.最开始的想法是先打开模拟器,再进行打包,,只不过打包的命令里没有标明-destination,觉得他一定会把包安装到那个打开的模拟器上,但是打出来的包安装到模拟器上会报: This app needs to be updated by the developer to work on this version of iOS. Failed to find matching arch for input file: /Users/user/Library/Developer/CoreSimulator/Devices/CCE1509C-91B3-47A9-A61E-E8B02627B454/data/Library/Caches/com.apple.mobile.installd.staging/temp.aOBiJl/extracted/xxx.app/App 2.看到This app needs to be updated by the developer to work on this version of iOS.,我以为是因为iOS15的系统有签名的问题,网上查了我的签名是好的 3.看到Failed to find matching arch搜了下,可能和架构有关,那就可能和打的包有关,再看下打包命令没有带-destination, Products下打出的包默认是其实是iphone真机包,所以没有办法安装到ios模拟器上的,加了destination后就可以正常打成模拟器包啦,所以要安装到模拟器的包,xcodebuild打包命令里一定要带-destination这个参数!!!!!!!!!!!!!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #iOS #自动化打包 #xcode #xcodebuild #xcrun #ios模拟器 #ui自动化测试