流程圖: 我們重點關心的是(1)這個過程的輸入是什麼?(2)這個過程的輸出是什麼?(3)這個過程使用了什麼工具?至於使用什麼參數,可以自己去看對應命令的幫助文件,或者在網上搜索,這不是本文的重點。 aapt-> aidl -> javac-> dx(dex)-> apkbuilder-> jarsi ...
流程圖:
![](file:///C:/Users/82328/AppData/Local/YNote/data/823282324@qq.com/e237df57646f4b1bbb33e872a9662c46/clipboard.png)
![](http://images2015.cnblogs.com/blog/217990/201702/217990-20170219155424582-264022190.png)
![](file:///C:/Users/82328/AppData/Local/YNote/data/823282324@qq.com/4e0f98b4f3aa4bfa8a2e87e7fe4688f2/clipboard.png)
名稱 | 功能介紹 | 在操作系統中的路徑 |
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/dx |
apkbuilder | 生成apk包 | ${ANDROID_SDK_HOME}/tools/opkbuilder |
jarsigner | .jar文件的簽名工具 | ${JDK_HOME}/jarsigner或/usr/bin/jarsigner |
zipalign | 位元組碼對齊工具 | ${ANDROID_SDK_HOME}/tools/zipalign |
- -d one or more device assets to include, separated by commas
- -f force overwrite of existing files
- -g specify a pixel tolerance to force images to grayscale, default 0
- -j specify a jar or zip file containing classes to include
- -k junk path of file(s) added
- -m make package directories under location specified by -J
- -u update existing packages (add new, replace older, remove deleted files)
- -v verbose output
- -x create extending (non-application) resource IDs
- -z require localization of resource attributes marked with
- localization="suggested"
- -A additional directory in which to find raw asset files
- -G A file to output proguard options into.
- -F specify the apk file to output
- -I add an existing package to base include set
- -J specify where to output R.java resource constant definitions
- -M specify full path to AndroidManifest.xml to include in zip
- -P specify where to output public resource definitions
- -S directory in which to find resources. Multiple directories will be scann
![](http://images2015.cnblogs.com/blog/217990/201702/217990-20170219155616613-1242069411.png)
![](file:///C:/Users/82328/AppData/Local/YNote/data/823282324@qq.com/1a10b04a98434f1099765bac8046e9ff/clipboard.png)
- -I<DIR> search path for import statements.
- -d<FILE> generate dependency file.
- -p<FILE> file created by --preprocess to import.
- -o<FOLDER> base output folder for generated files.
- -b fail when trying to compile a parcelable.
- 值得註意的是:這個工具的參數與參數值之間不能有空格,Google也有對工資不滿意的工程師!
![](file:///C:/Users/82328/AppData/Local/YNote/data/823282324@qq.com/af1fff9bad8b446f9bcc91e82be2cb6d/clipboard.png)
![](http://images2015.cnblogs.com/blog/217990/201702/217990-20170219155626660-2143563246.png)
- 其中,可能的選項包括:
- -g 生成所有調試信息
- -g:none 不生成任何調試信息
- -g:{lines,vars,source} 只生成某些調試信息
- -nowarn 不生成任何警告
- -verbose 輸出有關編譯器正在執行的操作的消息
- -deprecation 輸出使用已過時的 API 的源位置
- -classpath <路徑> 指定查找用戶類文件和註釋處理程式的位置
- -cp <路徑> 指定查找用戶類文件和註釋處理程式的位置
- -sourcepath <路徑> 指定查找輸入源文件的位置
- -bootclasspath <路徑> 覆蓋引導類文件的位置
- -extdirs <目錄> 覆蓋安裝的擴展目錄的位置
- -endorseddirs <目錄> 覆蓋簽名的標準路徑的位置
- -proc:{none,only} 控制是否執行註釋處理和/或編譯。
- -processor <class1>[,<class2>,<class3>...]要運行的註釋處理程式的名稱;繞過預設的搜索進程
- -processorpath <路徑> 指定查找註釋處理程式的位置
- -d <目錄> 指定存放生成的類文件的位置
- -s <目錄> 指定存放生成的源文件的位置
- -implicit:{none,class} 指定是否為隱式引用文件生成類文件
- -encoding <編碼> 指定源文件使用的字元編碼
- -source <版本> 提供與指定版本的源相容性
- -target <版本> 生成特定 VM 版本的類文件
- -version 版本信息
- -help 輸出標準選項的提要
- -Akey[=value] 傳遞給註釋處理程式的選項
- -X 輸出非標準選項的提要
- -J<標誌> 直接將 <標誌> 傳遞給運行時系統
![](file:///C:/Users/82328/AppData/Local/YNote/data/823282324@qq.com/d2dd3f5c7f42489e898e72628fe8471a/clipboard.png)
![](http://images2015.cnblogs.com/blog/217990/201702/217990-20170219155642238-1124177882.png)
- -v Verbose.
- -d Debug Mode: Includes debug files in the APK file.
- -u Creates an unsigned package.
- -storetype Forces the KeyStore type. If ommited the default is used.
- -z Followed by the path to a zip archive.
- Adds the content of the application package.
- -f Followed by the path to a file.
- Adds the file to the application package.
- -rf Followed by the path to a source folder.
- Adds the java resources found in that folder to the application
- package, while keeping their path relative to the source folder.
- -rj Followed by the path to a jar file or a folder containing
- jar files.
- Adds the java resources found in the jar file(s) to the application
- package.
- -nf Followed by the root folder containing native libraries to
- include in the application package.<span style="color: rgb(0, 0, 255); font-family: 楷體; line-height: 20px;font-size:18px; ">I:最後一步,通過jarsigner命令用證書文件對未簽名的APK文件進行簽名</span>
- 用法:jarsigner [選項] jar 文件別名
- jarsigner -verify [選項] jar 文件
- [-keystore <url>] 密鑰庫位置
- [-storepass <口令>] 用於密鑰庫完整性的口令
- [-storetype <類型>] 密鑰庫類型
- [-keypass <口令>] 專用密鑰的口令(如果不同)
- [-sigfile <文件>] .SF/.DSA 文件的名稱
- [-signedjar <文件>] 已簽名的 JAR 文件的名稱
- [-digestalg <演算法>] 摘要演算法的名稱
- [-sigalg <演算法>] 簽名演算法的名稱
- [-verify] 驗證已簽名的 JAR 文件
- [-verbose] 簽名/驗證時輸出詳細信息
- [-certs] 輸出詳細信息和驗證時顯示證書
- [-tsa <url>] 時間戳機構的位置
- [-tsacert <別名>] 時間戳機構的公共密鑰證書
- [-altsigner <類>] 替代的簽名機制的類名
- [-altsignerpath <路徑列表>] 替代的簽名機制的位置
- [-internalsf] 在簽名塊內包含 .SF 文件
- [-sectionsonly] 不計算整個清單的散列
- [-protected] 密鑰庫已保護驗證路徑
- [-providerName <名稱>] 提供者名稱
- [-providerClass <類> 加密服務提供者的名稱
- [-providerArg <參數>]] ... 主類文件和構造函數參數
![](file:///C:/Users/82328/AppData/Local/YNote/data/823282324@qq.com/e237df57646f4b1bbb33e872a9662c46/clipboard.png)