轉[Android]APK打包過程詳解(二)
此博文是引用自:http://jojol-zhou.iteye.com/blog/729254
jojol-zhou給予大家實際使用命令的具體例子,對於想深入研究APK是怎麼打包出來的同學很有幫助,特轉載在此。
【詳細步驟】:
[b]1使用aapt生成R.java類檔案[/b]:
例:
F:\explorer\android-sdk-windows2.2\tools>f:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -m -J F:\explorer\AndroidByread\gen -S res -I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -M AndroidManifest.xml
其中 -f -m -J F:\explorer\AndroidByread\gen 代表按覆蓋的形式在gen目錄下生成帶包路徑的R.java,-S res指定資原始檔 ,-I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar 指定使用的android類,-M AndroidManifest.xml指定程式的配置檔案
aapt Usage:
[img]http://dl.iteye.com/upload/attachment/288313/fb069089-38dc-3b15-b2dc-8c2a9314034f.png[/img]
[b]2使用android SDK提供的aidl.exe把.aidl轉成.java檔案:[/b]
usage: aidl OPTIONS INPUT [OUTPUT]
aidl --preprocess OUTPUT INPUT...
OPTIONS:
-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.
INPUT:
An aidl interface file.
OUTPUT:
The generated interface files.
[b]3第三步 編譯.java類檔案生成class檔案: [/b]
例:F:\explorer\AndroidByread>javac -encoding GB18030 -target 1.5 -bootclasspath F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -d bin src\com\byread\reader\*.java gen\com\byread\reader\R.java
[img]http://dl.iteye.com/upload/attachment/288317/4490f4e0-d409-3ee1-af63-2ccfbb4b2e7e.png[/img]
[b]4使用android SDK提供的dx.bat命令列指令碼生成classes.dex檔案: [/b]
[img]http://dl.iteye.com/upload/attachment/288315/beec491b-c5ed-36bd-a550-bd4d3e5b8142.png[/img]
例:
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\dx.bat --dex --output=F:\explorer\AndroidByread\bin\classes.dex f:\explorer\AndroidByread\bin\classes
其中classes.dex為生成的目標檔案,f:\explorer\AndroidByread\bin\classes為class檔案所在目錄
[b]5使用Android SDK提供的aapt.exe生成資源包檔案(包括res、assets、androidmanifest.xml等)[/b]:
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -F bin\byreadreader
將AndroidManifest.xml,res和assets資料夾中的資原始檔打包生成byreadreader,用法參見1
[b]6第六步 生成未簽名的apk安裝檔案[/b]:
apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file} -rf ${source.dir} -rj ${libraries.dir}
[img]http://dl.iteye.com/upload/attachment/288319/1a49ff1c-abb6-3ca3-b36b-e03ec2186d72.png[/img]
例:
F:\explorer\AndroidByread>f:\explorer\android-sdk-windows2.2\tools\apkbuilder.bat f:\explorer\byreadreader.apk –v -u -z f:\explorer\AndroidByread\bin\byreadreader -f f:\explorer\AndroidByread\bin\class.dex -rf F:\explorer\AndroidByread\src
其中f:\explorer\byreadreader.apk為生成的apk ,-z f:\explorer\AndroidByread\bin\byreadreader為資源包,f:\explorer\AndroidByread\bin\class.dex為類檔案包
[b]7使用jdk的jarsigner對未簽名的包進行apk簽名:[/b]
use jarsigner
jarsigner -keystore ${keystore} -storepass ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}
例如:
F:\explorer\android-sdk-windows2.2\tools>jarsigner –keystore f:\explorer\eclipse3.5\bbyread.keystore -storepass byread002 -keypass byread002 -signedjar f:\explorer\byread.apk f:\explorer\byreadreader.apk byread
其中–keystore f:\explorer\eclipse3.5\bbyread.keystore 為金鑰檔案 -storepass byread002為金鑰檔案密碼 byread 為金鑰別名 -keypass byread002為金鑰別名密碼,-signedjar f:\explorer\byread.apk為簽名後生成的apk檔案 f:\explorer\byreadreader.apk為未簽名的檔案。
參考:http://asantoso.wordpress.com/2009/09/15/how-to-build-android-application-package-apk-from-the-command-line-using-the-sdk-tools-continuously-integrated-using-cruisecontrol/
jojol-zhou給予大家實際使用命令的具體例子,對於想深入研究APK是怎麼打包出來的同學很有幫助,特轉載在此。
【詳細步驟】:
[b]1使用aapt生成R.java類檔案[/b]:
例:
F:\explorer\android-sdk-windows2.2\tools>f:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -m -J F:\explorer\AndroidByread\gen -S res -I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -M AndroidManifest.xml
其中 -f -m -J F:\explorer\AndroidByread\gen 代表按覆蓋的形式在gen目錄下生成帶包路徑的R.java,-S res指定資原始檔 ,-I f:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar 指定使用的android類,-M AndroidManifest.xml指定程式的配置檔案
aapt Usage:
[img]http://dl.iteye.com/upload/attachment/288313/fb069089-38dc-3b15-b2dc-8c2a9314034f.png[/img]
[b]2使用android SDK提供的aidl.exe把.aidl轉成.java檔案:[/b]
usage: aidl OPTIONS INPUT [OUTPUT]
aidl --preprocess OUTPUT INPUT...
OPTIONS:
-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.
INPUT:
An aidl interface file.
OUTPUT:
The generated interface files.
[b]3第三步 編譯.java類檔案生成class檔案: [/b]
例:F:\explorer\AndroidByread>javac -encoding GB18030 -target 1.5 -bootclasspath F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -d bin src\com\byread\reader\*.java gen\com\byread\reader\R.java
[img]http://dl.iteye.com/upload/attachment/288317/4490f4e0-d409-3ee1-af63-2ccfbb4b2e7e.png[/img]
[b]4使用android SDK提供的dx.bat命令列指令碼生成classes.dex檔案: [/b]
[img]http://dl.iteye.com/upload/attachment/288315/beec491b-c5ed-36bd-a550-bd4d3e5b8142.png[/img]
例:
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\dx.bat --dex --output=F:\explorer\AndroidByread\bin\classes.dex f:\explorer\AndroidByread\bin\classes
其中classes.dex為生成的目標檔案,f:\explorer\AndroidByread\bin\classes為class檔案所在目錄
[b]5使用Android SDK提供的aapt.exe生成資源包檔案(包括res、assets、androidmanifest.xml等)[/b]:
F:\explorer\AndroidByread>F:\explorer\android-sdk-windows2.2\platforms\android-3\tools\aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I F:\explorer\android-sdk-windows2.2\platforms\android-3\android.jar -F bin\byreadreader
將AndroidManifest.xml,res和assets資料夾中的資原始檔打包生成byreadreader,用法參見1
[b]6第六步 生成未簽名的apk安裝檔案[/b]:
apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file} -rf ${source.dir} -rj ${libraries.dir}
[img]http://dl.iteye.com/upload/attachment/288319/1a49ff1c-abb6-3ca3-b36b-e03ec2186d72.png[/img]
例:
F:\explorer\AndroidByread>f:\explorer\android-sdk-windows2.2\tools\apkbuilder.bat f:\explorer\byreadreader.apk –v -u -z f:\explorer\AndroidByread\bin\byreadreader -f f:\explorer\AndroidByread\bin\class.dex -rf F:\explorer\AndroidByread\src
其中f:\explorer\byreadreader.apk為生成的apk ,-z f:\explorer\AndroidByread\bin\byreadreader為資源包,f:\explorer\AndroidByread\bin\class.dex為類檔案包
[b]7使用jdk的jarsigner對未簽名的包進行apk簽名:[/b]
use jarsigner
jarsigner -keystore ${keystore} -storepass ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}
例如:
F:\explorer\android-sdk-windows2.2\tools>jarsigner –keystore f:\explorer\eclipse3.5\bbyread.keystore -storepass byread002 -keypass byread002 -signedjar f:\explorer\byread.apk f:\explorer\byreadreader.apk byread
其中–keystore f:\explorer\eclipse3.5\bbyread.keystore 為金鑰檔案 -storepass byread002為金鑰檔案密碼 byread 為金鑰別名 -keypass byread002為金鑰別名密碼,-signedjar f:\explorer\byread.apk為簽名後生成的apk檔案 f:\explorer\byreadreader.apk為未簽名的檔案。
參考:http://asantoso.wordpress.com/2009/09/15/how-to-build-android-application-package-apk-from-the-command-line-using-the-sdk-tools-continuously-integrated-using-cruisecontrol/
相關文章
- 轉[Android]APK打包過程詳解(一)AndroidAPK
- Android APK簽名原理和過程詳解AndroidAPK
- Android Apk反編譯系列教程(二)APK重打包AndroidAPK編譯
- Android Apk 打包AndroidAPK
- Android Apk 檔案反編譯和重新打包的過程分析AndroidAPK編譯
- Android APK打包流程AndroidAPK
- Android Apk安裝過程分析AndroidAPK
- Flutter 38: 圖解 Android 打包 APK 檔案Flutter圖解AndroidAPK
- Flutter 打包 android端 apkFlutterAndroidAPK
- Android Studio 簽名打包過程圖解Android圖解
- 轉:DNS解析過程詳解DNS
- 簽名打包Android版apkAndroidAPK
- Android開發 —— apk打包流程AndroidAPK
- android apk安裝過程原始碼解析AndroidAPK原始碼
- Mybatis詳解(二) sqlsession的建立過程MyBatisSQLSession
- 在打包過程中小米手機的apk圖示失敗的解決方法APK
- LumaQQ安裝過程詳解(轉)
- APK安裝過程APK
- Android Studio打包專案:APKAndroidAPK
- Android自定義打包apk名稱AndroidAPK
- [轉]:xmake編譯配置過程詳解編譯
- Nginx支援Socket轉發過程詳解Nginx
- BabyLinux製作過程詳解(轉)Linux
- Android Studio打包apk,aar,jar包AndroidAPKJAR
- android 使用ANT批量打包apk步驟AndroidAPK
- 動態庫so打包到android apkAndroidAPK
- Webpack安裝配置及打包詳細過程Web
- Android APK開發:Menu介面功能詳解AndroidAPK
- MapReduce過程詳解
- Android 核心分析 之八------Android 啟動過程詳解Android
- Android 生成簽名apk與多渠道打包AndroidAPK
- Android使用Ant進行apk多渠道打包AndroidAPK
- Android開發把專案打包成apkAndroidAPK
- Android構建過程——資源合併打包Android
- Android MVVM 應用框架構建過程詳解AndroidMVVM框架架構
- [轉]反向代理過程與Nginx特點詳解Nginx
- Toolbar製作選單條過程詳解 (轉)
- uni-app&H5&Android混合開發二 || 使用Android Studio打包應用APKAPPH5AndroidAPK