熱修復

注1:本文實踐於 RocooFix熱修復框架方案java

注2:本文demo參考derocoodemo,裏面的key也借用了。android

注3:本文demo與以上參考demo大同小異,可對照食用。git

相關配置

1.項目的build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:2.1.2'
    classpath 'com.dodola:rocoofix:1.2.6'//添加
}

2.module的build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'com.dodola.rocoofix'//添加
repositories {
    flatDir {
        dirs 'libs'
    }
}

配置簽名,由於通常都是在發佈狀況下才須要熱修復嘛,因此如下操做全都是針對於release版本操做。另外,注意看下面的註釋部分github

signingConfigs {
    test {
        keyAlias 'shoyu'
        keyPassword 'admin22'
        storeFile file('doc/test.jks')
        storePassword 'admin22'
    }
}

defaultConfig {
        ...
    minSdkVersion 15 //這裏最低版本支持到API 15
        ...
    versionCode 1 //這個值涉及到補丁版本發佈
        ...
}

buildTypes {
    release {
        minifyEnabled true // 注意:必定要開啓混淆
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.test
    }
}

dependencies {
    ...
    compile 'com.dodola:rocoo:1.1'
    compile(name: 'AndroidQuery-release', ext: 'aar')
}

rocoo_fix {
    includePackage = ['cf/paradoxie/hotfixdemo']
    excludeClass = ['MyApplicaton.class', 'HotFixManger.class', 'BasePermissionActivity.class']
//    preVersionPath = '1'//製做補丁版本時開啓
//    scanref = true //製做補丁版本事開啓
       enable = true
}

文件配置app

1.libs文件夾下:AndroidQuery-release.aar、commons-codec-1.10.jar 兩個文件複製到本身的libs下,編譯。框架

2.doc文件夾下:jks簽名文件,這個本身配置都行,隨便放哪,上面storeFile路徑對就行。gradle

3.在main/assets文件夾下:patch.jar、rocoo.dex,示例。MyApplicaton中有註釋說明。ui

4.最後是java代碼:主要是hotfix和util兩個包下面的內容。注意導包。
5.MyApplicaton在manifest.xml中的spa

混淆配置code

注意看本身的包名

好像就差很少了吧。
最終的編譯效果會在app路徑下生成rocoofix文件夾,以下圖:

熱

使用

首先部署一個release版本到手機上

點擊右側gradle projects,選擇app/Tasks/install/installRelease,將會部署發佈版到設備上。如圖:

熱熱

而後去修復相關bug,此Demo裏就是HelloHack類下的showHello方法的修改,修改以後bug後,修改module的build.gradle相關配置,主要就三個地方



1.versionCode 2版本號修改 2.rocoo_fix中,preVersionPath = '1' 取消註釋,開啓補丁製做 3.取消scanref = true註釋

編譯後app路徑下生成rocoofix下,如圖:

 22

最後製做補丁包:點擊右側gradle projects,選擇app/Tasks/build/assembleRelease,如圖:

 

222

 

完過後會在rocoofix/version2/release/下生成patch.jar,如圖:

 232

 

最後將patch.jar放置到圖3所示的目錄下,固然這個目錄能夠本身指定,最後部署後的運行效果

注:須重啓應用才能完成修復。

 

 RocooFix框架解決了Nuwa由於Gradle1.40 裏Transform API沒法打包的狀況,如今兼容Gradle1.3-Gradle2.1.0版本,基於QQ空間終端開發團隊的技術文章實現,更多功能實現和侷限性參看RocooFix

相關文章
相關標籤/搜索