精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一款 APK 是怎么誕生的?

開發(fā) 開發(fā)工具
Android 有 64K 引用限制,當 type_ids、method_ids 或者 field_ids 超過 65536(64 * 1024)的時候,需要進行 dex 分包,為了 Dex 的數(shù)量盡可能少,我們需要盡量實現(xiàn)「Dex 信息有效率」的提升。

[[426462]]

一、 APK 組成解析

在開始解析 Android 構(gòu)建流程之前,我們先來看下構(gòu)建的最終產(chǎn)物 APK 的整體組成:

APK 主要由五個部分組成,分別是:

  • Dex:.class 文件處理后的產(chǎn)物,Android 系統(tǒng)的可執(zhí)行文件
  • Resource:資源文件,主要包括 layout、drawable、animator,通過 R.XXX.id 引用
  • Assets:資源文件,通過 AssetManager 進行加載
  • Library:so 庫存放目錄
  • META-INF:APK 簽名有關(guān)的信息

1.1 Apk 分析工具

工欲善其事,必先利其器,既然想分析 APK 必然少不了好用的工具。

① Android Studio 自帶的 APK 分析器

通過 APK 分析器,我們可以完成這些操作:

  • 查看 APK 中文件(如 DEX 和 Android 資源文件)的絕對大小和相對大小
  • 了解 DEX 文件的組成
  • 快速查看 APK 中文件(如 AndroidManifest.xml)的最終版本
  • 對兩個 APK 進行并排比較

② ClassyShark 可以做為 AS 自帶 APK 分析器的補充,幫我們分析 dex 中的詳細數(shù)據(jù),以及查看 APK 中的總方法數(shù)以及各個模塊的方法數(shù)分布。

1.2 Dex 知識點拓展

當我們在 Android 查看一個 APK 的時候,可以看到右上角有 Defined Methods 和 Referenced Methods,但大多數(shù)人可能不知道這兩者的區(qū)別,這里簡單說明下:

Defined Methods:在這個 Dex 中定義的方法;Referenced Methods:Defined Methods 以及 Defined Methods 引用到的方法。

Android 有 64K 引用限制,當 type_ids、method_ids 或者 field_ids 超過 65536(64 * 1024)的時候,需要進行 dex 分包,為了 Dex 的數(shù)量盡可能少,我們需要盡量實現(xiàn)「Dex 信息有效率」的提升。

  1. Dex 信息有效率 = Defined Methods 數(shù)量 / Referenced Methods 數(shù)量 

二、 構(gòu)建源碼導讀

當我們用 Android Studio 進行安裝包構(gòu)建的時候,會發(fā)現(xiàn)其實是運行了一連串的 Task,也就是說其實是這些 task 的配合,最終構(gòu)建出我們的 APK 的。

2.1 源碼引入

如果我們想更了解 Android 的構(gòu)建流程,對于相關(guān)的源碼肯定是要有所了解的。那我們?nèi)绾慰吹竭@些 Task 相關(guān)的源碼呢,我們知道 Android 是用 Gradle 進行構(gòu)建的,也就意味著這些 task 其實都是放在 Gradle 中,我們想看 Gradle 中源碼的話,可以在 build.gradle 將 Gradle 進行編譯。

  1. compileOnly "com.android.tools.build:gradle:3.0.1" 

編譯完之后,可以在 ApplicationTaskManager#createTasksForVariantScope 中找到創(chuàng)建這些 Task 相關(guān)的代碼,也就意味著順藤摸瓜找到這些 Task 的真正實現(xiàn)邏輯。

2.2 BuildConfig Task 詳解

這里以 BuildConfig 文件的生成為例,來梳理下如何查看某個 task 的代碼邏輯。

生成 BuildConfig 文件,是通過 ApplicationTaskManager 中通過 createBuildConfigTask 來創(chuàng)建對應的 task。

