Nuwa热修复在项目中应用
来源:互联网 发布:excel数据等距分组 编辑:程序博客网 时间:2024/04/30 19:13
1.热修复 Nuwa的引入过程。
a. add following to the build.gradle of your root project.
classpath 'cn.jiajixin.nuwa:gradle:1.2.2'
b. add following to your build.gradle:
apply plugin: "cn.jiajixin.nuwa"
nuwa{
//baseApplication类
excludeClass = ['BaseApplication.class','AppContext.class','StringUtils.class’]
//nuwa dex打包的文件夹
includePackage = ['com/sdtv/qingkcloud/mvc']
}
c. 依赖包
dependencies {
compile 'cn.jiajixin.nuwa:nuwa:1.0.0'
}
2.应用nuwa
a. add following to your application class:
/**
* 分包处理
*/
@Override
protected void attachBaseContext(Context base) {
super .attachBaseContext(base);
Nuwa.init(this);
Nuwa.loadPatch(this, Environment.getExternalStorageDirectory().getAbsolutePath().concat("/patch.jar"));
if (!quickStart() && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {//>=5.0的系统默认对dex进行oat优化
if (needWait(base)){
waitForDexopt(base);
}
MultiDex.install(this);
}
}
注意: 我工程当中针对5.0以下 解决65535的限制 使用android-support-multidex解决Dex超出方法数的限制问题. Nuwa写在 MultiDex之前。 patch.jar加载完一次退出应用不会再次加载 清除应用数据会再次加载。 5.0以下加载时会碰到加载dex比较长时间(该问题继续跟踪)。所以针对热修复包管理 patch包名字要进行处理最好不要用同一个名字。
b. 打包时使用的混淆包
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
-keep class cn.jiajixin.nuwa.** { *; }
3.打包过程。
a.正常打包
b.copy build/outputs/nuwa 到备份文件夹
c.修改代码 修复bug.
d.执行./gradlew clean nuwaQihooDebugPatch -P NuwaDir=/Users/jason/Documents/nuwa
其实Qihoo为打包渠道 后面文件夹为备份的文件夹路径
e.把patch文件拷贝到sd卡中
f.重启客户端 注意杀死进程 然后重启。
4.热修复过程中遇到的问题:
a.
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
原因: third party library reference added two times.
我的解决方案: 指定includePackage包
nuwa{
//baseApplication类
excludeClass = ['BaseApplication.class','AppContext.class','StringUtils.class’]
//nuwa dex打包的文件夹
includePackage = ['com/sdtv/qingkcloud/mvc']
}
b. java.lang.NoClassDefFoundError: cn.jiajixin.nuwa.Hack
解决方案: 指定excludeClass 注意是全路径
nuwa{
excludeClass = ['com/sdtv/qingkcloud/general/baseactivity/BaseApplication.class','com/sdtv/qingkcloud/general/appmanage/AppContext.class']
}
c. 5.0以下 第一次打开解析比较慢 会有一个(3-4s)的黑屏 正在跟踪此问题 可能和我分包MultiDex 有关系。
在4.2 4.4 5.0 6.0手机上都测试通过。测试修改了一个空指针和修改toolbar名称。
0 0
- Nuwa热修复在项目中应用
- Nuwa热修复实现
- Nuwa热修复实现
- Nuwa(女娲)-热修复
- 热修复框架Nuwa
- Android热修复-Nuwa使用
- Android开发之nuwa热修复
- 热修复框架nuwa的使用
- 关于热修复框架nuwa的使用
- 关于热修复框架nuwa的使用
- 热修复框架nuwa的使用
- 使用Nuwa实现Android热修复
- Android 热修复之nuwa使用简略
- Android 在项目中添加Hotfix热修复
- Android 热修复使用Gradle Plugin1.5改造Nuwa插件
- Android 热修复使用Gradle Plugin1.5改造Nuwa插件
- 聊聊Android 热修复Nuwa有哪些坑
- 热修复 nuwa android studio cmd $ANDROID_HOME is not defined
- android开发中如何结束所有的activity
- 【BLE4.0】Packet sniffer 过滤广播MAC地址
- Unity 控制摄像机跟随运动物体
- 数据结构中的栈和堆,计算机系统内存中的栈和堆的理解
- Spring+Struts+Hibernate框架详解
- Nuwa热修复在项目中应用
- CentOS 6.5 e1000e Timesync Tx Control register not set as expected
- IOS开发多线程篇—GCD介绍
- 格雷码的几种实现方式 递归 迭代 递推
- ionic cordova 控制iOS状态栏的显示,隐藏,颜色
- 产品设计:58同城与赶集网APP改版建议
- xgboost note
- 我的List坑
- 进程的三态模型