一、将一个Android应用打包生成一个可发布的APK包需要的流程:
1.javac工具将*.java文件进行转换,转换后通常得到一个*.class文件;
2.DX工具对*.class文件进行转换,转换后通常得到一个*.dex文件;
3.通过AAPT工具打包所有的资源文件。打包后得到*.ap_文件;
4.通过apkbuilder工具把前两步得到的*.dex、*.ap_文件打包生成APK。
注:DX、AAPT工具均在D:\xxx\android-sdk-windows\build-tools\xxx\目录下
二、AAPT打包资源:
AAPT工具支持的诸多子命令(部分):
1.aapt l[list]:列出资源压缩包内的内容。
2.aapt d[ump]:查看APK包的指定内容。
3.aapt p[ackage]:打包生成资源压缩包。
4.aapt r[emove]:从压缩包中删除指定文件。
5.aapt a[dd]:向压缩包中添加指定文件
6.aapt v[ersion]:打印AAPT的版本。
AAPT工具打包资源包时常用的语法格式如下:
aapt -A <附件资源路径> -S <资源路径> -M <Android应用清单文件> -I <额外添加包> And -F 目标文件的路径
例如:
aapt -A assets -S res -M AndroidManifest.xml -I D:\android-sdk-windows\platforms\android-9\atforms\android-9\android.kar -F bin\res.ap_
上面的命令将当前目录下assets子目录、res子目录、AndroidManifest.xml文件都打包到bin\res.ap_资源包中
三、DX编译Demo.java文件
DX工具的常见命令格式如下:
dx --dex [--dump-to=<file>] [--core-library] [<file>.class | <file>.{zip,jar,apk} | <directory>]
上面的命令中[--dump-to=<file>]指定生成的*.dex文件的文件名;而--core-library指定需要转换的*.class、*.zip、*.jar文件或者目录
例如:
1.将Demo文件编译生成Demo.class文件
D:\development\android-sdk-windows\build-tools\20.0.0>javac -source 1.7 -target 1.7 Demo.java
2.将Demo.class文件编译生成Demo.dex文件
D:\development\android-sdk-windows\build-tools\20.0.0>dx --dex --output=Demo.dex Demo.class
3.将Demo.class文件反编译java汇编代码
D:\development\android-sdk-windows\build-tools\20.0.0>javap -c -classpath . Hello.class
4.将.dex文件反编译成dalvik汇编代码
D:\development\android-sdk-windows\build-tools\20.0.0>dexdump.exe -d Demo.dex