順著代碼邏輯,我們找到最終真正實現(xiàn)這個邏輯的是:GenerateBuildConfig 這個 task,GenerateBuildConfig 是繼承自 BaseTask,這里有個小技巧是,Task 中真正的執(zhí)行邏輯都是在帶著 @TaskAction 注解的方法上的,所以我們能很快找到對應的 generate() 方法??梢钥吹缴?BuildConfig 整體的邏輯還是比較簡單的,其實就是將 build.gradle 中自帶的屬性以及我們自定義的屬性進行讀取,然后通過 JavaWriter 生成對應的 BuildConfig 文件。

2.3 獲取所有 task 對應的類名

看到上面的例子,可能有些人會拋出一個疑問就是那我們怎么確定構(gòu)建中執(zhí)行的 task 具體對應哪個類呢,這里提供一個小技巧,其實我們可以在 taskGraph 構(gòu)建完成之后,將所有 task name 以及對應的 class 進行打印。例如在 build.gradle 中加入這個代碼之后,我們在運行的時候,就會把 task 所對應的類名也都一起打印出來。

三、構(gòu)建流程梳理

可以看到 Android 構(gòu)建中會涉及到多個工具,我們可以通過 open $ANDROID_HOME/build-tools 來查看相關(guān)的構(gòu)建工具。

四、手動構(gòu)建 APK

最后我們通過命令行來手動打包一個可執(zhí)行的 APK,能讓我們對 APK 構(gòu)建的理解更加深入。首先需要準備下 代碼、資源文件、AndroidManifest 這些構(gòu)建 APK 的必要文件。

① 通過 aapt2 compile 將 res 資源編譯成 .flat 的二進制文件:

  1. aapt2 compile -o build/res.zip --dir res 

② 通過 aapt2 link 將 .flat 和 AndroidManifest 進行連接,轉(zhuǎn)化成不包含 dex 的 apk 和 R.java:

  1. aapt2 link build/res.zip -I $ANDROID_HOME/platforms/android-30/android.jar --java build --manifest AndroidManifest.xml -o build/app-debug.apk 

③ 通過 javac 將 Java 文件編譯成 .class 文件:

  1. javac -d build -cp $ANDROID_HOME/platforms/android-30/android.jar com/**/**/**/*.java 

