AndFix實(shí)現(xiàn)原理詳解[一]

AndFix應(yīng)用案例接入過程

AndFix是阿里巴巴支付寶團(tuán)隊(duì)推出的熱修復(fù)project。利用這個(gè)功能我們交付給用戶的版本不再是覆水難收了剖效,具備熱修復(fù)的能力。
1璧尸、demo演示和說明

  • 文件清單列表

下載文件解壓后,目錄文件清單如下爷光,因?yàn)閜atch文件路徑是hardcode在/sdcrad/out.patch,使用時(shí)確保放在這個(gè)路徑。

目錄下文件 介紹 操作說明
/APK/app-release.apk 線上使用著的apk(有bug存在) 請安裝到手機(jī)上
/APK/app-release_fix.apk 修改bug后簽名打包的apk 不用安裝欢瞪,生成patch時(shí)用到
/apatchtools/apkpatch.sh 生成patch工具類 使用下面接入步驟的命令即可生成.apatch文件到指定目錄
/apatch/out.apatch fixbug后生成的patch文件 請放在 /sdcrad/out.patch
sourcecode 源碼 如果要修改apatch指定路徑可以修改源碼演示

2徐裸、接入步驟
一遣鼓、配置 gradle依賴

dependencies { compile 'com.alipay.euler:andfix:0.3.1@aar'}
  • 1 . 初始 PatchManager:
patchManager = new PatchManager(context);
patchManager.init(appversion);//current version
  • 2 . 加載 patch. 選擇盡早的時(shí)機(jī)做加載重贺,such as application.oncreate():
patchManager.loadPatch();
  • 3 . 加載 patch. 下載path完畢后即可加載patch
//path of the patch file that be downloaded
patchManager.addPatch(path);

二、ProGuard

  • Andfix使用到的native方法類
com.alipay.euler.andfix.AndFix
  • 注解保留
com.alipay.euler.andfix.annotation.MethodReplace
  • 添加混淆文件聲明
-keep class * extends java.lang.annotation.Annotation-keepclasseswithmembernames class * { native <methods>;}

三气笙、使用生成patch工具類命令

usage: apkpatch 
-f <new> 
-t <old> 
-o <output> 
-k <keystore> 
-p <***> 
-a <alias> 
-e <***> 
-a,--alias <alias> keystore entry alias.
-e,--epassword <***> keystore entry password. 
-f,--from <loc> new Apk file path. 
-k,--keystore <loc> keystore path. 
-n,--name <name> patch name. 
-o,--out <dir> output dir. 
-p,--kpassword <***> keystore password. 
-t,--to <loc> old Apk file path.

使用舉例:(win環(huán)境下對應(yīng)修改路徑也是一樣的)

./apkpatch.sh -f /Users/e0uoq/AndfixDemo2/app-release.apk -t /Users/e0uoq/AndfixDemo2/app/app-release.apk -o /Users/e0uoq/andfixpatch -k /Users/e0uoq/andfixkey.jks -p andfix_key -a andfixsign -e andfix_sign

此外還提供了apatch合并的命令,將多個(gè)apatch合并為一個(gè)

usage: apkpatch 
-m <apatch_path...> 
-o <output> 
-k <keystore> 
-p <***> 
-a <alias> 
-e <***> 
-a,--alias <alias> keystore entry alias. 
-e,--epassword <***> keystore entry password. 
-k,--keystore <loc> keystore path. 
-m,--merge <loc...> path of .apatch files. 
-n,--name <name> patch name. 
-o,--out <dir> output dir. 
-p,--kpassword <***> keystore password.

下一節(jié)繼續(xù)介紹:實(shí)現(xiàn)原理核心代碼詳解(davlik部分)

ps:后面補(bǔ)上github地址抒巢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秉犹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子崇堵,更是在濱河造成了極大的恐慌,老刑警劉巖鸳劳,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡傍妒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門颤练,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嗦玖,你說我怎么就攤上這事跃脊∮畲欤” “怎么了酪术?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拼缝。 經(jīng)常有香客問我彰亥,道長,這世上最難降的妖魔是什么任斋? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮废酷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澈蟆。我一直安慰自己,他們只是感情好趴俘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著太惠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凿渊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天埃脏,我揣著相機(jī)與錄音,去河邊找鬼彩掐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛佩谷,可吹牛的內(nèi)容都是我干的旁壮。 我是一名探鬼主播谐檀,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桐猬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溃肪,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羔沙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扼雏,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夯膀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诱建。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俺猿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辜荠,到底是詐尸還是另有隱情,我是刑警寧澤伯病,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布否过,位于F島的核電站,受9級特大地震影響苗桂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜煤伟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望便锨。 院中可真熱鬧,春花似錦我碟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽友雳。三九已至,卻和暖如春押赊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伊群。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留舰始,地道東北人咽袜。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像询刹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子凹联,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,527評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)住闯,斷路器,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 項(xiàng)目以飛快的速度迭代比原,2周進(jìn)行一次迭代升級。每次開發(fā)完功能跑通量窘,在現(xiàn)有機(jī)型上測試沒問題的話雇寇,就提交市場蚌铜。 在以極快...
    張庚閱讀 6,867評論 3 18
  • 背景 當(dāng)一個(gè)App發(fā)布之后,突然發(fā)現(xiàn)了一個(gè)嚴(yán)重bug需要進(jìn)行緊急修復(fù)冬殃,這時(shí)候公司各方就會(huì)忙得焦頭爛額:重新打包Ap...
    灬丨墨殤丶閱讀 737評論 0 4
  • 一個(gè)人坐著發(fā)呆,回憶往事造壮,身旁的同事再吵吵鬧鬧,可我卻陷入了沉思耳璧,一點(diǎn)也不受外界的影響。腦海里飄過何為人生旨枯,想到這...
    毛志亮閱讀 399評論 2 3