leakcanary 使用问题

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 21:48   2110   0

在高版本android 系统上发生空指针异常或者不能接收消息,改用leakcanary 1.5


在复杂应用上

当dex分包遇上NoClassDefFoundError&ClassNotFoundException

不同手机处理方式不同
参考文章 http://blog.csdn.net/daitu_liang/article/details/72987378

一. 如果你继承了MutiDexApplication或者覆写了Application中的attachBaseContext()方法.

Application类中逻辑的注意事项:

Application 中的静态全局变量会比MutiDex instal()方法优先加载,所以建议避免在Application类中使用静态变量引用main classes.dex文件以外dex文件中的类,可以根据如下所示的方式进行修改:

  1. @Override
  2. public void onCreate() {
  3. super.onCreate();
  4. final Context mContext = this;
  5. new Runnable() {
  6. @Override
  7. public void run() {
  8. // put your logic here!
  9. // use the mContext instead of this here
  10. }
  11. }.run();
  12. }

分包主要是因为包太大了,低端手机安装可能会失败,或者Dex加载的时候会崩溃,所以分成多个包,跟启动相关的放在主Dex,其余的不那么紧急的放在副Dex,然后启动的时候去动态加载。

首先来看看主Dex,所谓跟启动相关的主要就是四大组件,所以四大组件直接引用到的类都要放在主Dex中,否则启动时找不到类就悲剧了,毕竟动态加载副Dex可能会挺耗时的。Android Studio的build tool会自动帮你完成分包,将Android Manifest中定义的四大组件直接引用到的类都放在主Dex中,其余的丢到副Dex。不过也不保证百分百没问题,比如你用反射或者So引用副Dex中的类也许这个脚本就会瞎掉了。当然我们也可以自己写个脚本去分析APP启动需要引用到的类,方法是在APP启动完毕时打出ClassLoader中所有已加载过的类就行了。


都不是以上原因

当在

dependencies中配置aar 文件,运行时会出现classnotfound exception
但若是AS能联网配置,就不会出错
 
 
配置HTTP Proxy
Host name: mirrors.neusoft.edu.cn

Port number: 80

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP