初衷:如今熱更新越來越火,各大廠也陸續開源自己的熱更新框架。目前主流的熱更新大概有以下一些,未統計到的望給予補充。
正好年底了有點時間,也總結一下。
1、下面就本人用到的tinker做個分析,以及具體的實現步驟。
傻瓜式sdk tinker進入參考文件:
當然還要一種是原始碼直接接入,自己管理後台服務,稍微複雜麻煩點,可參考github上tinker的官方介紹:
具體的原理和差異演算法大家可以去參考下官方文件
差異演算法結構圖:
對比以上各優勢果斷選擇了tinker,主要看中的是資源檔案的替換,當然有一點不滿意的就是無法及時生效,不過也不影響,還可以使用鎖屏自動生效的方式,這一點還是挺好的!
2、整合步驟:
新建專案成功後配置build.gradle,有三處的gradle需要配置。由於文件並未完全標明,其中乙個gradle的配置還是費了點精力^_^。最後還是再同事的一句話點醒了。
@override
protected void
attachbasecontext(context base)
}gradle結構:
都需要我們配置,其中
tinkerpatch.gradle
需要手動建立,然後在 2 中進行引用
具體看下第1個 的內容:
buildscript下面先看下 第3個 gradle的內容:dependencies
}allprojects
}task clean(type: delete)
def bakpath = file("$/basekapk/")
/*** 對於外掛程式各引數的詳細解析請參考
* */tinkerpatchsupport "
}/**
* 一般來說,我們無需對下面的引數做任何的修改
* 對於各引數的詳細介紹請參考:
* /wiki/tinker-%e6%8e%a5%e5%85%a5%e6%8c%87%e5%8d%97
*/tinkerpatch
lib
res
packageconfig
sevenzip
buildconfig
}很簡單
dependencies )至此tinker的整合已經搞定!!!下面就是打包,編譯差異包的過程了。下面還是列下官方的實現步驟吧,依葫蘆畫瓢,so sasy !testcompile 'junit:junit:4.12'
compile "com.android.support:multidex:1.0.1"
//若使用annotation需要單獨引用,對於tinker的其他庫都無需再引用
provided("com.tencent.tinker:tinker-android-anno:1.7.6")
compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.0.1")
}
參考:
整合完畢後將專案切換到project模式下,可以看到這樣的結構
展開gradle projects 編譯打包,其中tinker下是編譯產生差異包
gradle 遠端倉庫依賴 jcenter, 例如 tinkerpatch sample 中的
build.gradle
.
buildscript
dependencies
}
注意,在這裡sdk使用了fat打包的模式,我們不能再引入任何 tinker 的相關依賴,否則會造成版本衝突。當前sdk是基於 tinker 1.7.6 核心開發的。
dependencies
開啟引入的 tinkerpatch.gradle 檔案,它的具體引數如下:
tinkerpatchsupport "
}
它的具體含義如下:
引數預設值
描述tinkerenable
true
是否開啟 tinkerpatchsupport 外掛程式功能。
""""
false
autobackupapkpath
""baseapkfile
""基準包的檔案路徑, 對應 tinker 外掛程式中的 oldapk 引數
;編譯補丁包時,必需指定基準版本的 apk,預設值為空,則表示不是進行補丁包的編譯。
""baseresourcerfile""
一般來說,我們無需修改引用 android 的編譯配置,也不用修改 tinker 外掛程式原來的配置。針對特殊需求,具體的引數含義可參考 tinker 文件:tinker 接入指南.
... public void attachbasecontext(context base)
...
... public void onbasecontextattached(context base)
...}
tinkerpatch 的使用步驟非常簡單,一般來說可以參考以下幾個步驟:
執行assemblerelease
task 構建基準包,即將要發布的版本;
執行tinkerpatchrelease
task 構建補丁包,補丁包將位於build/outputs/tinkerpatch
中。
搞定!後面就是將差異包提交的tinker的web上了。
各位見笑了,有問題call我,能解決的一定盡力,幫不到的一起努力!祝自己2017工作順利,身體健康,家庭和睦!祝大家步步高公升!
Bugly接入Tinker熱更新流程
專案中之前已經接入bugly的異常收集和全量更新sdk,為了應對bug及時修復以及一些改動不太大的需求,準備接入tinker。而bugly已經對tinker做了很好的支援,不用從頭到尾接一遍。接入流程 一 新增外掛程式依賴,在根目錄的build.gradle中 classpath com.tence...
微信熱更新Tinker的遠端版本是使用教程
第一步 新增 gradle 外掛程式依賴buildscript dependencies 第二步 整合 tinkerpatch sdk dependencies 第三步 配置正式的簽名 第四步 配置 這裡採用的是 tinkerpatch.gradle裡面的修改為 true 這個類直接新建就好 pub...
使用LUA 熱更新模組
最近準備在手機專案客戶端中使用lua,以前一直在伺服器使用luabind.另外,tolua 也體驗過,luaplus也在早年用過.以下是本人對這些繫結庫的個人感覺 luabind 利用boost機制把繫結做到極致,比較適合主c 弱lua的指令碼框架.作者已經停止更新,在windows linux編譯...