1. 程式人生 > >接入熱修復bugly

接入熱修復bugly

1、專案build.gradle 引入:classpath "com.tencent.bugly:tinker-support:1.1.0"

2、app build.gradle引入依賴

implementation "com.android.support:multidex:1.0.1" // 多dex配置
//註釋掉原有bugly的倉庫
implementation 'com.tencent.bugly:crashreport_upgrade:1.3.3'

3、新建tinker-support.gradle,與app中的gradle並列,app中build.gradle引入tinker-support.gradle

4、通過gradle打基準包,可以通過基準包加固,或者打多渠道包

5、打補丁包

補丁包路徑

6、tinker-support.gradle檔案:

apply plugin: 'com.tencent.bugly.tinker-support'
def bakPath = file("${buildDir}/bakApk/")
/**
 * 此處填寫每次構建生成的基準包目錄
 */
def baseApkDir = "app-1026-09-18-57"
/**
 * 對於外掛各引數的詳細解析請參考
 */
tinkerSupport {
    // 開啟tinker-support外掛,預設值true
    enable = true

    // tinkerEnable功能開關
    tinkerEnable = true

    // 自動生成tinkerId, 你無須關注tinkerId,預設為false
    autoGenerateTinkerId = true

    // 指定歸檔目錄,預設值當前module的子目錄tinker
    autoBackupApkDir = "${bakPath}"

    // 是否啟用覆蓋tinkerPatch配置功能,預設值false
    // 開啟後tinkerPatch配置不生效,即無需新增tinkerPatch
    overrideTinkerPatchConfiguration = true

    // 編譯補丁包時,必需指定基線版本的apk,預設值為空
    // 如果為空,則表示不是進行補丁包的編譯
    // @{link tinkerPatch.oldApk }
    baseApk = "${bakPath}/${baseApkDir}/app-release.apk"

    // 對應tinker外掛applyMapping
    baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"

    // 對應tinker外掛applyResourceMapping
    baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"

    // 打多渠道補丁時指定目錄
    // buildAllFlavorsDir = "${bakPath}/${baseApkDir}"

    // 是否使用加固模式,預設為false
    isProtectedApp = true

    // 是否採用反射Application的方式整合,無須改造Application
    enableProxyApplication = true

    // 是否支援新增非export的Activity(注意:設定為true才能修改AndroidManifest檔案)
    supportHotplugComponent = true

}
/**
 * 一般來說,我們無需對下面的引數做任何的修改
 * 對於各引數的詳細介紹請參考:
 * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
 */
tinkerPatch {
    tinkerEnable = true
    ignoreWarning = true
    useSign = true
    dex {
        dexMode = "jar"
        pattern = ["classes*.dex"]
        loader = []
    }
    lib {
        pattern = ["lib/*/*.so"]
    }

    res {
        pattern = ["res/*", "r/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
        ignoreChange = []
        largeModSize = 100
    }

    packageConfig {
    }
    sevenZip {
        zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
//        path = "/usr/local/bin/7za"
    }
    buildConfig {
        keepDexApply = false
//      tinkerId = "base-2.0.1"
    }
}