因爲要用到給測試工程打包所以學習了下Android自動打包的,那自動打包就必須對Android的打包步驟與命令有一定的瞭解
Android打簽名包有三種形式:
第一種:通過eclipse 的工具進行打包,不斷的下一步選擇keystore文件即可。
第二種:純命令行打包
第三種:命令行編譯起來,使用ant工具進行打包
打包步驟:
1. 使用aapt工具打包資源文件,生成R.java文件
2. 用aidl命令生成相應java文件(如果工程中沒用到則可以不用)
3. 將工程的資源編譯編譯到一個包裏
4.dx命令,將class文件轉換成.dex文件
5.aapt將資源文件打包,生成resources.ap_文件
6.apkbuilder命令,根據classes.dex文件和resources.ap_生成未簽證的apk包
7.jarsigner命令,對未簽名的apk包進行簽名
詳細命令如下:
1.使用aapt工具打包資源文件,生成R.java文件
【輸入】Resource文件(工程中res中的文件)、Assets文件(另外一種資源)、AndroidManifest.xml文件、Android基礎類庫(Android.jar文件)
命令如下:
>aapt package –f -m -j D:\My_Projects\TestAPKNEW\gen\com\example\action02\test\R.java -S D:\My_Projects\TestAPKNEW\res -IE:\TOOL\android-sdk-windows_r21.0.1\platfo
rms\android-11\android.jar -MD:\My_Projects\TestAPKNEW\AndroidManifest.xml
[生成文件]:R.java
2. 用aidl命令生成相應java文件(如果工程中沒用到則可以不用)
aidl Person.aidl gen\person.java
根據包中的Person.aidl文件,在gen對應的目錄中生成Person.java文件,
3). 將工程的資源編譯編譯到一個包裏
aapt package -f -S <res目錄>-I <android.jar目錄> -A<assert目錄> -M <AndroidManifest.xml目錄> -F <輸出的包目錄>
命令如下:
>javac-encoding utf-8 -target 1.5 -d D:\My_Projects\TestAPKNEW\binD:\My_Projects\TestAPKNEW\src\com\targtime\mtll\test\*.javaD:\My_Projects\TestAPKNEW\gen\com
\example\action02\test\R.java-bootclasspath E:\TOOL\android-sdk-windows_r21.0.1\platforms\android-11\android.jar
-classpath D:\My_Projects\TestAPKNEW\libs\robotium-solo-4.3.jar
-d <目錄> 指定存放生成的類文件的位置
-bootclasspath <路徑> 覆蓋引導類文件的位置
-classpath<路徑> 引導庫文件,引用多個jar文件直接空格後增加jar目錄即可
[生成文件]
bin目錄下生成相關的class文件
4) dx命令,將class文件轉換成.dex文件
dx --dex --output=<要生成的classes.dex路徑> <要處理的類文件的路徑>
命令如下:
>dx--dex --output=D:\My_Projects\TestAPKNEW\bin\classes.dex D:\My_Projects\TestAPKNEW\bin
[生成文件]bin/classes.dex 文件
5. aapt將資源文件打包,生成resources.ap_文件
D:\My_Projects\TestAPKNEW>aapt package-f -M AndroidManifest.xml -S res -A assets -I E:\TOOL\android
-sdk-windows_r21.0.1\platforms\android-11\android.jar -F bin\resources.ap_
【生成文件】bin\resources.ap_ 文件
6. apkbuilder命令,根據classes.dex文件和resources.ap_生成未簽證的apk包
apkbuilder <APK輸出路徑> -u -z <需要添加的壓縮資源包> -f <需要添加的文件> -rf <源文件所在的目錄>
命令如下:
>apkbuilder D:\My_Projects\TestAPKNEW\bin\ant-unsigned.apk
-u -z D:\My_Projects\TestAPKNEW\bin\resources.ap_
-fD:\My_Projects\TestAPKNEW\bin\classes.dex
-rf D:\My_Projects\TestAPKNEW\src
-rf 參照源文件的目錄的結構
-u 創建一個沒有簽名的包
-z 將某個壓縮文件添加到包中
-f 將某個文件添加到保重
[生成文件] 未簽名的apk包***.apk7.jarsigner命令,對未簽名的apk包進行簽名
jarsigner -keystore fyy.keystore -storepass123456 -keypass 123456 -signedjar new***.apk unsigned.apk fyy.keystore
fyy.keystore 簽名文件
123456 簽名密碼
new***.apk:簽完名的apk
unsigned.apk :未簽名的apk
fyy.keystore:簽名文件別名
[生成內容] 簽名的apk
感謝:http://www.cnblogs.com/ondream/archive/2012/06/18/ant.html