Android加壳

话说解决问题和研究问题是两码事

网上那个的加壳方案, 

mProviderMap   在

 

235行  http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/app/ActivityThread.java?av=f

 

在2.3  -4-4.2的手机上,获取到的这个map是空的 所以不会走到下面的循环里面去 

但是4.4.4的上面他能获取到这个map里面有值的

而且他是这样是内容

android.app.ActivityThread$ProviderKey@5582bc23(5355): =====android.app.ActivityThread$ProviderClientRecord@41a77e88

但是在2.3-4.4.2的手机上  这个map是空的  

这个map在前面的版本里是 HashMap  后面的是ArrayMap

要注意 

所以在2.3-4.4.2的手机上不会进入map就没有那个   expected receiver of type android.content.ContentProvider, but got null  异常了

然而在4.4.4的手机上Map不为空,进入之后

有一个获取android.app.ActivityThread$ProviderClientRecord 的mLocalProvider 属性值  ,这个不知道为什么  在4.4.4的手机上就是空的   

321行代码http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/app/ActivityThread.java#ActivityThread.ProviderClientRecord

需要处理一下

 然后在源码里找了好久  因为4.4.4的上map里有1个值,第二个map循环出来取这个值的时候 mLocalProvider空了,我就去源码找了半天,结果未果

后来发现  那个mLoacalProvider可以为空的,但是这个map还是要循环完的,

最终我只是想  应该  android.app.ActivityThread$ProviderClientRecord  到这里获取的时候可能  应该里面还有一系列的操作   保证程序能运行起来

这个问题   一开始以为是buildtools的问题,从 19.0.0  一直试到23.0.2  但是发现不行,在公司的是4.4.2  家里的是4.4.4的手机上    纠结了好几天  

后来发现偏偏我的手机和公司的测试机都是4.4  但是一个是4.4.4  一个是4.4.2  恰好我在公司试的好好的以为4.4的没问题, 在家里就不行了

你可能感兴趣的:(Android加壳)