<center>手工打包APK</center>
1. 設(shè)置SDK
環(huán)境變量
添加目錄到環(huán)境變量....
當(dāng)前環(huán)境為4.0的SDK, 1.8額JDK
JAVA SDK目錄
%JAVA_HOME%\bin;
Android SDK根目錄
%ANDROID%
=Android SDK 的%Path%
sdk工具目錄
%ANDROID%\sdk\tools;
%ANDROID%\platform-tools;
%ANDROID%\build-tools\23.0.1;
對(duì)應(yīng)版本號(hào)的目錄
2. 利用命令行創(chuàng)建Android
工程
命令:
android create project -n Test -t android-14 -p DstPath -k org.test.test -a test
編譯命令
android create project 的參數(shù)
命令 | 命令解釋 |
---|---|
-n --name |
工程名稱 |
-t --target |
項(xiàng)目編譯的目標(biāo)Android 版本,詳情見(jiàn)查看安卓版本
|
-p --path |
生成的目標(biāo)目錄 |
-k --package |
指定項(xiàng)目的包名 |
-a --activity |
Activity 名稱 |
-g --gradle |
使用Gradle 模版 |
-v --gradle-vers |
Gradle 版本 |
查看安卓版本
可以使用
android.bat list targets
命令查看當(dāng)前安裝的AndRoid
版本,(ID或者名稱)
查看當(dāng)前安裝的版本
3. 編譯資源
利用AAPT
編譯資源文件
- 先切換命令行到工程目錄,
- 根目錄新建一個(gè)
gen
目錄, - 然后輸入命令產(chǎn)生
R.java
文件
aapt package -f -m -J gen -S res -I %Android%\platforms\android-14\android.jar -M AndroidManifest.xml
命令 | 命令解析 |
---|---|
-f |
覆蓋現(xiàn)有文件 |
-m |
產(chǎn)生包目錄在J 命令所指目錄之下 |
-J |
指定R.java 資源文件存放路徑 |
-S |
從什么目錄找到資源文件,可指定多個(gè)文件 |
-I |
指定版本平臺(tái)的android.jar 的路徑 |
-M |
指定完整的AndroidManifest.xml 路徑包含到ZIP中 |
-A |
assert文件夾的路徑 |
-F |
具體指定apk文件的輸出 |
4. 使用javac
編譯.java
文件為.class
javac -source 1.6 -target 1.6 -bootclasspath %Android%/platforms/android-14/android.jar -d bin gen/org/test/test/*.java src/org/test/test/*.java
javac
-source 1.6 //什么版本JDK源文件
-target 1.6 //什么版本JDK目標(biāo)文件
-bootclasspath %Android%/platforms/android-14/android.jar //編譯時(shí)可能使用的環(huán)境
-d bin //輸出目錄
gen/org/test/test/*.java src/org/test/test/*.java //源目錄
命令 | 功能 |
---|---|
-target |
表示編譯之后的class文件運(yùn)行的環(huán)境版本 |
-bootclasspath |
表示編譯需要用到的系統(tǒng)庫(kù) |
-d |
表示編譯之后的class文件存放的目錄 |
5. 使用dx
生成 .dex
文件
dx
版本dx version 1.11
(23.0.1目錄下dx文件
)
dx --dex --output=bin/classes.dex bin\org\test\test
Tips: 轉(zhuǎn)換時(shí)出錯(cuò)了, 給
javac
編譯版本從1.8轉(zhuǎn)換為1.6之后轉(zhuǎn)換成功
5. 使用aapt
生成資源包文件
根目錄新建
assets
文件夾
aapt package -f -A assets -S res -I %Android%/platforms/android-14/android.jar -M AndroidManifest.xml -F bin/test
6.打包一個(gè)未簽名的APK
解決apkbuilder
不存在的問(wèn)題
copy android.bat apkbuilder.bat
修改com.android.sdkmanager.Main
成com.android.sdklib.build.ApkBuilderMain
產(chǎn)生未簽名的APK
apkbuilder 目標(biāo)文件路徑與文件名.apk -v -u -z 資源包文件路徑與文件名 -f dex文件路徑與文件名 -rf 源文件路徑
路徑均為全路徑

命令 | 功能 |
---|---|
-z |
資源打包文件 |
-f |
類打包文件 |
-rf |
源代碼目錄 |
7. 使用keytool
來(lái)產(chǎn)生一個(gè)keystore
文件
keytool -genkey -alias CR23Test -keyalg RSA -validity 20000 -keystore CR23Test.keystore
命令 | 功能 |
---|---|
-alias KeyName |
表示別名 |
-keyalg RSA |
產(chǎn)生鍵的加密算法 |
-validity 40000 |
有效期限4000天 |
-keystore |
保存到本地的文件名 |
8. 簽名APK
jarsigner -verbose -keystore CR23Test.keystore -signedjar HelloWorld_signed.apk HelloWorld.apk CR23Test
jarsigner -verbose
-keystore keystore文件名
-signedjar 簽名后的apk名稱 需簽名apk名稱
keystore中的別名(不是文件名)
注意:上面的keystore中的別名,一定記住不是文件名,如果寫文件名就會(huì)提示
jarsigner: 找不到 xxx 的證書鏈项炼。xxx 必須引用包含私有密鑰和相應(yīng)的公共密鑰證書鏈的有效密鑰庫(kù)密鑰條目。
9. 安裝APK
adb install HelloWorld_signed.apk
10. 卸載APK
adb uninstall org.test.test
填寫應(yīng)用的包名
Tips
Android
版本號(hào)說(shuō)明
安卓版本