Bugly 熱更新集成記錄

以下文章記錄bugly熱更新的過程(傻瓜式教程,被那人較懶,直接貼圖吧):
集成第三方,首先肯定是去官網注冊,申請資料,balabala的,直接上圖吧


image.png

image.png

(APPID后面需要用到)


image.png

對照步驟一步步來:
project目錄的gradle配置,重點紅圈?。。?/p>

image.png
image.png
image.png

moudle目錄下創(chuàng)建


image.png

tinker-support.gradle里面的內容,好吧,完全copy,沒毛病,之后告訴怎么修改基準包和補丁包的修改
apply plugin: 'com.tencent.bugly.tinker-support'

def bakPath = file("${buildDir}/bakApk/")

/**

  • 此處填寫每次構建生成的基準包目錄
    */
    def baseApkDir = "app-1110-10-23-51"

/**

  • 對于插件各參數(shù)的詳細解析請參考
    */
    tinkerSupport {

    // 開啟tinker-support插件,默認值true
    enable = 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"

    // 構建基準包和補丁包都要指定不同的tinkerId,并且必須保證唯一性
    // tinkerId = "base-1.0.1"
    tinkerId = "patch-1.0.1"

    // 構建多渠道補丁時使用
    // buildAllFlavorsDir = "${bakPath}/${baseApkDir}"

    // 是否啟用加固模式,默認為false.(tinker-spport 1.0.7起支持)
    // isProtectedApp = true

    // 是否開啟反射Application模式
    enableProxyApplication = false

    // 是否支持新增非export的Activity(注意:設置為true才能修改AndroidManifest文件)
    supportHotplugComponent = true

}

/**

  • 一般來說,我們無需對下面的參數(shù)做任何的修改

  • 對于各參數(shù)的詳細介紹請參考:

  • https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
    /
    tinkerPatch {
    //oldApk ="${bakPath}/${appName}/app-release.apk"
    ignoreWarning = false
    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 = "1.0.1-base"
    //applyMapping = "${bakPath}/${appName}/app-release-mapping.txt" // 可選,設置mapping文件,建議保持舊apk的proguard混淆方式
    //applyResourceMapping = "${bakPath}/${appName}/app-release-R.txt" // 可選,設置R.txt文件,通過舊apk文件保持ResId的分配
    }
    }

接下來呢,初始化呀,這個初始化和上面的
image.png

有關,true呢,方便一點,本人較懶,不想多寫一個類,不過我用的是false。。。。


image.png

image.png

記得去maifest里面配置application喲,這個就不給圖了,下面是appLike代碼,之前的application里面的初始化操作都放在這里去操作

public class AppLike extends DefaultApplicationLike {
public static final String TAG = "Tinker.SampleApplicationLike";

public AppLike(Application application, int tinkerFlags,
               boolean tinkerLoadVerifyFlag, long applicationStartElapsedTime,
               long applicationStartMillisTime, Intent tinkerResultIntent) {
    super(application, tinkerFlags, tinkerLoadVerifyFlag, applicationStartElapsedTime, applicationStartMillisTime, tinkerResultIntent);
}


@Override
public void onCreate() {
    super.onCreate();
    // 這里實現(xiàn)SDK初始化,appId替換成你的在Bugly平臺申請的appId
    // 調試時,將第三個參數(shù)改為true
    Bugly.init(getApplication(), "efbe42d727", true);
}


@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public void onBaseContextAttached(Context base) {
    super.onBaseContextAttached(base);
    // you must install multiDex whatever tinker is installed!
    MultiDex.install(base);

    // 安裝tinker
    // TinkerManager.installTinker(this); 替換成下面Bugly提供的方法
    Beta.installTinker(this);
}

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void registerActivityLifecycleCallback(Application.ActivityLifecycleCallbacks callbacks) {
    getApplication().registerActivityLifecycleCallbacks(callbacks);
}

}

下面enableProxyApplication = true 的情況,沒寫,直接上文檔圖:


image.png

下面是manifest配置


image.png

文檔里面的說明。有必要給個圖


image.png
image.png
image.png

編譯完成后這里會生成一個基準包,這就是基準包。
接著,我們修改下代碼,我懶就改了個字符串顯示。。。。
我們看看接下來補丁包的配置
,我們吧剛才基準包的內容修改下,在tinker-support里面,給圖最清楚:


image.png

不多說,聰明的各位肯定明白,對了,記得修改tinkerId為補丁包的,看看上面的注釋,必須保證唯一

繼續(xù)圖解


image.png

這樣就生成了補丁包,位置注意是patch,不是tinkerPatch


image.png

然后我們就可以愉快的去上傳補丁包了


image.png
image.png

對于下發(fā)范圍的說明:


image.png

等會兒然后就ok了

以上,就是圖解bugly熱修復的集成咯

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容