④ 通過 d8 將 .class 文件轉(zhuǎn)化成 dex 文件:

  1. d8 --output build/ --lib $ANDROID_HOME/platforms/android-30/android.jar build/com/tencent/hockeyli/androidbuild/*.class 

⑤ 合并 dex ?件和資源?件:

  1. zip -j build/app-debug.apk build/classes.dex 

⑥ 對 apk 通過 apksigner 進行簽名:

  1. apksigner sign -ks ~/.android/debug.keystore build/appdebug.apk 

 

責任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2015-08-26 16:05:31

2015-07-08 09:53:42

2013-01-23 10:02:35

2024-08-16 08:31:05

2014-12-16 10:11:22

2021-07-23 16:50:19

httpJava框架

2019-04-25 10:44:18

PHP開源庫C 語言

2019-08-30 14:30:11

2017-11-08 11:53:54

開源人工智能軟件

2020-06-30 15:38:17

戴爾

2015-08-10 11:41:00

SQL注入SQL注入工具Sqlmapi

2015-08-24 09:21:27

類型程序員

2020-07-06 10:29:21

Linux系統(tǒng)數(shù)據(jù)

2017-03-06 11:02:59

產(chǎn)品軟件Power Desig

2011-08-09 09:16:44

Eclipse

2022-10-09 10:11:30

Python爬蟲神器

2015-07-08 15:30:59

智慧存儲華為

2015-12-07 16:18:06

2023-01-29 07:49:57

2022-02-25 14:57:33

harmonyOSjava心形動畫
點贊
收藏

51CTO技術(shù)棧公眾號

在线免费看黄色片| 草草草视频在线观看| 少妇又紧又色又爽又刺激视频| 成人无号精品一区二区三区| 日韩一二三四区| 欧美极品在线视频| wwwwxxxx国产| 91精品亚洲一区在线观看| 午夜亚洲国产au精品一区二区| 欧美大香线蕉线伊人久久国产精品 | 在线一区视频观看| 国产成人高清视频| 精品国模在线视频| 日本少妇xxxx| 国产制服91一区二区三区制服| 日韩欧美中文字幕在线播放| 亚洲成人一区在线| 国产精品免费视频一区二区| 国产一级一级国产| 亚洲日本在线观看视频| 亚洲精品一二三区| 九色综合日本| 国产精品伦一区二区三区| 99国产精品视频免费观看一公开 | 国产精品久久久久福利| 久久亚洲国产成人精品性色| 久久久影院免费| 日韩精品久久久久久久玫瑰园| а 天堂 在线| www.一区| 欧美中文字幕不卡| 欧美s码亚洲码精品m码| 丰满少妇一级片| 美女www一区二区| 热99精品里视频精品| 小毛片在线观看| 午夜不卡一区| 欧美日韩一区在线观看| 麻豆中文字幕在线观看| 一级片视频播放| 老司机一区二区三区| 久久久久久久成人| 午夜69成人做爰视频| 欧美hentaied在线观看| 亚洲午夜性刺激影院| 国产精品无码电影| 国产成人福利av| 日韩一区二区中文字幕| 国内av一区二区| 亚洲精品成人一区| 欧美日韩国产色站一区二区三区| 麻豆中文字幕在线观看| 97电影在线看视频| 激情成人综合网| 国产免费一区二区三区在线能观看| 免费av网站在线| 久久激情中文| 国产精品爱久久久久久久| 亚洲 欧美 中文字幕| 男人的天堂亚洲| 国产福利视频一区二区| 91porny九色| 全国精品久久少妇| 国产精品视频久| 国产精品毛片久久久久久久av| 青青草国产成人av片免费| 国产精品美女在线| 中文字幕有码视频| 韩国精品一区二区| 91久色国产| 欧美一级在线免费观看| 26uuu另类欧美亚洲曰本| 欧美成人aa大片| 99国精产品一二二线| 亚洲av无码乱码国产麻豆| 国产精品99久久不卡二区| 999热视频| 无码国产伦一区二区三区视频| 丁香婷婷综合色啪| 欧美一区第一页| 欧美a视频在线观看| 男女性色大片免费观看一区二区| 国产欧美一区二区白浆黑人| 国产高清免费在线观看| 97精品国产97久久久久久久久久久久 | 一本色道久久综合亚洲精品婷婷| 黄网页免费在线观看| 有坂深雪av一区二区精品| heyzo亚洲| 日韩成人免费av| 欧美变态tickle挠乳网站| 日本一区二区三区网站| 91视频综合| 久久久人成影片一区二区三区| 日本中文字幕久久| 国产精品91一区二区| 国产亚洲精品美女久久久m| 中文字幕欧美人妻精品| 激情丁香综合五月| 久久国产手机看片| 日本在线免费看| 欧美激情综合网| 台湾无码一区二区| 日本欧美不卡| 精品国内片67194| 东京热无码av男人的天堂| 好看的日韩av电影| 国产精品免费电影| 天堂在线一二区| 不卡一区二区三区四区| 香蕉久久免费影视| www.youjizz.com在线| 欧美剧情片在线观看| 久久国产精品影院| 欧美激情视频一区二区三区免费| 日本亚洲欧洲色α| 黄色一级大片在线免费看国产一| 国产精品免费av| 欧美在线观看成人| 国产精品白浆| 久久久成人精品视频| 人人爽人人爽人人片av| 99久久综合99久久综合网站| 国产a级片免费看| 日韩高清不卡| 亚洲性夜色噜噜噜7777| 91av在线免费视频| 成人免费视频视频在线观看免费| 中文字幕中文字幕99| 欧美精品总汇| 精品亚洲一区二区三区在线观看 | 国产视频三级在线观看播放| 亚洲高清中文字幕| 最好看的中文字幕| 偷偷www综合久久久久久久| 国产精品黄视频| 黄上黄在线观看| 色伊人久久综合中文字幕| 亚洲无人区码一码二码三码| 黑丝一区二区三区| 亚洲自拍小视频免费观看| 久cao在线| 欧美妇女性影城| 性生交大片免费全黄| 美日韩一区二区| 亚洲va韩国va欧美va精四季| 日韩中文影院| 在线观看精品国产视频| 中国女人一级一次看片| 国产精品丝袜一区| 国产亚洲视频一区| 99久久婷婷这里只有精品| 国产日韩精品在线播放| 免费高清完整在线观看| 欧美一区二区播放| 欧美国产精品一二三| 国产久卡久卡久卡久卡视频精品| 红桃一区二区三区| 国产劲爆久久| 97在线看福利| 国产免费视频在线| 精品视频资源站| 五月天激情丁香| 亚洲免费成人| 精品国产免费人成电影在线观...| 国产精品久久一区二区三区不卡| 色综合久久综合网97色综合 | 精品人妻无码一区二区三区蜜桃一| 中文字幕亚洲一区二区va在线| 亚洲涩涩在线观看| 你懂的国产精品永久在线| 成人黄视频免费| 夜鲁夜鲁夜鲁视频在线播放| 一区二区成人精品| 国产模特av私拍大尺度| 一个色综合av| 精品少妇人妻一区二区黑料社区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产123在线| 国产综合色产在线精品| 日韩黄色短视频| 精品成av人一区二区三区| 成人激情在线观看| 国产精品186在线观看在线播放| 日韩av影院在线观看| 羞羞色院91蜜桃| 一区二区三区高清| 蜜桃无码一区二区三区| 激情六月婷婷综合| 国产日韩一区二区在线| av中文一区| 动漫3d精品一区二区三区 | 色欧美片视频在线观看| 性生交大片免费全黄| 91在线精品一区二区三区| 亚洲人视频在线| 亚洲高清资源| 亚洲高清资源综合久久精品| 国偷自产av一区二区三区| 国产精品一区=区| 国产精品xx| 久久久国产精品免费| 飘雪影院手机免费高清版在线观看| 欧美久久高跟鞋激| 精品国产一区二区三区四| 国产精品乱码一区二区三区软件| 免费福利视频一区二区三区| 久草综合在线| 欧美超碰在线| 日韩欧美综合| 亚洲第一福利网| 正在播放亚洲精品| 午夜私人影院久久久久| 青青草成人免费视频| www.4hu95.com四虎| 深夜福利网站在线观看| 日韩欧美中文字幕电影| 国产精品日韩在线观看| 亚洲色图日韩精品| www.国产com| 九色综合狠狠综合久久| 日韩 欧美 视频| 99久久夜色精品国产亚洲96| 国产精品一区二区免费| 亚洲av综合色区| 国产亚洲精品女人久久久久久| 粉嫩久久99精品久久久久久夜| 午夜宅男在线视频| baoyu135国产精品免费| 粉嫩av一区二区三区在线播放 | 精品国产不卡一区二区| 亚洲国产欧美在线成人app| 激情五月少妇a| 国产精品视频九色porn| 日本高清www| 成人性生交大片| 美国av一区二区三区| 中文字幕乱码免费| 亚洲一区二区视频在线播放| 激情伊人五月天久久综合| 人妻熟女一二三区夜夜爱| 亚洲另类黄色| 乱人伦xxxx国语对白| 欧美另类专区| 人人妻人人澡人人爽欧美一区双 | 丝袜诱惑一区二区| 国产精品久久久久久户外露出| 国偷自产av一区二区三区麻豆| 精品在线视频一区| 日本久久久久久久久久久久| 久久久成人网| 99视频在线免费| 日韩精品亚洲一区| 久久亚裔精品欧美| 成人免费在线网| 第一次破处视频| 性人久久久久| 九色91视频| 国产精品男女| 久久精品欧美| 国产欧美日韩精品一区二区免费 | 国产精品12p| 成人高潮视频| 国产伦精品一区二区三区视频免费| 97久久综合精品久久久综合| 国产精品一区二区a| 欧美调教视频| 久久综合色一本| 日本在线电影一区二区三区| 欧洲精品久久| 国产综合动作在线观看| 欧美精品色哟哟| 国产精品理论片在线观看| 欧美激情视频二区| 中文字幕一区二区三区乱码在线 | 国产又黄又猛的视频| 狠狠色丁香久久婷婷综合丁香| 亚洲热在线视频| 华人av在线| 风间由美一区二区三区在线观看| 日本成人在线免费视频| 热久久一区二区| 日本高清免费观看| 99久久婷婷国产综合精品电影| 女女互磨互喷水高潮les呻吟| 久久嫩草精品久久久精品一| 成人性视频免费看| 一区二区三区不卡视频在线观看| 日本三级一区二区| 欧洲在线/亚洲| 性生活黄色大片| 亚洲欧洲在线观看| 97超碰资源站在线观看| 欧美亚洲在线播放| 91成人在线网站| 久久久久免费网| 女生裸体视频一区二区三区| 能看的毛片网站| 国产精品99久久久久久似苏梦涵| aa一级黄色片| 一区二区三区中文在线| 久久夜色精品国产噜噜亚洲av| 欧美一区二区啪啪| 国产三级在线观看| 久久久亚洲精选| 日本免费在线一区| 蜜桃传媒一区二区| 欧美午夜精品| 欧美成人福利在线观看| 99视频有精品| 一区二区在线观看免费视频| 国产精品毛片高清在线完整版| 欧美—级a级欧美特级ar全黄| 亚洲av综合一区| 日韩欧美卡一卡二| 国产高清免费在线播放| 性金发美女69hd大尺寸| 久久久久久亚洲精品美女| 日韩亚洲视频| 99热在线精品观看| 精品国偷自产在线视频99| 99免费观看视频| 国产成人aaaa| 中文字幕乱码av| 欧美视频一区在线| 五月婷婷综合久久| 国模吧一区二区| 亚洲av无码专区在线播放中文| 四虎精品在线观看| 99re国产| 久久精品影视| 欧美精品成人网| 99精品国产热久久91蜜凸| 精品处破女学生| 日韩视频国产视频| 精品黄色免费中文电影在线播放| 国产精品久久久久久久久久三级| 台湾佬综合网| 国产日产欧美视频| 91丨九色丨尤物| 久久久久免费看| 亚洲国产91视频| 色婷婷av一区| 在线观看免费视频a| 在线电影av不卡网址| 三上悠亚国产精品一区二区三区| 欧美精品一区二区三区在线四季 | 欧美孕妇性xxxⅹ精品hd| 欧美日韩在线一区二区| 欧美一区二区在线| 国产精品视频一区二区三区| 一区二区三区不卡在线| 另类小说综合欧美亚洲| 嘿嘿视频在线观看| 欧美日韩免费一区二区三区视频| 天天影视久久综合| 91精品在线播放| 欧美午夜国产| 亚洲国产综合视频| 欧美天天综合色影久久精品| 国产天堂在线| 国产精品偷伦视频免费观看国产| 欧美国产偷国产精品三区| www.五月天色| 亚洲一二三四区| 天堂a√中文在线| 国产精品久久一区主播| 久久久五月天| 日本一区二区在线免费观看| 色综合久久综合中文综合网| 色影院视频在线| 不卡视频一区二区| 国产毛片一区| 国产人与禽zoz0性伦| 日韩欧美在线网站| 美女91在线看| 日本一区二区三区视频免费看| 九九精品视频在线看| 国产亚洲欧美久久久久| 亚洲人成五月天| 国产精品一区二区三区四区在线观看| 777av视频| 国产精品女主播av| 色婷婷av一区二区三| 国产精品吴梦梦| 亚洲高清资源| 中文国语毛片高清视频| 亚洲精品乱码久久久久久按摩观| 97人人做人人爽香蕉精品| 成人午夜视频免费观看| 91网站视频在线观看| 国产色在线视频| 日本免费久久高清视频| 自拍偷拍欧美| 蜜桃无码一区二区三区| 欧美成人伊人久久综合网| 中文字幕av一区二区三区佐山爱| 国产91porn| 国产欧美日韩精品一区| 黄色av网站免费在线观看|