Android 打包

Android應(yīng)用程序資源可以分為兩大類寒随,分別是assets和res:

  • Assets里面保存的是一些原始的文件誊抛。 根據(jù)文件名來訪問這些文件入愧。
  • res里面包含很多類型的文件涉兽,都需要根據(jù)Id來訪問叫胖。

通過ClassLoader 實(shí)現(xiàn) Hotfix 可能存在的一個(gè)問題就是草冈,兩次打包間資源ID很可能會(huì)發(fā)生變化。

比如打包前有一個(gè)String資源ID為0x7f050005瓮增。如果資源文件發(fā)生變化怎棱,比如我們?cè)赿ev上新加了資源或者重命名了資源,即使不被當(dāng)前Hotfix包含的Class所引用钉赁,也可能會(huì)導(dǎo)致問題蹄殃,因?yàn)橘Y源文件的ID可能發(fā)生了變化。

這幾天想通過Hack 打包中AAPT處理資源文件的過程來盡量保證多次打包過程中未發(fā)生變化的資源的ID盡量保持一致你踩∽缪遥總體來說思路是對(duì)的,但是施行起來難度比較大带膜。

  1. Android打包過程中對(duì)資源文件的處理吩谦。
    推薦這篇文章 。 偷張圖來表示以下aapt打包資源文件的流程:

    資源文件打包流程
    資源文件打包流程

  2. 對(duì)以上流程了解后膝藕,發(fā)現(xiàn)在Add Resource Symbols階段會(huì)在 /app/build/symbols/release/ 下生成一個(gè)R.txt文件式廷。 格式如下

    int attr button_color_normal 0x7f010000
    int attr button_color_pressed 0x7f010001
    int attr navigation_bar_background 0x7f010002
    int color black 0x7f040000
    int color grey 0x7f040001
    int color red 0x7f040002
    int color user_center_button_normal 0x7f040003
    int color user_center_button_pressed 0x7f040004
    int color user_center_clickable_text_color 0x7f040005
    

預(yù)期是第一次打包后,緩存R.txt文件芭挽,然后第二次打包時(shí)滑废,優(yōu)先根據(jù)上次的R.txtl來設(shè)置ResourceID。

  1. 接下來就是定制Gradle task來滿足我們的需求了袜爪。但是難點(diǎn)在于我們必須要了解相關(guān)Gradle Task的邏輯蠕趁,以便我們來做Hack,但是這方面相關(guān)的資料好少辛馆。以下是相關(guān)的Task(通過 -m 參數(shù)來獲取的)俺陋。

    :app:prepareReleaseDependencies SKIPPED
    :app:mergeReleaseAssets SKIPPED
    :app:compileReleaseRenderscript SKIPPED
    :app:generateReleaseResValues SKIPPED
    :app:generateReleaseResources SKIPPED
    :app:mergeReleaseResources SKIPPED
    :app:processReleaseManifest SKIPPED
    :app:processReleaseResources SKIPPED
    
    

我正在嘗試下載Android Studio的源碼來查看這部分的具體邏輯。昙篙。腊状。。苔可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缴挖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焚辅,更是在濱河造成了極大的恐慌醇疼,老刑警劉巖硕并,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秧荆,居然都是意外死亡倔毙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門乙濒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陕赃,“玉大人,你說我怎么就攤上這事颁股∶纯猓” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵甘有,是天一觀的道長诉儒。 經(jīng)常有香客問我,道長亏掀,這世上最難降的妖魔是什么忱反? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮滤愕,結(jié)果婚禮上温算,老公的妹妹穿的比我還像新娘。我一直安慰自己间影,他們只是感情好注竿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著魂贬,像睡著了一般巩割。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上付燥,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天喂分,我揣著相機(jī)與錄音,去河邊找鬼机蔗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛甘萧,可吹牛的內(nèi)容都是我干的萝嘁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扬卷,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼牙言!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起怪得,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤咱枉,失蹤者是張志新(化名)和其女友劉穎卑硫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚕断,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欢伏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亿乳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硝拧。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖葛假,靈堂內(nèi)的尸體忽然破棺而出障陶,到底是詐尸還是另有隱情,我是刑警寧澤聊训,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布抱究,位于F島的核電站,受9級(jí)特大地震影響带斑,放射性物質(zhì)發(fā)生泄漏鼓寺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一遏暴、第九天 我趴在偏房一處隱蔽的房頂上張望侄刽。 院中可真熱鬧,春花似錦朋凉、人聲如沸州丹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墓毒。三九已至,卻和暖如春亲怠,著一層夾襖步出監(jiān)牢的瞬間所计,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工团秽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留主胧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓习勤,卻偏偏與公主長得像踪栋,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子图毕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,145評(píng)論 25 707
  • [TOC] 打包流程 前言 我們每一個(gè)產(chǎn)品中一般都是由一位同事來負(fù)責(zé)打包工作的夷都,其他同學(xué)一般是不需要關(guān)心具體的流程...
    鐘金寶閱讀 1,633評(píng)論 0 5
  • 1.概況 Android APK是如何來的呢?懷著這個(gè)問題去查資料予颤,發(fā)現(xiàn)了下邊這張圖囤官。 由android的項(xiàng)目經(jīng)過...
    KaelQ閱讀 19,838評(píng)論 4 55
  • 本文會(huì)不定期更新冬阳,推薦watch下項(xiàng)目。如果喜歡請(qǐng)star党饮,如果覺得有紕漏請(qǐng)?zhí)峤籭ssue肝陪,如果你有更好的點(diǎn)子可以...
    天之界線2010閱讀 17,625評(píng)論 12 81
  • 1见坑、微信支付 1、應(yīng)用簽名(md5) 可以使用簽名工具捏检,直接從安裝當(dāng)前應(yīng)用的手機(jī)上獲得荞驴;或者使用keytool 可...
    i冰點(diǎn)閱讀 468評(píng)論 0 0