前言
部分ipa按照正常流程签名后一直闪退,找寻原因后,发现是由于这个包在开始给其他放签名后被对方注入了动态库,禁止再签名。开始直接删除dylib重签后仍然闪退。多方查询资料将三方的动态库剥离了出来。
1、利用otool 查看二进制包,otool本身Xcode自带不需要再额外安装,首先解压ipa包,利用otool 查看二进制。进入目录
otool -L "二进制名称"
2、optool安装
git clone https://github.com/alexzielenski/optool.git cd optool/ git submodule update --init --recursive
用xcode打开工程,编译完把生成的optool拷贝到/usr/local/bin/下
当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:
git submodule update --init --recursive
即可将子模块内容下载下来后工程才不会缺少相应的文件。
3、利用optool来剥离目标动态库
optool uninstall -p "要剥离的库" -t "二进制名称"
接下来我们再利用otool查看是否成功。
4、将ipa解压后的文件压缩成zip的压缩包,然后将.zip改成.ipa,就重新生成了一个新的ipa包了。
5、mac上还可以使用https://github.com/cocoamu/SResigner.git这个工具来快速移除动态库