Android开发中常见问题

1.CrashHandler

当crash发生的时候,系统会调用UncaughtExceptionHandler的uncaughtException方法,在其方法中就可以捕获异常,存储到SD卡或者上传至服务器中。也可以集成三方的例如:腾讯的bugly,具体工具类网上很多,不细说了。。。

2.Mutlidex方法数越界问题

Android中单个dex文件能包含的最大方法数为655536,它包含frameWork,依赖jar包及应用本身的代码中的方法数。当应用方法数达到65536后,编译器就无法完成编译工作并抛出异常:DexIndexOverflowException

解决办法:5.0需要自己导入android-support-multidex.jar这个jar包,5.0之后,android默认支持次jar包

具体步骤网上很多不说了,主要思想就是如果越界,gradle就会在apk中打2个或者多个dex文件

局限性:导致应用启动速度变慢,在一些机型上可能出现奔溃

3.Android动态加载技术(插件化)

插件化都必须解决三个基础问题:资源访问、Activity生命周期的管理、ClassLoader的管理

Android项目中,动态加载技术按照加载的可执行文件的不同大致可以分为两种:

①动态加载so库;
HotFix

②基于ClassLoader的动态加载dex/jar/apk文件(现在动态加载普遍说的是这种);tinker

基本流程:

①把可执行文件(.so/dex/jar/apk)拷贝到应用APP内部存储;

②加载可执行文件;

③调用具体的方法执行业务逻辑;

应用启动的时候,都会fork zygote进程,装载class和invoke各种初始化方法

你可能感兴趣的:(Android高级篇,Android,CrashHandler,插件化)