APP加固后运行崩溃 之 META-INF的坑(安卓)

看官,请先解压你的原始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功能就异常了。

来张图可能更容易理解:


APP加固后运行崩溃 之 META-INF的坑(安卓)_第1张图片

解决办法:我和360沟通,得到的解决办法是,将原始包里META-INF的services拷贝到加固包(已签名)。这样,APP就可正常运行了。

我后来验证了,这个问题除了360,其他加固(如爱加密、梆梆)也会有这个问题。解决办法都是一样的。


希望这篇文章有帮到你!

你可能感兴趣的:(APP加固后运行崩溃 之 META-INF的坑(安卓))