使用Nuwa实现安卓代码热修复及那些坑

项目地址在此

原理就不再叙述了,请参考项目内部说明。

使用

1、在application 类下添加如下代码进行初始化操作

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    Nuwa.init(this);
}

2、在合适的时候对代码片段进行修复

//参数为context上下文以及差分文件的路径
Nuwa.loadPatch(context,patchFile);

配置

1、 在项目的 build.gradle 中添加引用

classpath 'cn.jiajixin.nuwa:gradle:1.2.2'

最后的完成版本应该和下面的代码类似

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
        classpath 'cn.jiajixin.nuwa:gradle:1.2.2'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

  • 由于gradle的版本问题,为了防止编译时出现各类奇怪的错误,请使用1.2.3版本

2.、在主module的build.gradle中添加如下依赖和引用

dependencies {
    compile 'cn.jiajixin.nuwa:nuwa:1.0.0'
}
apply plugin: "cn.jiajixin.nuwa"
  • 确保删除或修改了1.2.3版本gradle文件下所不支持的命令,比如:

  • 确定打开了代码混淆的开关,并有进行代码混淆配置文件的编写

  buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
  • 对于你的application 类进行配置

    nuwa {
        //括号里是Application类以及要排除Application父类
        excludeClass = ['com/gongsibao/GSBApplication.class', 'com/BaseApplication.class']
    }

3、对项目进行一次编译,打开项目文件夹,把/build/outputs/nuwa文件夹拷贝出来,配置ANDROID_HOME环境变量,指向安卓SDK的目录下

4、对项目的代码进行修改后,进入项目对应目录下,执行如下命令:./gradlew clean nuwa{1}DebugPatch -P NuwaDir={2}

  • {1}表示打包之后的程序名称,通常在渠道包的时候用得较多,比如
    productFlavors {
        qihoo {
        }
        xiaomi {
        }
    }
  • {2}表示上一步中拷贝出来的nuwa文件夹的路径

  • 执行上面的命令后,会有一个较长时间的下载过程,请耐心等待,如果进度不动了(取消重下),下载完成后进入下一步

5、找到/build/outputs/nuwa目录下的差分包patch.jar,把它交给你的服务端同事,搞个合适的接口协议。在合适的时候调用接口协议下载该差分包,随后对代码进行在线修复。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值