本文参考及引用http://www.cnblogs.com/wujd/archive/2012/01/10/wujiandong-android-1.html,命令行具体含义也请参考此文。
一、Android Projectd Building System
二、需要用的工具
aapt,dx,apkbuilder,javac,jarsigner,zipalign
aapt,dx位于android-sdk-linux/build-tools/18.0.1中
apkbuilder笔者是这样找到的:locate apkbuilder,发现我下载的源码目录下有apkbuilder,然后把这个文件复制到android-sdk-linux/tools中,就可以使用了
javac,jarsigner,zipalign位于jdk1.6.0/bin中
三、用命令行模拟eclipse中Android Project编译流程
1、新建一个Android Project,目前的目录结构如下图:
此时gen目录还没有内容,bin目录没有显示在工程目录中;但是在终端查看,已经有内容了,如下:
classes文件夹没有内容
2、点击右键,Build Project,此时的目录结构如下图:
此时gen目录下产生了R.java,bin目录在工程目录中,显示如上,没有任何内容;但是在终端查看,内容有改变,如下:
只剩下一个classes文件夹,此文件夹为空
对应的命令:
在工程目录下执行如下代码:
生成R文件:
aapt p -f -m -J gen -S res -I ~/android-sdk-linux/platforms/android-18/android.jar -M AndroidManifest.xml
3、点击右键,再一次Build Project
bin目录在工程目录中,显示如上;但是在终端查看,内容有改变,如下:
原来classes文件夹,里面生成了所有的class文件,如下图:
对应的命令:
在工程目录下执行以下命令:
生成.class文件:
javac -encoding GBK -target 1.5 -bootclasspath ~/android-sdk-linux/platforms/android-18/android.jar -d bin/classes src/com/jltxgcy/helloworld/*.java gen/com/jltxgcy/helloworld/R.java -classpath libs/android-support-v4.jar
4、点击右键Run as Android Application
bin目录在工程目录中,显示如上;但是在终端查看,内容有改变,如下:
对应的命令:
在工程目录下执行以下命令:
生成resources.ap_:
aapt package -f -S res -I ~/android-sdk-linux/platforms/android-18/android.jar -A assets/ -M AndroidManifest.xml -F bin/resources.ap_
生成classes.dex:
dx --dex --output=bin/classes.dex bin/classes
生成HelloWorld_unsigned.apk:
apkbuilder bin/HelloWorld_unsigned.apk -v -u -z bin/resources.ap_ -f bin/classes.dex -rf src -nf libs
签名apk,使用debug key,别名为androiddebugkey,密码是android:
jarsigner -verbose -keystore ~/.android/debug.keystore -signedjar bin/HelloWorld_signed.apk bin/HelloWorld_unsigned.apk androiddebugkey
对齐apk:
zipalign -v 4 bin/HelloWorld_signed.apk bin/HelloWorld.apk
移除临时apk:
rm bin/HelloWorld_unsigned.apk bin/HelloWorld_signed.apk
安装apk:
adb install bin/HelloWorld.apk
5、点击右键,Android Tools->Export Signed Application Package
同样的步骤,只是签名使用的自己创建的数字证书(release版),最后的apk不保存在bin目录下,而是由用户指定。
具体可以参考http://blog.csdn.net/jltxgcy/article/details/22647101