我使用的環境變量的配置:
Jdk1.6\bin
Sdk\tools
第一部分:通過命令行創建簡單的android項目
1.在創建安卓項目的目錄中打開命令行窗口
2.在命令行窗口中輸入命令(命令寫在一行上)
>android create project
--target <target_ID>
--name <項目名稱>
--path <項目的路徑>
--activity <Activity的名稱>
--package <項目的包名>
android create project --target7--nameDemo --path D:\Z_test\Demo--activity MainActivity--packagecom.demo.www
注:1.不知道的命令可以使用 >android --help來查看
2.target_ID指的是當前擁有的API的id號,使用命令>android list target 來查看
3.接下來進入項目中進行操作 >cd Demo
第二部分:命令行打包(有的目錄沒有隨着安卓項目的創建而創建,需要手動創建,使用命令>mkdir <文件名>)
1.生成R.java文件
a.創建gen目錄>mkdir gen 這是在當前項目的目錄下的命令行,所以直接輸入想起的文件名就可以了,絕對路徑也是可以
b.運行aapt命令生成R.java文件
>aapt package -f -m -J gen -S res -I E:\sdk\platforms\android-19\android.jar -M AndroidManifest.xml
2.將java文件編譯成class文件
>javac -encoding UTF-8 -target 1.6 -bootclasspath E:\sdk\platforms\android-19\android.jar -d bin src\com\demo\www\*.java gen\com\demo\www\R.java
注:a.-target 1.6 是指jdk的版本,經驗是使用1.6的編譯dex時不會出現問題,使用1.7就不能編譯成功
b.-d bin src\com\demo\www\*.java -d 表示指定存放生成的class文件的位置,後面就是要編譯的java文件
3.生成dex文件(注意:使用絕對路徑)
>dx --dex --output=D:\Z_test\Demo\bin\classes.dex D:\Z_test\Demo\bin
注:前面是dex文件 ,後面是操作的目錄,也就是存放到的目錄
4.生成資源包文件
>aapt package -f -M AndroidManifest.xml -S res -A assets -I E:\sdk\platforms\android-19\android.jar -F bin\resources
5.生成未簽名的apk包(sdk3.0以後將apkbuilder刪除了)
>java -cp E:\sdk\tools\lib\sdklib.jar com.android.sdklib.build.ApkBuilderMain Demo.apk -v -u -z bin\resources -f bin\classes.dex -rf src
效果:
第三部分:命令行生成簽名文件
>keytool -genkey -alias key_demo.keystore -keyalg RSA -validity 20000 -keystore key_demo.keystore
注:文件夾下的key_demo.keystore就是我們需要的簽名文件 20000表示證書的有效天數
第四部分:用生成的簽名文件對未簽名的apk進行簽名(jdk一定要是1.6,)
>jarsigner -verbose -keystore key_demo.keystore -signedjar demo_signed.apk D:\Z_test\Demo\demo.apk key_demo.keystore
我在使用jdk爲1.7時,簽名後會出現以下警告:
警告:
未提供 -tsa 或 -tsacert, 此 jar 沒有時間戳。如果沒有時間戳, 則在簽名者證書的到期
日期 (2063-07-18) 或以後的任何撤銷日期之後, 用戶可能無法驗證此 jar。
第五部:最後驗證是否簽名成功
>jarsigner -verify demo_signed.apk