熱更新:多么高大上的名字,Android 開發者應該都知道這么個東西,原理呢!請自行百度,這里只是集成總結,謝謝!!! 對于第三方SDK的使用,大家都知道用“步步高點讀機,哪里不會點哪里”—— 所以第一步肯定是看官方集成文檔:地址:https://bugly.QQ.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170223160322 首先,剛開始看的時候跟大部分SDK一樣肯定是各種配置的,這里根據官方文檔的步驟來解釋說明哪里需要注意的,以及我是怎么處理成功的。
第一步:添加插件依賴 工程根目錄下“build.gradle”文件中添加:
buildscript { repositories { jcenter() } dependencies { // tinkersupport插件, 其中lastest.release指拉取最新版本,也可以指定明確版本號,例如1.0.4 classpath “com.tencent.bugly:tinker-support:latest.release” } } 坑 1:這里是添加依賴沒錯,但我遇到問題就是后面生成patch包時在Gradle任務中找不到文檔里面說的tinker文件夾和tinker-support文件夾(后面的步驟會說到),于是乎翻山越嶺找資料,發現一個這個: classpath (‘com.tencent.tinker:tinker-patch-gradle-plugin:1.7.5’) 需要這個依賴插件
第二步:集成SDK:這里沒有什么大坑,照著復制就可以了,注意:tinker-support.gradle文件中的配置 apply plugin: ‘com.tencent.bugly.tinker-support’
def bakPath = file(“${buildDir}/bakApk/”)
/** * 此處填寫每次構建生成的基準包目錄,如果是你打基準包這個可以暫時不用管,打patch包的話就要改成你的基準包生成的目錄,必須相同 */ def baseApkDir = “app-0208-15-10-00”
/** * 對于插件各參數的詳細解析請參考 */ tinkerSupport {
// 開啟tinker-support插件,默認值trueenable = true// 指定歸檔目錄,默認值當前module的子目錄tinkerautoBackupApkDir = "${bakPath}"http:// 是否啟用覆蓋tinkerPatch配置功能,默認值false// 開啟后tinkerPatch配置不生效,即無需添加tinkerPatchoverrideTinkerPatchConfiguration = true// 編譯補丁包時,必需指定基線版本的apk,默認值為空// 如果為空,則表示不是進行補丁包的編譯// @{link tinkerPatch.oldApk } **patch包改成基準包的apk文件名**baseApk = "${bakPath}/${baseApkDir}/app-release.apk"http:// 對應tinker插件applyMapping **patch包改成基準包的mapping文件名**baseApkPRoguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"http:// 對應tinker插件applyResourceMapping **patch包改成基準包的R文件名**baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-release-R.txt"http:// 構建基準包和補丁包都要指定不同的tinkerId,并且必須保證唯一性,**基準包這里最好是改成base-versionname,patch包就改成patch-versionname,每個版本的都不一樣**tinkerId = "base-1.0.1"http://示例// 構建多渠道補丁時使用// buildAllFlavorsDir = "${bakPath}/${baseApkDir}"http:// 是否開啟反射application模式enableProxyApplication = false}
/**  * 一般來說,我們無需對下面的參數做任何的修改  * 對于各參數的詳細介紹請參考:  * https://github.com/Tencent/tinker/wiki/Tinker-%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97  */ tinkerPatch {     //oldApk =”
//        path = “/usr/local/bin/7za”     }     buildConfig {         keepDexApply = false         //tinkerId = “1.0.1-base”         //applyMapping = “
后面的步驟就按照集成文檔來就OK了,最后說明一下:build文件夾下會產生很多app-xxxx-xx-xx的文件夾, 你生成的基準包就是在這里面,主要使用最新的,不想要的話直接build project或者clean也可以。 
終極大坑: 在打patch包的時候,遇到點擊Gradle任務中的tinker-support生成apk的時候有時會出錯,經過我的不斷rebuild和clean之后就好了(也有可能是你配置文件中的問題,這里需要注意)。 
demo地址:http://download.csdn.net/detail/ling9400/9763209(module)
新聞熱點
疑難解答