熱更新解決方案,選擇的是騰訊的bugly裙顽,同時附帶著bug收集付燥,很好用,反饋率很高愈犹,也比較準键科,目前對集成的項目來看還沒有太大的問題。0.0多渠道打包速度太慢不知道算不算漩怎。
騰訊bugle理解:熱更分為基準包+補丁包勋颖;基準包為線上版本在運行的apk包,補丁包為依賴于基準包而生成的補丁文件勋锤,需要上傳到bugly更新列表中饭玲;補丁包上傳到bugly更新列表成功的前提是基準包在補丁包上傳之前在APP上聯(lián)網(wǎng)運行過。叁执。當然茄厘,較大程度的更新還是依賴于發(fā)APK包的形式矮冬,小的更新+解決比較著急致命的bug直接使用熱更即可。
bugly熱更新的局限性
1次哈、不支持修改清單文件胎署,不支持新增android端四大組件(頁面、Service服務(wù)窑滞,廣播琼牧、數(shù)據(jù)庫)。后續(xù)版本應(yīng)該也支持了
2哀卫、不建議在GP渠道熱更新代碼巨坊。
3、在Android N上對啟動時間有輕微影響此改。
4抱究、不支持部分三星android-21機型,加載補丁時會主動拋出異常带斑。
不支持一些動畫類型的資源文件的更新鼓寺。
官方鏈接:騰訊bugly官方地址
下面是具體的集成步驟,官方文檔介紹的比較詳細勋磕,這里著重把需要注意的點寫下來妈候,少趟坑。
1.工程根目錄下“build.gradle”文件中添加:
dependencies {????classpath "com.tencent.bugly:tinker-support:1.1.2"}
1挂滓、APP下的build.gradle中添加bugly SDK的依賴
dependencies { ?
????compile "com.android.support:multidex:1.0.1" // 多dex配置????
????compile 'com.tencent.bugly:crashreport_upgrade:1.3.5'????// 指定tinker依賴版本(注:應(yīng)用升級1.3.5版本起苦银,不再內(nèi)置tinker)????
????compile 'com.tencent.tinker:tinker-android-lib:1.9.6'????compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中l(wèi)atest.release指代最新版本號,也可以指定明確的版本號赶站,例如2.2.0
????}
// 依賴插件腳本apply from: 'tinker-support.gradle'
1幔虏、APP創(chuàng)建tinker-support.gradle文件,文件中大體內(nèi)容為
? ? ? ? ? ? 針對上述tinker-support.gradle文件中的三個重要點
? ? ? ? ? ? 1贝椿、baseApkDir:打補丁包時依據(jù)的基準包地址想括,打基準包時不用定義。
? ? ? ? ? ? 2烙博、tinkerId:基礎(chǔ)包+補丁包的版本號(打基礎(chǔ)包時改為基礎(chǔ)包版本號瑟蜈,打補丁包時改為補丁包版本號)
? ? ? ? ? ? 3、enableProxyApplication:是否使用自己的Application渣窜,或者是集成sdk中的application铺根。(文檔中有詳細說明)
? ? ? ? ? ? ?另外:支持加固模式和多渠道也在上圖注釋中有,說明一點的是乔宿,多渠道打包的時候位迂,只需要在build.gradle中加入productFlavors即可
實例化熱更新
build.gradle中配置好打包信息后,使用Gradle自帶的打包命令進行基礎(chǔ)包、補丁包的打包
多渠道打包的時候掂林,基準包的生成會有單個文件:mapper文件(如果沒有臣缀,說明build.gradle中的minifyEnabled沒有開啟混淆)、APK文件党饮、TXT文件,需要進行聯(lián)網(wǎng)運行的基礎(chǔ)包就是該APK文件驳庭。補丁包選取patch下的7z.apk文件刑顺。上傳到bugly后臺即可。
下面附完整截圖流程饲常,接入Demo需要的聯(lián)系我私發(fā)蹲堂。