生成R.java文件
aapt p -m -J ./gen -M AndroidManifest.xml -S res -I D:/AS_SDK/android-sdk-windows/platforms/android-21/android.jar
Options:
-f 如果编译出来的文件已经存在,强制覆盖。
-m 使生成的包的目录放在-J参数指定的目录。
-J 指定生成的R.java的输出目录
-S res文件夹路径
-A assert文件夹的路径
-M AndroidManifest.xml的路径
-I 某个版本平台的android.jar的路径
-F 具体指定apk文件的输出
编译所有的java文件为Java虚拟机认识的.class文件
使用JDK提供的javac命令进行编译
javac src/com/thc/apkbuild/*.java gen/com/thc/apkbuild/R.java -bootclasspath d:/AS_SDK/android-sdk-windows/platforms/android-21/android.jar -d bin
//命令解释如下:
javac
//包下的java文件
src/com/thc/apkbuild/*.java
//gen目录下的R.java文件
gen/com/thc/apkbuild/*.java
//引用android.jar 这个jar包,如果使用其他的jar包,在后面进行添加即可
-bootclasspath d:/AS_SDK/android-sdk-windows/platforms/android-21/android.jar
//打出来的class文件所在目录
-d bin
//编码格式
-encoding GBK
//添加jar包
-classpath /.../xxx.jar
//例如引用Gson的jar包
javac src/com/thc/apkbuild/*.java gen/com/thc/apkbuild/R.java -d bin -bootclasspath d:/AS_SDK/android-sdk-windows/platforms/android-21/android.jar -classpath libs/gson-2.2.jar
遇到的问题备注: 将java文件编译成class文件的时候一定要记得一起编译gen目录下的R.java文件,否则会报找不到R.java的错误
打包class文件和第三方jar包为dex文件
dx --dex --output=bin\classes.dex bin
命令释义:
output=
bin
编译资源文件生成resources文件
aapt package -f -M AndroidManifest.xml -S res -A assets -I d:/AS_SDK/android-sdk-windows/platforms/android-21/android.jar -F bin/resources
将编译后的资源和其他的资源(assets和res资源)打包为资源压缩包
使用aapt工具,命令如下:
aapt package -f -M AndroidManifest.xml -I d:/AS_SDK/android-sdk-windows/platforms/android-21/android.jar -S res -F my.apk
参数释义在生成R文件的时候有说明。
到这一步就在你当前目录生成了一个my.apk文件
将classes.dex和resources加入到生成的apk中
java -claspath D:\AS_SDK\android-sdk-windows\tools\lib\sdklib.jar com.android.sdklib.build.ApkBuilderMain my.apk -v -u -z bin\resources -f bin\classes.dex -rf src
问题说明: 以前可以直接使用apkbuilder工具直接打包,但是目前sdk将该工具移除了。其实apkbuilder最终调用的是sdklib.jar中的com.android.sdklib.build.ApkBuilderMain类来做事情的,所以这里直接通过 java 来使用ApkBuilderMain这个类,来把resources和classes.dex加入到apk文件中
生成有签名的APK
生成签名:
keytool -genkey -alias -keyalg RSA -validity 20000 -keystore
给apk签名
jarsigner -verbose -keystore -signedjar
注意: 在给apk签名的时候的命令是-signedjar
进行zipAlign优化
zipalign -f 4 my_signed.apk my_signed_optimizated.apk
安装到手机
adb install -r my_signed_optimizated.apk