JDK安裝
AndroidStudio安裝
? ? ? ? 默認sdk路徑
????????????????C:\Users\Administrator\AppData\Local\Android\Sdk
? ? ? ? 將platform-tools所在的目錄添加到path
????????????????C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools
? ? ? ? ? ? ? ? 主要目的是使用該目錄下的adb等命令
????????將tools所在的目錄添加到path
? ? ? ? ? ???????C:\Users\Administrator\AppData\Local\Android\Sdk\tools
? ? ? ? NDK根目錄添加到path
? ? ? ? ? ? ? ? 檢驗是否添加成功
? ? ? ? ? ? ? ? ? ? ? ? ndk-build
MT管理器
? ? ? ? 功能:
? ? ? ? ? ? ? ? 查看Android系統目錄結構
? ? ? ? ? ? ? ? 查看apk的加固方式,以及簽名版本等信息
????????????????????????
Android killer
? ? ? ? 替換apktool
? ? ? ? 案例:
? ? ? ? ? ? ? ? 更改應用的名稱和icon
? ? ? ? ? ? ? ? ? ? ? ? killer內置的文本搜索工具不好用,對于名稱和icon的更改,可自動化
? ? ? ? ? ? ? ? ? ? ? ? 自動化icon步驟
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.指定AndroidManifest.xml的路徑
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.更改icon的名稱
????????????????????????????????????????? <application ?android:icon="@drawable/jrlogo"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.將icon所對應的圖片添加到如下目錄
????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? 自動化名稱步驟
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.確定AndroidManifest.xml中名字對應的字符串叫什么
???????????????????????????????????????<application??android:label="@string/tudou_app_name"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.在values/strings.xml中搜索相應的字符串,找到后將其替換
????????????????????????????????????????<string name="tudou_app_name">土豆視頻1</string>
? ? ? ? ? ? ? ? 去除開屏廣告界面
? ? ? ? ? ? ? ? ? ? ? ? 1.用adb判斷目標app啟動時,開屏廣告界面所對應的Activity名稱
? ? ? ? ? ? ? ? ? ? ? ? 2.在AndroidManifest.xml中將該Activity的launcher屬性去除
????????????????????????
? ? ? ? ? ? ? ? ? ?
APK的目錄結構
????????
APK的打包流程
????????
apk的安裝流程
????????
虛擬機
? ? ? ? 有三種虛擬機,分別為:java虛擬機,dalvik虛擬機,art虛擬機
????????
odex和aot的區別
ODEX(Optimized DEX)
- 定義:ODEX是優化過的DEX文件,即將APK中的classes.dex文件通過dex優化過程生成的優化文件。DEX文件是Android應用程序的編譯產物,包含了應用程序的可執行代碼。
- 用途:ODEX文件用于加快軟件的啟動速度,減少對RAM的占用。在Android 5.0之前,APK安裝時會進行DEX文件的驗證和優化,生成ODEX文件。運行APK時,直接加載ODEX文件,避免了重復驗證和優化,從而提高了響應速度。
OAT(Optimized Android Runtime)
- 定義:OAT是ART(Android Runtime)虛擬機運行的文件,是ELF格式的二進制文件,包含了DEX文件和編譯出的本地機器指令。
- 用途:從Android 5.0開始,系統引入了ART運行時環境,取代了之前的Dalvik虛擬機。ART在安裝應用時會進行預編譯,將DEX文件轉換成OAT文件,這些文件包含了編譯后的機器碼,因此可以直接由處理器執行,無需在應用運行時再進行即時編譯(JIT),從而提高了應用的運行效率。
二、生成與存儲
ODEX
- 生成:在Android 5.0之前的版本中,APK安裝時通過dexopt工具生成ODEX文件。dexopt會對DEX文件進行優化,并生成包含優化結果的ODEX文件。
- 存儲:ODEX文件通常存儲在
/data/dalvik-cache
目錄下,與APK文件分開存儲。
OAT
- 生成:在Android 5.0及以后的版本中,APK安裝時通過dex2oat工具將DEX文件編譯成OAT文件。dex2oat負責將DEX字節碼轉換成特定于處理器的機器碼。
- 存儲:OAT文件同樣存儲在
/data/dalvik-cache
目錄下,但格式和內容與ODEX文件不同。
三、文件格式與性能
文件格式
- ODEX:雖然ODEX文件是優化過的DEX文件,但其本質上仍然是DEX格式的一種變體。它包含了經過優化的DEX代碼和一些額外的元數據。
- OAT:OAT文件是ELF格式的二進制文件,包含了DEX代碼和編譯后的本地機器指令。與ODEX相比,OAT文件的結構更加復雜,但執行效率更高。
性能
- ODEX:雖然ODEX文件加快了軟件的啟動速度,但在運行時仍需要JIT編譯器將DEX字節碼轉換成機器碼才能執行。
- OAT:OAT文件包含了編譯后的機器碼,因此可以直接由處理器執行,無需JIT編譯過程。這使得應用的運行效率更高,響應速度更快。
綜上所述,ODEX和OAT在Android系統中扮演著不同的角色,它們之間的區別主要體現在定義與用途、生成與存儲以及文件格式與性能等方面。隨著Android系統的發展,ART運行時環境和OAT文件逐漸成為主流趨勢。