在使用了rn之后,我们很少会修改原生代码,但是如果想要打包,还是重新打包原生代码,挺花时间的,那么,只修改rn的代码情况下,有没有快速出包的方法? 答案就是今天这篇文章的主题,ipa逆向,然后替换资源,重新打包,这样只需要替换掉js的bundle包,省去了重新archive的时间了。
过程如下:
- test.ipa 改名为 test.zip
- 解开zip,打开Payload,显示test资源包,右键显示报内容,就会看到ipa中所有的资源等内容
- 找到并复制entitlements.plist文件,这个文件是重新签名的时候要使用的,其中记录的是app需要申请的权限
- 替换你想替换的资源,这里就是rn的bundle.js
- 确定你想使用的签名证书的名称,通常是:‘iPhone Distribution: Test Company’
- 重签名
codesign -f -s "iPhone Distribution: Test Company" --entitlements entitlements.plist Payload/Test.app
- 将签名之后的文件夹压缩
zip -r Test.ipa Payload
其他用法:
这里讲的替换资源是重签名打包的一种用法,我在网上搜索的时候,发现其他人也生出了很多好的思路,比如: 为了防止提供AppStore的包出问题,直接使用最后的测试包,重新签名,然后上传,这里用到的就是重签名替换证书的功能。
综上,重签名打包,可以替换资源和证书,从而达到在不需要重新编译的情况下,替换资源的功能。