iOS集成构建
2016-04-15 12:16
609 查看
一、编译打包
iOS的应用集成需要在mac环境上进行,因为需要用到xcode的编译环境。编译打包过程主要用到xcodebuild和xcrun这两个命令,xcodebuild是编译代码,xcrun是将app打成最终的ipa包。
通常步骤如下:
1.clean工程
2.编译工程
build_config一般是Release
3.打包生成ipa
--embed
其中appPath是编译生成的源app路径,ipaOutPath是生成的ipa包的输出路径。${CODE_SIGN_IDENTITY}和mobileprovision分别对应证书和mobileprovision文件的路径,这两个参数不加则用默认工程配置文件中的证书
需要注意的是,在执行xcrun的时候,需要进入到项目工程的build的目录下才行。
二、直接安装集成到设备
在 编译打包完成之后,有可能会因为打包过程中如证书签名等的一些问题,导致无法安装在设备上。因此,为了进行编译集成的自动化执行和验证,需要能够可以将安 装包安装进设备的工具。在这里我使用的是libimobiledevice,这是一个开源包,可以让Linux支持连接iPhone/iPodTouch
等iOS设备,可以替代iTunes,进行iOS设备管理的工具。另外libimobiledevice是开源工具,项目地址在 https://github.com/libimobiledevice/libimobiledevice(官网:http: //www.libimobiledevice.org/)
1.首先是安装工具和相关环境,可以通过mac上的homebrew工具进行相关插件的安装。
需 要安装的插件有:libgnutls(或openssl),libplist,libusbmuxd(或usbmuxd)。另外在编译时可能需要用到 的:make,autoheader,automake,autoconf,libtool,pkg-config,gcc。
2.将libimobiledevice工程下载下来,执行autogen.sh脚本,执行完毕后进行make和sudo make install编译。
3. 安装ideviceinstaller工具,用于给iOS设备安装卸载应用或者备份应用。该工具是基于libmobiledevice的,因此首先要完成
libmobiledevice的编译安装。另外需要用到libzip,也可以通过homebrew来下载安装。ideviceinstaller的工程 地址:
其中Automation.tracetemplate是UIAutomation的模板文件,一般在mac设备中固定路径。
<full_path_to_application> 应用的appId,需要加双引号
<path_to_script.js> 执行的测试js脚本路径,需要加双引号
<output_results_path> 测试的输出路径,需要加双引号,可不填
编写简单的测试脚本进行验证:
执行脚本的结果是打开应用15秒后关闭。
三、通过下载方式安装到设备
通过下载安装的方式集成app到移动设备,实际就是通过了itms-services协议来实现的,这种方式主要应用于iOS 企业应用的无线部署。
具体步骤如下:
1.配置plist文件
plist文件中包含了ipa包的下载安装路径和app的配置信息,基本的设置如下
其中需要注意的是,metadata里的bundle-identifier和bundle-version信息需要和所安装的ipa包的内容一致,不然可能导致无法安装成功。
2.配置下载链接
简单编写一个页面,可以通过这样的形式进行下载
把以上内容加到一个html页面的href中即可,当打开plist文件时,移动设备就会下载ipa包并进行安装。其中itms-services://?action=download-manifest&url=就是使用和在itunes里中安装一样的方式来进行的。
需要注意的是,在ios7.1以上的版本中,这个url必须是以https协议的形式进行访问,否则将会提示因证书无效无法安装应用程序。也就是说,我们需要将plist文件放置在一个https的服务上来进行访问。
iOS的应用集成需要在mac环境上进行,因为需要用到xcode的编译环境。编译打包过程主要用到xcodebuild和xcrun这两个命令,xcodebuild是编译代码,xcrun是将app打成最终的ipa包。
通常步骤如下:
1.clean工程
xcodebuild -target ${targetName} clean
2.编译工程
xcodebuild -target ${build_target} -configuration ${build_config}
build_config一般是Release
3.打包生成ipa
xcrun -sdk iphoneos PackageApplication -v ${appPath} -o ${ipaOutPath} --sign [code]"${CODE_SIGN_IDENTITY}"
--embed
"${PROVISIONING_PROFILE}.mobileprovision"
其中appPath是编译生成的源app路径,ipaOutPath是生成的ipa包的输出路径。${CODE_SIGN_IDENTITY}和mobileprovision分别对应证书和mobileprovision文件的路径,这两个参数不加则用默认工程配置文件中的证书
需要注意的是,在执行xcrun的时候,需要进入到项目工程的build的目录下才行。
二、直接安装集成到设备
在 编译打包完成之后,有可能会因为打包过程中如证书签名等的一些问题,导致无法安装在设备上。因此,为了进行编译集成的自动化执行和验证,需要能够可以将安 装包安装进设备的工具。在这里我使用的是libimobiledevice,这是一个开源包,可以让Linux支持连接iPhone/iPodTouch
等iOS设备,可以替代iTunes,进行iOS设备管理的工具。另外libimobiledevice是开源工具,项目地址在 https://github.com/libimobiledevice/libimobiledevice(官网:http: //www.libimobiledevice.org/)
1.首先是安装工具和相关环境,可以通过mac上的homebrew工具进行相关插件的安装。
需 要安装的插件有:libgnutls(或openssl),libplist,libusbmuxd(或usbmuxd)。另外在编译时可能需要用到 的:make,autoheader,automake,autoconf,libtool,pkg-config,gcc。
2.将libimobiledevice工程下载下来,执行autogen.sh脚本,执行完毕后进行make和sudo make install编译。
3. 安装ideviceinstaller工具,用于给iOS设备安装卸载应用或者备份应用。该工具是基于libmobiledevice的,因此首先要完成
libmobiledevice的编译安装。另外需要用到libzip,也可以通过homebrew来下载安装。ideviceinstaller的工程 地址:
https://github.com/libimobiledevice/ideviceinstaller.git
下载完工程后执行编译安装,步骤同libimobiledevice一致。 4.在真机上进行ipa包的集成安装 将真机连接在mac上,命令行输入idevice_id -l,如果出现该设备的udid,则说明配置成功能够正常识别了。 相关指令: ideviceinstaller -i [ipa文件] -o [设备udid] 安装ipa文件到设备 ideviceinstaller -l -o [设备udid] 显示当前设备中所有已安装的应用
ideviceinstaller -U [appId] -o [设备udid] 卸载应用 5.安装完应用自动打开 通过执行脚本自动打开应用,可以使用xcode工具中的instruments来实现。执行命令如下:
instruments -w <udid> -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate <full_path_to_application> -e UIASCRIPT <path_to_script.js> -e UIARESULTSPATH <output_results_path>
其中Automation.tracetemplate是UIAutomation的模板文件,一般在mac设备中固定路径。
<full_path_to_application> 应用的appId,需要加双引号
<path_to_script.js> 执行的测试js脚本路径,需要加双引号
<output_results_path> 测试的输出路径,需要加双引号,可不填
编写简单的测试脚本进行验证:
var target = UIATarget.localTarget();target.delay(15);
执行脚本的结果是打开应用15秒后关闭。
三、通过下载方式安装到设备
通过下载安装的方式集成app到移动设备,实际就是通过了itms-services协议来实现的,这种方式主要应用于iOS 企业应用的无线部署。
具体步骤如下:
1.配置plist文件
plist文件中包含了ipa包的下载安装路径和app的配置信息,基本的设置如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://xxx.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.xxx.xxx</string> <key>bundle-version</key> <string>1.0.0</string> <key>kind</key> <string>software</string> <key>title</key> <string>xxx</string> </dict> </dict> </array> </dict> </plist>
其中需要注意的是,metadata里的bundle-identifier和bundle-version信息需要和所安装的ipa包的内容一致,不然可能导致无法安装成功。
2.配置下载链接
简单编写一个页面,可以通过这样的形式进行下载
itms-services://?action=download-manifest&url=https://xxx/manifest.plist
把以上内容加到一个html页面的href中即可,当打开plist文件时,移动设备就会下载ipa包并进行安装。其中itms-services://?action=download-manifest&url=就是使用和在itunes里中安装一样的方式来进行的。
需要注意的是,在ios7.1以上的版本中,这个url必须是以https协议的形式进行访问,否则将会提示因证书无效无法安装应用程序。也就是说,我们需要将plist文件放置在一个https的服务上来进行访问。
相关文章推荐
- iOS小结
- iOS presentViewController 之后设置界面透明
- iOS中的动画
- ios CGRec用法
- IOS(CGGeometry)几何类方法总结
- iOS RunLoop处理逻辑(图解)
- IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解
- iOS 添加启动图片
- iOS错误集锦,到此网址下面
- iOS多线程编程之GCD的使用
- iOS 指纹锁Touch ID解锁
- 【IOS开发】 XMPP 简介和 XMPP 框架导入工程文件
- IOS 通用静态库、Makefile文件使用
- iOS 系统图片详解
- ios下 模态viewController
- iOS synchronized的作用
- iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)
- 详解iOS tableViewCell自适应高度 第三发类库
- iOS开发过程中专门在调试时运行代码的方法
- iOS - 手机摇一摇