古詩詞大全網 - 個性簽名 - android apk包含android基礎類庫嗎?

android apk包含android基礎類庫嗎?

流程概述:

1.打包資源文件以生成R.java文件。

2.處理aidl文件並生成相應的java文件。

3.編譯工程源代碼,生成相應的類文件。

4.轉換所有類文件以生成classes.dex文件。

5、打包生成apk。

6.簽署apk文件。

7.處理簽名的apk文件。

包裝過程中使用的工具

名字

操作系統路徑中的函數介紹源代碼路徑。

american association of physics teachers 美國物理教師協會

(安卓資產包工具)

Android資源打包工具

$ { ANDROID _ SDK _ HOME }/build-tools/

ANDROID_VERSION/aapt

框架\基礎\工具\aap

aidl

(android界面定義語言)

Android界面描述語言,

將aidl轉換成。java文件

$ { ANDROID _ SDK _ HOME }/build-tools/

ANDROID_VERSION/aidl

框架\基礎\工具\aidl

javacJava編譯器

${JDK主頁}/java

c或/usr/bin/javac

DEXEDRINE的簡稱

轉換。到Davik虛擬機的類文件

可識別。dex文件

$ { ANDROID _ SDK _ HOME }/build-tools/

ANDROID_VERSION/dx

apkbuilder

生成apk數據包

${ANDROID_SDK_HOME}/tools/

apkbuilder

sdk\sdkmanager\libs\sdklib\

src\com\android\sdklib\build\

ApkBuilderMain.java

jarsigner.jar文件的簽名工具是$ {JDK _ home}/jarsigner或/usr/bin/jarsigner。

Zipalign字節碼對齊工具

${ ANDROID _ SDK _ HOME }/工具

/zipalign

步驟1:打包資源文件並生成R.java文件。

輸入資源文件(即項目中res中的文件)、資產文件(相當於另壹個資源,不像res中的文件那樣被Android系統優化)、AndroidManifest.xml文件(從這裏讀取包名,因為需要生成R.java文件)、Android基礎類庫(Android.jar文件)。

工具aapt工具

輸出打包的資源(bin目錄下的resources.ap_ file)和R.java文件(gen目錄下)。

Aapt,壹個打包資源的工具,大部分文本格式的XML資源文件會被編譯成二進制格式的XML資源文件,除了在APK打包的資產和res/raw資源之外,其他所有資源都會被編譯或處理。。

生成過程主要調用aapt源目錄下Resource.cpp文件中的buildResource()函數。這個函數首先檢查AndroidManifest.xml的合法性,然後處理res目錄下的資源子目錄。被處理的函數是makeFileResource(),它包括資源文件名的合法性檢查。向資源表添加條目等。處理完成後,調用compileResourceFile()函數來編譯res和asserts目錄中的資源,並生成resources.arsc文件。compileResourceFile()函數位於aapt源目錄的ResourceTable.cpp文件中。最後這個函數會調用parseAndAddEntry()函數生成R.java文件,然後調用compileXmlfile()函數編譯res目錄子目錄下的xml文件,這樣處理後的xml文件就是簡單的“加密”了。最後,將所有的資源、編譯後的resorces.arsc文件和“加密”的AndroidManifest.xml文件打包並壓縮到resources.ap_ file中(用Ant工具命令行編譯將生成壹個ap_ file,其名稱與build.xml中“項目名稱”指定的屬性相同)。

關於這壹步更詳細的過程,請閱讀. Android . SDK lib . build . apkbuilderman類。其代碼實現位於android系統源代碼的SDK \ SDK manager \ libs \ sdkblib \ src \ com \ Android \ sdkblib \ build \ ApkBuilder.java文件中。代碼構造壹個apkbuilder類,然後基於包含resources.arsc的文件生成壹個apk文件,這個文件通常以ap_結尾,然後調用addSourceFolder()函數添加工程資源,addSourceFolder()會調用processFileForResource()函數向apk文件添加資源,apk文件包括res目錄和asserts目錄下的文件。添加資源後,調用addResourceFromJar()函數將依賴庫寫入Apk文件,然後調用addNativeLibraries()函數在項目libs目錄下添加原生庫(android NDK編譯的so或bin文件),最後調用sealApk()關閉apk文件。

第六步:簽署apk文件。

輸入無符號。apk文件。

工具jarsigner

輸出帶符號的。apk文件

android應用程序需要經過簽名才能安裝在Android設備上。apk文件的簽名方式有兩種:壹種是調試程序時簽名,用eclipse開發android程序時,編譯調試程序時會使用壹個debug.keystore來簽名apk;另壹種是在程序打包發布時簽名。在這種情況下,妳需要提供壹個符合android開發文檔中要求的簽名文件。簽名也有兩種方式:壹種是用jdk中提供的jarsigner工具進行簽名;另壹種是使用android源代碼中提供的signapk工具,其代碼位於android系統源代碼的build\tools\signapk目錄下。

步驟7:對齊簽名的apk文件。

輸入簽名。apk文件。

工具拉鏈對齊工具

輸出對齊的。apk文件。

這壹步要用到的工具是zipalign,位於android-sdk\tools目錄下,源代碼位於android系統源代碼的build\tools\zipalign目錄下。它的主要工作是對齊spk包,以便spk包中的所有資源文件都從文件的開頭偏移4個字節的整數倍。這樣通過內存映射訪問apk文件會更快。驗證apk文件是否對齊的工作由ZipAlign.cpp文件的verify()函數完成,處理對齊的工作由process()函數完成。

以具體項目包含的具體文件為例繪制如下: