首页 > 移动平台 > 详细

Android加壳

时间:2015-12-16 19:29:30      阅读:647      评论:0      收藏:0      [点我收藏+]

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

网上那个的加壳方案, 

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加壳

原文:http://www.cnblogs.com/awebing/p/5051914.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!