精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

粉嫩虎白女毛片人体| 色婷婷av一区二区三区在线观看| 麻豆传媒一区| 波多野结衣黄色网址| 久久久国产精品| 欧美草草影院在线视频| 久久久久久久久久久久久久国产| 人妻中文字幕一区| 日本女人一区二区三区| 在线观看亚洲视频| 三上悠亚 电影| 日韩伦理三区| 亚洲一区二区三区四区的| 欧美日韩国产三区| 99久久精品无免国产免费| 国产精品亚洲综合色区韩国| 日韩中文字幕欧美| 少妇饥渴放荡91麻豆| 国产传媒在线观看| 中文欧美字幕免费| 国产三区精品| 黄色片网站在线免费观看| 久久国产电影| 亚洲男子天堂网| av在线天堂网| 一区二区三区无毛| 日韩欧美精品中文字幕| 青青在线视频免费观看| 婷婷免费在线视频| 久久婷婷色综合| 国产精品久久久久久久久免费 | 9999热视频| 国产亚洲一区| 91精品中文字幕一区二区三区| 8x8x华人在线| 日日夜夜精品一区| 国产三级三级三级精品8ⅰ区| 国产中文日韩欧美| 波多野结衣家庭主妇| 久久久久国产精品一区三寸| 97香蕉久久超级碰碰高清版| 欧美偷拍一区二区三区| 香蕉久久精品| 欧美巨大另类极品videosbest | 99热99精品| 国产精品亚洲片夜色在线| 亚洲熟女毛茸茸| 国产一区二区主播在线| 色综合网站在线| 日韩av黄色网址| 午夜激情电影在线播放| 婷婷久久综合九色国产成人 | 国产97免费视| 九九九在线观看| 国产精品美女久久久浪潮软件| 在线观看日韩av| 高清国产在线观看| 国产精品美女在线观看直播| 精品视频在线看| 久久久久国产一区| 在线欧美激情| 日韩亚洲欧美成人一区| 日本中文字幕精品| 国产精品15p| 精品无人国产偷自产在线| 国产精品亚洲无码| 97精品视频| 欧美裸体xxxx极品少妇| 69精品无码成人久久久久久| 高潮按摩久久久久久av免费| 亚洲高清久久网| 白丝女仆被免费网站| av一区二区在线观看| 精品国产一区二区三区在线观看 | 波多野结衣xxxx| 日韩成人综合网站| 精品久久久久久亚洲综合网| 毛茸茸free性熟hd| 国产一区二区三区站长工具| 色偷偷噜噜噜亚洲男人的天堂| 9.1成人看片免费版| 国产精品一区二区中文字幕| 日韩精品高清在线| 中文字幕永久免费| 亚洲盗摄视频| 日韩有码片在线观看| 久久久久亚洲av无码专区体验| 日韩精品一卡| 欧美巨乳美女视频| 黄色一级片免费看| 美女视频一区在线观看| 91免费欧美精品| 国产一区二区三区成人| 成人中文字幕合集| 日本精品二区| 国产三级电影在线| 亚洲尤物视频在线| 九九热在线免费| 午夜日韩影院| 日韩欧美aaaaaa| 在线免费观看麻豆| 午夜久久影院| 国产精品对白刺激| 伊人久久一区二区| 成人黄色小视频在线观看| 日韩欧美一区二区三区四区五区 | 国产精品一二二区| 久久精品一区二区三区不卡免费视频 | 极品少妇一区二区三区| 欧美激情视频网址| 在线观看免费观看在线| 91在线国产观看| 婷婷视频在线播放| free欧美| 欧美精三区欧美精三区| 丰满少妇在线观看资源站| 一区二区电影| 国产精品亚洲综合天堂夜夜| 青青久在线视频免费观看| 夜夜精品浪潮av一区二区三区| 免费毛片网站在线观看| 99tv成人影院| 伊人久久久久久久久久久久久| 亚洲欧美综合7777色婷婷| 亚洲免费中文| 国产视频一区二区不卡| 性欧美ⅴideo另类hd| 欧美日韩大陆一区二区| 亚洲午夜精品久久久久久高潮| 香蕉视频官网在线观看日本一区二区| 美女av一区二区| 亚洲专区在线播放| 中文字幕久久午夜不卡| 手机看片福利盒子久久| 亚洲成a人片77777在线播放 | 国产盗摄精品一区二区酒店| 欧美喷水一区二区| 国产1区2区在线观看| 国产九九精品| 久久av二区| 交100部在线观看| 亚洲国内高清视频| 天海翼一区二区| 26uuu精品一区二区| 你真棒插曲来救救我在线观看| 春暖花开亚洲一区二区三区| 日韩视频免费观看高清在线视频| 日本黄色特级片| 中文久久精品| 欧美大香线蕉线伊人久久| 亚洲国产福利| 亚洲天天在线日亚洲洲精| 波多野结衣mp4| 中文成人av在线| 亚洲精品综合在线观看| 欧美福利在线| eeuss一区二区三区| 不卡的av影片| 日韩h在线观看| 日韩人妻精品中文字幕| 欧美激情一区在线观看| 激情 小说 亚洲 图片: 伦| 日韩国产一区| 亚洲最大成人免费视频| 国产99re66在线视频| 亚洲国产美女精品久久久久∴| 我要看一级黄色录像| 精品一二线国产| 日韩欧美一区二区三区四区五区| 成av人片在线观看www| 国产偷国产偷亚洲清高网站| 日韩不卡高清视频| 久久久久亚洲蜜桃| 亚洲高清免费在线观看| 亚洲一区二区三区无吗| 国产日韩欧美亚洲一区| 久久久人成影片一区二区三区在哪下载 | 青青草97国产精品麻豆| 亚洲一区二区三区视频| 美女网站在线看| 深夜福利一区二区| 亚洲精品久久久狠狠狠爱| 大伊人狠狠躁夜夜躁av一区| 一级特黄曰皮片视频| 久久精品成人| 欧美日韩一级在线| 日韩成人一级| 成人免费在线网址| 欧美一级鲁丝片| zzijzzij亚洲日本成熟少妇| 日韩一级免费视频| 欧美色图免费看| 国产乡下妇女做爰视频| 国产日韩在线不卡| 一级黄色大片免费看| 老司机久久99久久精品播放免费| 麻豆av一区| 91成人精品观看| 欧美一级视频在线观看| 黄色av免费在线| 日韩电影网在线| 国产一区二区小视频| 精品欧美激情精品一区| 性色av无码久久一区二区三区| 久久精品国产久精国产爱| 丁香花在线影院观看在线播放| 欧美三级电影在线| 欧美影院在线播放| www.久久热.com| 亚洲精品国产福利| 日本天堂网在线| 亚洲午夜精品一区二区三区他趣| 欲求不满的岳中文字幕| 极品少妇一区二区三区精品视频| 天天想你在线观看完整版电影免费| 视频亚洲一区二区| 国产精品一区二区三区免费视频| 顶级网黄在线播放| 在线成人激情视频| 外国精品视频在线观看| 欧洲一区二区av| 成年人午夜视频| 亚洲五码中文字幕| 巨胸大乳www视频免费观看| 国产91精品一区二区麻豆网站| 国产成人a亚洲精v品无码| 综合久久婷婷| 2025韩国大尺度电影| 欧美mv日韩| 先锋影音日韩| av一区二区在线播放| 日韩动漫在线观看| 国际精品欧美精品| 欧美日韩另类综合| 国产videos久久| 日本在线视频不卡| 免费欧美激情| 欧美日韩一区在线播放| 亚洲涩涩av| 亚洲精品免费在线视频| 日韩午夜电影免费看| 成人国产精品av| 亚洲男人在线| 91久久在线观看| 国产亚洲观看| 7777精品伊久久久大香线蕉语言 | 91久久在线播放| 精品国产18久久久久久二百| 欧美一级免费视频| 成人私拍视频| 国产精品久久综合av爱欲tv| yw.尤物在线精品视频| 国产精品免费看久久久香蕉| 国产91欧美| 成人激情春色网| 精品国产伦一区二区三区观看说明 | 一本色道久久综合亚洲精品高清 | 99精品视频免费全部在线| 男人添女人下部高潮视频在观看| 五月天久久777| 中国老女人av| 一区在线观看| 国产精品一区二区免费在线观看| 国产精品99一区二区三区| 欧美一区二区福利| 美女福利一区| 日本精品二区| 国产精品久久久乱弄| 毛片在线视频观看| 国产情侣一区| 国产黄色片免费在线观看| 欧美亚洲一区二区三区| 搡女人真爽免费午夜网站| 激情综合网天天干| 欧美极品jizzhd欧美仙踪林| 久久午夜电影网| 不卡一区二区在线观看| 欧美激情一区不卡| 国产女片a归国片aa| 精品久久久久久亚洲国产300| 久草成人在线视频| 第一福利永久视频精品| 亚洲综合精品在线| 亚洲精品一线二线三线| av在线电影播放| 欧美激情在线狂野欧美精品| 六月婷婷综合| 91久久精品在线| 婷婷亚洲精品| 69精品丰满人妻无码视频a片| 性欧美69xoxoxoxo| 日韩精品 欧美| 亚洲尤物影院| 亚洲av无日韩毛片久久| 99re在线精品| www.超碰在线观看| 日韩欧美国产骚| 99久久精品国产色欲| 亚洲色图激情小说| 啦啦啦中文在线观看日本| 国产精品久久久久久网站| 国产情侣一区二区三区| 激情一区二区三区| 天天综合精品| 黄色国产精品视频| 丁香五精品蜜臀久久久久99网站| 成人啪啪18免费游戏链接| 亚洲国产精品黑人久久久| 精品午夜福利视频| 6080国产精品一区二区| 黄色小视频在线观看| 国外成人在线视频| 精品国模一区二区三区欧美| 婷婷亚洲婷婷综合色香五月| 一区二区91| 大尺度在线观看| 18欧美乱大交hd1984| 久久久精品毛片| 亚洲成人亚洲激情| 4438x成人网全国最大| 国产欧美中文字幕| 国产日产一区| 久草热视频在线观看| 大白屁股一区二区视频| 免费看一级大片| 欧美精品亚洲二区| 女人18毛片一区二区三区| 国产视频精品一区二区三区| 免费av不卡在线观看| 92看片淫黄大片欧美看国产片| 欧美freesex8一10精品| 热久久最新地址| 国产精品夜夜爽| 久草免费在线视频观看| 91精品国产综合久久精品app| 少妇人妻精品一区二区三区| 欧美猛交免费看| 日韩精品一级| 国产精品日韩三级| 国产麻豆精品久久一二三| 欧美 日韩 国产 一区二区三区| 五月婷婷激情综合| 韩国av永久免费| 国产+人+亚洲| 57pao成人永久免费| 中国 免费 av| 国产精品伊人色| 免费在线黄色片| 精品日韩在线一区| h片在线观看视频免费| 国产高清一区二区三区| 手机亚洲手机国产手机日韩| 美女网站视频黄色| www成人在线观看| 免费看一级视频| 伊人久久久久久久久久久| 黄色软件视频在线观看| 久久精品国产一区二区三区不卡| 欧美成人一品| 亚洲精品国产成人av在线| 疯狂蹂躏欧美一区二区精品| 二区三区在线视频| 4388成人网| 日韩国产欧美| 韩国一区二区三区四区| 欧美日韩国产精品一区二区不卡中文 | 国产黄a三级三级三级av在线看 | 久久久999久久久| 中文字幕欧美在线| 国产专区精品| 中国成人在线视频| 国产69精品久久久久777| 成人午夜视频精品一区| 精品国产乱码久久| 中文字幕资源网在线观看免费| 国产精品福利视频| 美女国产精品| 国产午夜精品理论片在线| 精品三级av在线| a级片在线免费观看| 日韩jizzz| 国产91精品精华液一区二区三区| 人妻久久一区二区| 亚洲精品日韩在线| 国产精品一区二区av影院萌芽| 国外成人免费视频| 热久久国产精品| 久久免费视频精品| 一区二区亚洲精品国产| 日韩成人动漫| 亚洲一区二区三区午夜| 理论电影国产精品| 日韩精品――中文字幕| 亚洲精品电影在线观看| **欧美日韩在线| 国产成人黄色片| 一区二区日韩电影| seseavlu视频在线| 久久精品国产99精品国产亚洲性色| 国产精品视频久久一区|