Ipa打包、重签名及资源文件修改研究

一.ipa打包

随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱,越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,这里提供一种比较智能的打包方式来减少其带来的各种不便。

通常打包采用xcodebuild和xcrun两个命令,xcodebuild负责编译,xcrun负责将app打成ipa。

xcodebuild:通过工程文件,生成app文件。

xcrun:通过app文件,来生成ipa文件(包含了签名的过程)。

打包步骤:

1.使用xcodebuild命令打包成.app文件

这里以Demo--CustomAuthView为例

  • cd 拖拽工程文件夹到终端中生成一个路径,然后回车,进去到相应的工程目录,效果如下:

Ipa打包、重签名及资源文件修改研究

  • 输入 xcodebuild 命令并执行

编译成功会得到的显示信息!

Ipa打包、重签名及资源文件修改研究

打开目录

Ipa打包、重签名及资源文件修改研究

可以看到在根目录中生成了一个build文件夹,我们进入之后可以找到扩展名为.app的文件:

实际上我们直接使用Xcode编译app之后也会在 模拟器对应的沙盒路径下生成.app文件.

Ipa打包、重签名及资源文件修改研究

2.手机安装.app文件应用(.app实际上就是我们的应用包,可以通过工具直接安装)

如图使用xcode ,菜单 window/Device即可管理手机上的应用,如下图:

Ipa打包、重签名及资源文件修改研究

点击图中的加号,即可添加我们打包成的.app文件!

这样就完成了,最简单的应用安装的过程!

3.把 app文件打包为ipa文件

使用shell脚本,添加到 xcode build phases中去

添加如下的命令:

xcrun -sdk iphoneos PackageApplication -v 源app路径 -o 输出的ipa路径 --sign "iPhone Distribution:XXXXXX" --embed “embed.mobileprovision”

参数解释:

打包:

/usr/bin/xcrun -sdk iphoneos PackageApplication -v path/To/xxx.app -o xxx.ipa

其中:-v 对应的是app文件的绝对相对路径 –o 对应ipa文件的路径跟文件名 –sign 对应的是 发布证书中对应的公司名或是个人名 embed是配置文件

注意如果对应的Distribution 配置中已经配置好了相关证书信息的话 –sign 和 –embed可以忽略

这里直接使用你的.app文件的绝对路径, 生成.ipa的绝对路径(配置好了签名和证书,可以去掉 --sign 和 --embed):

/usr/bin/xcrun -sdk iphoneos PackageApplication -v

/Users/lisa/Downloads/v3.3.0/Demo/CustomAuthView/build/Release-iphoneos/CustomAuthView.app -o

/Users/lisa/Downloads/v3.3.0/Demo/CustomAuthView/build/Release-iphoneos/CustomAuthView.ipa

添加方法如下:

Ipa打包、重签名及资源文件修改研究

添加到此处:

Ipa打包、重签名及资源文件修改研究

运行结果:

Ipa打包、重签名及资源文件修改研究

可以看到成功生成了.ipa文件,我们可以把此ipa文件上传到其它应用发布平台上,就可以手机扫描下载安装!

当然最简单的方法还是配置好发布证书直接使用Xcode帮我们打包上传,不过这样做的效率不太高!

二.ipa重签名

将程序打包成ipa包后,ipa包中会包含Provisioning Profile和_CodeSignature等文件,里面包括了对整个ipa的签名信息。一旦改动ipa中的任何内容,签名就会失败,导致ipa无法安装,所以要修改ipa包中的内容,就需要解决ipa包的重签名问题,也可将一个ipa包重签名以便安装在一个非越狱的设备。

1.准备工作:

  • 首先要下载并安装Xcode,里面有个codesign_allocate程序,在安装时/usr/bin中会多一个codesign的程序,该程序用于ipa包的签名。

  • 目前,重签名主要用于企业证书重签名个人证书发布的ipa包,包括各种助手及企业内测包的发布等。需要企业证书的Certificate文件,私钥文件,Provisioning Profile文件等。(http://blog.csdn.net/phunxm/article/details/42685597/)注意企业证书一定要是iOS Distribution的类型,不能是iOS Development。

在重签名前,让我们先看看一个完整的ipa包有哪些与证书相关的东西!打开ipa包,会发现_CodeSignature和embedded.mobileprovision两个文件

Ipa打包、重签名及资源文件修改研究

_CodeSignature,ipa包签名文件

embedded.mobileprovision,证书配置文件

因此,替换上面两个文件就解决了ipa重签名的主要问题。

2.企业证书重签名以及修改资源文件:

这边以Demo--CustomAPICall为例,先使用这个demo,打包成app,然后生成ipa,然后在这个ipa基础上重签名生成新的ipa,最后在修改包里的启动图片,在打包看是否正常:

(1) 生成.app

使用xcodebuild命令生成app包:

Ipa打包、重签名及资源文件修改研究

(2)将app打包成ipa

使用

/usr/bin/xcrun -sdk iphoneos PackageApplication -v

/Users/lisa/Downloads/v3.3.1/Demo/CustomAPICall/Build/Release-iphoneos/CustomAPICall.app -o

/Users/lisa/Downloads/v3.3.1/Demo/CustomAPICall/Build/Release-iphoneos/CustomAPICall.ipa

Ipa打包、重签名及资源文件修改研究

结果如下图:

Ipa打包、重签名及资源文件修改研究

Ipa打包、重签名及资源文件修改研究

(3) 使用企业证书重签名ipa:

准备工作:需要将描述文件放在app同一个目录下以及重签名写的脚本文件。

Ipa打包、重签名及资源文件修改研究

重签名脚本实现:

Ipa打包、重签名及资源文件修改研究

附加脚本代码:

Ipa打包、重签名及资源文件修改研究

Ipa打包、重签名及资源文件修改研究

Ipa打包、重签名及资源文件修改研究

rezip_IPA

实现脚本:

这里需要自己输入的东西:

  • 之前生成的ipa文件;

  • 对应的描述文件

  • 证书名称

  • 开发者有可能需要修改Bundle id

另外配置文件必须要放在当前的目录里

Ipa打包、重签名及资源文件修改研究

可以看到生成效果:

Ipa打包、重签名及资源文件修改研究

最后安装:

Ipa打包、重签名及资源文件修改研究

(4)修改app包里面的启动图:

准备工作:将需要修改的图片放在app同个目录

Ipa打包、重签名及资源文件修改研究

可以打开看包里的内容,可以看到相应的启动图:

Ipa打包、重签名及资源文件修改研究

使用脚本修改

Ipa打包、重签名及资源文件修改研究

Ipa打包、重签名及资源文件修改研究

可以看到包里的启动图改变:

Ipa打包、重签名及资源文件修改研究

最后安装即可!

文/Mob开发者平台 资深技术支持工程师 刘芳丽

相关推荐