AndFix 實(shí)戰(zhàn)以及遇到的坑

最近項(xiàng)目中有用到了熱加載技術(shù)阿里巴巴的AndFix框架怀愧,為此做了一下相關(guān)的調(diào)研骚露。首先Fork了一份github上AndFix源碼,發(fā)現(xiàn)github上AndFix 上并沒(méi)有直接可以跑起來(lái)的demo轨功。那么只能用自己動(dòng)手來(lái)一步一步來(lái)集成嘍牢酵。具體的步驟就直接來(lái)參考github上AndFix文檔的步驟了,還是比較詳細(xì)的谊却。

1柔昼、首先第一步我們來(lái)加入依賴

dependencies {
    compile 'com.alipay.euler:andfix:0.5.0@aar'
}

2、如何來(lái)使用呢因惭?

注:這里為了方便測(cè)試岳锁,我們就是直接初始化PatchManager、加載與添加Patch都放在了自定義Application onCreate方法當(dāng)中了蹦魔,主要是3個(gè)步驟見(jiàn)注釋激率。

        //1)初始化PatchManager
        mPatchManager = new PatchManager(this);
        mPatchManager.init(AppInfoUtils.getVersionCode(this));
        //2)load patch
        mPatchManager.loadPatch();
        try {
        // .apatch file path ,這里一定要注意每臺(tái)手機(jī)sd卡路徑不同
        String patchFileString = "sdcard" + Environment.getExternalStorageDirectory()
                .getAbsolutePath() + APATCH_PATH;
        //3)添加patch
        mPatchManager.addPatch(patchFileString);
        Log.d(TAG, "apatch:" + patchFileString + " added.");
    } catch (IOException e) {
        Log.e(TAG, "", e);
    }

3勿决、生成patch

1)下載生成工具
AndFix提供了一個(gè)生成patch的工具叫apkpatch乒躺,可以點(diǎn)擊進(jìn)行下載。
2)準(zhǔn)備工作
準(zhǔn)備兩個(gè)apk包低缩,一個(gè)是帶有bug的包嘉冒, 一個(gè)是bug被修復(fù)之后的包。具體的action 就是咆繁,我首先打一個(gè)apk包命名為“app-debug.apk”讳推,注意要有簽名的。然后把它安裝到手機(jī)玩般,此時(shí)手機(jī)上的包為帶有bug的安裝包银觅。然后修改一個(gè)Log 內(nèi)容,再進(jìn)行打包為apk-release.apk坏为,此時(shí)準(zhǔn)備工作完成究驴,開(kāi)始第三步如下。
3)生成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.

輸入命令 :

 ./apkpatch.sh -o ~/Desktop/ -k ~/develop/github/FamilyLibraryManager/sign.jks -p 123456 -a family_library_manager_key -e 123456  -t ~/Desktop/app-release-01.apk -f ~/Desktop/app-release-01-modifyed.apk

這時(shí)在我的桌面生成了app-release-013cb261226d5a99621b9a464b98ab96ac.apatch 文件和diff.dex兩個(gè)文件匀伏。diff.dex 暫時(shí)不用管它洒忧。我們直接把a(bǔ)pp-release-01-3cb261226d5a99621b9a464b98ab96ac.apatch 文件重命名為我們Application中用到的APATCH_PATH常量名稱。并把它push 到sd卡中制定的目錄中够颠。這里我的push命令是

adb push ~/Desktop/out2.apatch  sdcard/storage/emulated/0/out2.apatchc

4熙侍、重新運(yùn)行app查看結(jié)果

此時(shí)app運(yùn)行結(jié)果應(yīng)該就是我們修改后的樣子了。

最后說(shuō)一下我碰到的一些坑
1) sdcard 目錄, 這里需要注意 sdcard 目錄一定要正確蛉抓,這樣才能保證正確的push patch文件以及l(fā)oad patch 文件牢硅。
2)生成工具參數(shù)不要弄錯(cuò)了 -t -f 的含義,t是舊文件 f是新文件芝雪。不然會(huì)報(bào)java.lang.IllegalAccessError 錯(cuò)誤哦减余。

下班啦~~ 回家,后續(xù)會(huì)對(duì)AndFix原理進(jìn)行研究~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惩系,一起剝皮案震驚了整個(gè)濱河市位岔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堡牡,老刑警劉巖抒抬,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異晤柄,居然都是意外死亡擦剑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)芥颈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惠勒,“玉大人,你說(shuō)我怎么就攤上這事爬坑【牢荩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵盾计,是天一觀的道長(zhǎng)售担。 經(jīng)常有香客問(wèn)我,道長(zhǎng)署辉,這世上最難降的妖魔是什么族铆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮哭尝,結(jié)果婚禮上哥攘,老公的妹妹穿的比我還像新娘。我一直安慰自己刚夺,他們只是感情好献丑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布末捣。 她就那樣靜靜地躺著侠姑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箩做。 梳的紋絲不亂的頭發(fā)上莽红,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼安吁。 笑死醉蚁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鬼店。 我是一名探鬼主播网棍,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼妇智!你這毒婦竟也來(lái)了滥玷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤巍棱,失蹤者是張志新(化名)和其女友劉穎惑畴,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體航徙,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡如贷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了到踏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠袱。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窝稿,靈堂內(nèi)的尸體忽然破棺而出霞掺,到底是詐尸還是另有隱情,我是刑警寧澤讹躯,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布菩彬,位于F島的核電站,受9級(jí)特大地震影響潮梯,放射性物質(zhì)發(fā)生泄漏骗灶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一秉馏、第九天 我趴在偏房一處隱蔽的房頂上張望耙旦。 院中可真熱鬧,春花似錦萝究、人聲如沸免都。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)茅逮。三九已至,卻和暖如春链快,著一層夾襖步出監(jiān)牢的瞬間凡辱,已是汗流浹背侨舆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绢陌,地道東北人挨下。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像脐湾,于是被迫代替她去往敵國(guó)和親臭笆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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