Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android apk打包過程

Android apk打包過程

編輯:關於Android編程

概述

android打包過程,下面這張圖取自Android開發權威指南,非常清晰。

\

整個過程使用的工具有

 

名稱 功能介紹 在操作系統中的路徑 aapt Android資源打包工具 ${ANDROID_SDK_HOME}/platform-tools/appt aidl Android接口描述語言轉化為.java文件的工具 ${ANDROID_SDK_HOME}/platform-tools/aidl javac Java Compiler ${JDK_HOME}/javac或/usr/bin/javac dex 轉化.class文件為Davik VM能識別的.dex文件 ${ANDROID_SDK_HOME}/platform-tools/dex apkbuilder 生成apk包 ${ANDROID_SDK_HOME}/tools/apkbuilder jarsigner .jar文件的簽名工具 ${JDK_HOME}/jarsigner或/usr/bin/jarsigner zipalign 字節碼對齊工具 ${ANDROID_SDK_HOME}/tools/zipalign

 

 

使用aapt生成R文件

例如:aapt l <你的apk文件>,這個命令就是查看apk內容
permissions 打印app包的權限
resources 打印資源表
configurations 打印配置信息
xmltree 打印制定的xml信息
xmlstrings 打印制定字符串
[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] /
[--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] /
[--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] /
[--rename-manifest-package PACKAGE] /
[--rename-instrumentation-target-package PACKAGE] /
[--utf16] [--auto-add-overlay] /
[--max-res-version VAL] /
[-I base-package [-I base-package ...]] /
[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] /
[-S resource-sources [-S resource-sources ...]] [-F apk-file] [-J R-file-dir] /

[--product product1,product2,...] /

[raw-files-dir [raw-files-dir] ...]

使用javac命令編譯java源碼

java [options] [sourcefiles] [@files]
其中:
options:命令行選項;
sourcefiles:一個或多個要編譯的源文件;
@files:一個或多個對源文件進行列表的文件,有時候要編譯的文件很多,一個個敲命令會顯得很長,也不方便修改,可以把要編譯的源文件列在文件中,在文件名前加@,這樣就可以對多個文件進行編譯,對編譯一個工程很有用,方便,省事。
有幾個比較重要的選項:
-d 用於指定編譯成的class文件的存放位置,缺省情況下不指定class文件的存放目錄,編譯的class文件將和源文件在同一目錄下;
-classpath 可以簡寫成-cp,用於搜索編譯所需的class文件,指出編譯所用到的class文件的位置,如jar、zip或者其他包含class文件的目錄,指定該選項會覆蓋CLASSPATH的設定;
-sourcepath用於搜索編譯所需的源文件(即java文件),指定要搜索的源文件的位置,如jar、zip或其他包含java文件的目錄;
需要注意windows下和linux下文件路徑分隔符和文件列表(即-classpath和-sourcepath指定的文件)分隔符的區別:
windows下文件路徑分隔符用 \ ,文件列表分隔符用分號 ;
linux下文件路徑分隔符用 / ,文件列表分隔符用冒號 :

 

下面我們來一步一步的分析一下。

aapt的用法有:

 

1. 列出apk包的內容

aapt l[ist] [-v] [-a] file.{zip,jar,apk}

-v 以table形式列出來

-a 詳細列出內容

2. 查看apk一些信息

aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]

badging 打印app包的label和icon

例如:aapt d permissions , 這個就是顯示這個apk所具有的權限

3. 編譯Android資源

aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] /

這個比較復雜,只解釋幾個關鍵參數。

-f 如果編譯出來的文件已經存在,強制覆蓋。

-m 使生成的包的目錄放在-J參數指定的目錄。

-J 指定生成的R.java的輸出目錄

-S res文件夾路徑

-A assert文件夾的路徑

-M AndroidManifest.xml的路徑

-I 某個版本平台的android.jar的路徑

-F 具體指定apk文件的輸出

例如:

1). 將工程的資源編譯R.java文件

aapt package -m -J -S -I -M

2). 將工程的資源編譯編譯到一個包裡

aapt package -f -S -I -A -M -F <輸出的包目錄>

4. 打包好的apk中移除文件

aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]

例如:aapt r <你的apk文件> AndroidManifest.xml, 這個就是將apk中的AndroidManifest移除掉

5. 添加文件到打包好的apk中

aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]

例如:aapt a <你的apk文件> <要添加的文件路徑>, 這個就是將文件添加到打包好的apk文件中

6. 顯示aapt的版本

aapt v[ersion]

例如:aapt v, 就是打印這個結果 Android Asset Packaging Tool, v0.2

javac 用於編譯Java文件,格式為:

使用Dex工具將class文件打包成dex文件

dx --dex [--debug] [--verbose] [--positions=
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved