使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

本文参考及引用http://www.cnblogs.com/wujd/archive/2012/01/10/wujiandong-android-1.html命令行具体含义也请参考此文

一、Android Projectd Building System

      使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

            使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)


二、需要用的工具

        aapt,dxapkbuilder,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,目前的目录结构如下图:

        使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

       此时gen目录还没有内容,bin目录没有显示在工程目录中;但是在终端查看,已经有内容了,如下:

       使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)  

       classes文件夹没有内容

       2、点击右键,Build Project,此时的目录结构如下图:

         使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

        此时gen目录下产生了R.java,bin目录在工程目录中,显示如上,没有任何内容;但是在终端查看,内容有改变,如下:

        使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

        只剩下一个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

      使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

        bin目录在工程目录中,显示如上;但是在终端查看,内容有改变,如下:

       使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

       原来classes文件夹,里面生成了所有的class文件,如下图:

      使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

       对应的命令:

       在工程目录下执行以下命令:

       生成.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

        使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

         bin目录在工程目录中,显示如上;但是在终端查看,内容有改变,如下:

         使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

         对应的命令:

         在工程目录下执行以下命令:

         生成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 4bin/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

使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk),布布扣,bubuko.com

使用命令行模拟Eclipse中Android Project的编译流程(从源代码编译出最后的apk)

上一篇:android4.4 API 19 给开发者带来的新福利


下一篇:Android学习笔记