看官,请先解压你的原始APK,查看META-INF下是否有services文件夹,如果没有,那么咱两不是同一个问题,本文帮不到你,请移步!若有,请往下看!
先说明两个概念:
1)、原始包(已签名,未加固的APK)
2)、加固包(已加固,已签名的APK)
现象:加固包,在某个界面崩溃。而,原始包,运行正常。
原因:我的APP中第三方jar包用到java的SPI机制,正常签名时,会在META-INF文件夹下增加services文件夹及其内容(这些都是APP运行时要用到的)。而,加固过程(比如360加固),会删除META-INF整个文件夹。开发者对加固后的APK再次签名时,只重新新建了META-INF文件夹和其下的.RSA、.SF、.MF文件。因此,services文件夹就丢了。因此,APP功能就异常了。
来张图可能更容易理解:
解决办法:我和360沟通,得到的解决办法是,将原始包里META-INF的services拷贝到加固包(已签名)。这样,APP就可正常运行了。
我后来验证了,这个问题除了360,其他加固(如爱加密、梆梆)也会有这个问题。解决办法都是一样的。
希望这篇文章有帮到你!
网友评论