1.先进入到当前项目所在目录下。
2.当前目录下使用aapt命令,生成R文件。
<aapt所在路径> package -f -m -J <生成的R文件所在的目录> -S res -M AndroidManifest.xml -I <sdk所在路径>\platforms\android-4.2\android.jar
回车,就在 <生成的R文件所在的目录> 目录下看到了生成的R文件了。
我自己的完整命令是:
D:\adt-bundle-windows\sdk\platform-tools\aapt package -f -m -J D:\UserProfiles\nickwang\workspace\android-custom-class-loading-sample\gen -S res -M AndroidManifest.xml -I D:\adt-bundle-windows\sdk\platforms\android-4.2\android.jar
3.aidl(Android Interface Definition Language)命令,根据.aidl定义文件生成java文件
先略过,目前项目暂时还没用到aidl
4.javac,编译源文件
还是在当前项目的目录下使用javac命令。我使用的完整命令是:
javac -encoding utf-8 -target 1.6 -d bin src/com/example/dex/*.java gen/com/example/dex/R.java -bootclasspath D:\android-sdk-windows\platforms\android-8\android.jar
读者在使用时,可以将-d后的两个参数 分别对应你自己项目的src文件目录和已经生成的R.java文件;-bootclasspath后面对应android.jar对应的路径。
这里可能遇到两个问题:
1.目标版本 1.6 与默认的源版本 1.X 冲突
2.Dx bad class file magic (cafebabe) or version (0033.0000)
解决办法是:PC安装的java版本和编译的target参数最好都是1.6,1.7编译的话,打包会出问题。
5.dx命令,打包dex文件
D:\android-sdk-windows\platform-tools\dx.bat --dex --output=D:\UserProfiles\nickwang\workspace\android-custom-class-loading-sample\bin\classes.dex D:\UserProfiles\nickwang\workspace\android-custom-class-loading-sample\bin
然后可以看到生成dex文件了。
解决办法和上面一样是: PC安装的java版本和编译的target参数最好都是1.6,1.7编译的话,此刻打包就出现问题了。
6.aapt将资源文件打包
D:\android-sdk-windows\platform-tools\aapt package -f -M AndroidManifest.xml -S res -A assets -I D:\android-sdk-windows\platforms\android-8\android.jar -F bin\resouces.ap_
可以看到bin文件夹下生成resouces.ap_文件了。
参数说明:
-f 强制覆盖
-M 指定Manifest文件
-S 指定资源目录
-A 指定资产目录
-I 指定引入的类库
-F 指定要生成的包
7.apkbuilder命令打包
D:\android-sdk-windows\tools\apkbuilder.bat <打包的apk放置的位置> -u -z <已经生成的_ap文件位置> -f <dex文件位置> -rf <项目的src目录的位置>
我的打包命令是:
D:\android-sdk-windows\tools\apkbuilder.bat D:\UserProfiles\nickwang\workspace\android-custom-class-loading-sample\bin\test_unsined.apk -u -z D:\UserProfiles\nickwang\workspace\android-custom-class-loading-sample\bin\resouces.ap_ -f D:\UserProfiles\nickwang\workspace\android-custom-class-loading-sample\bin\classes.dex -rf D:\UserProfiles\nickwang\workspace\android-custom-class-loading-sample\src
8.生成签名证书
任意目录下,使用cmd命令:
keytool -genkey -alias release -keyalg RSA -validity 20000 -keystore release.keystore
然后依次输入密码,所在国家等信息,即可在当前目录下生成release.keystore
9.对apk进行签名
jarsigner -keystore release.keystore -storepass <密码> -keypass <密码> -signedjar <签名后的程序包所在位置> <待签名的程序包所在路径> release