一般情况下,我们都是使用Eclipse+ADT插件或者Android studio软件来编译Android工程的,其实,Eclipse或者Android studio仅仅是将一些编译命令封装到可视化界面里而已,通过shell脚本、ADT附带的一些命令以及Ant工具,我们完全可以将Android工程的编译过程自动化,直接通过运行脚本就得到最终的APK文件。


   Linux下用脚本编译c/c++程序至少需要两个东西,一个是编译器,如gcc/g++,另一个则是编译配置文件,即Makefile;同理,编译Android程序也同样需要编译器和编译配置文件,由于Android程序是Java开发的,所以编译器一般使用Ant(Apache的核心项目,Java编译器),配置文件则是build.xml,该编译配置文件可以自己手写,也可以通过ADT的工具生成;如果Andrid工程涉及JNI层,则编译命令使用NDK-Build,对应的编译配置文件则是Android.mk。


   前面这段话,简单介绍了使用脚本编译Andriod工程的一些基本工具和关键词,详细的用法就留给读者自己去Google吧,这里给出一个我自己编写的通用脚本,放到你的Android工程的根目录,修改脚本的相关路径的配置,添加执行权限(chmod +x),即可编译你的Android工程了,具体的用法用注释的形式添加在脚本中了,文章最后的附件则是该脚本的测试Android工程。


#!/bin/bash                                                                                                                                                                                                                                                            #NOTE: 用法,在本工程根目录下执行 ./build.sh xxx                                                                                                                                                                                                                                        #其中,xxx为参数,可以是clean debug release,也可以不带参数,不带参数默认为debug                                                                                                                                                                                                                                           #如果参数是 clean,  则会删除所有编译生成的文件              #如果参数是 debug , 则会生成 debug 版本的apk,位于 bin 目录下#如果参数是 release,则生成 release版本的apk,位于 bin 目录下                                                                                                                                                                                                                                            #NOTE: 如果更改了工程配置,请先删除目录下的build.xml                                                                                                                                                                                                                                           #获取本目录的名称,作为build.xml的项目名称PROJECT_NAME=${PWD##*/}                                                                                                                                                                                                                                                  #路径配置,请根据编译环境修改ANDROID_SDK_PATH=/opt/android/sdkANDROID_NDK_PATH=/opt/android/ndkANT_PATH=/opt/apache-ant-1.9.0/bin                                                                                                                                                                                                                                                            #决定是否生成release版BUILD_RELEASE=0                                                                                                                                                                                                                                                             if [ $1 = "clean" ]then    rm -rf gen    rm -rf obj    rm -rf libs/armeabi    echo "clean success"    exitfi                                                                                                                                                                                                                                                if [ $1 = "debug" ]then    BUILD_RELEASE=0fi                                                                                                                                                                                                                                                     if [ $1 = "release" ]then    BUILD_RELEASE=1fi                                                                                                                                                                                                                                                                        echo "begin to build..."                                                                                                                                                                                                                                                            #判断 build.xml 是否存在,若不存在,则创建一个#请根据你的目标平台,修改update project命令的最后一个参数,该值为 android list 命令输出结果列表的id值                                                                                                                                                                                                                                                       if [ ! -e build.xml ]then    echo "No build.xml exist, generate build.xml"    $SDK_PATH/tools/android update project -n $PROJECT_NAME -p . -s -t 1fi                                                                                                                                                                                                                                                                 #判断jni目录是否存在,如果存在,则首先编译jni目录if [ -d jni ]then    echo "build jni, generate libs"    $ANDROID_NDK_PATH/ndk-buildfi                                                                                                                                                                                                                                                              #使用ant来编译if [ $BUILD_RELEASE ]then    $ANT_PATH/ant release else    $ANT_PATH/ant debugfiecho "build success"


   在Android工程的根目录运行该脚本文件后,会在bin目录下生成apk文件,如果工程目录下没有ant.properties文件和xxx.key文件的话,则只会生成debug版和unsigned-release版,如果希望直接生成签名后的apk文件,则需要给出一个Android key文件,并编写一个ant.properties文件,该文件的编写示例如下:


key.store=ticktick.keykey.alias=ticktickkey.store.password=123456key.alias.password=123456


   在Android工程的根目录下,如果存在该ant.properties文件,则在编译release版的时候,会自动使用ticktick.key文件来签名生成的apk文件。


   关于使用脚本编译Android工程就介绍到这儿了,希望我的示例脚本能够给初学者提供一些参考和帮助,有任何疑问欢迎留言或者来信lujun.hust@gmail.com交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。


更多相关文章

  1. Android入门教程(五)之------第一个Android工程HelloAndroid
  2. 创建Android守护进程(底层服务)
  3. 工(程师)欲善其事,必先利其(编译)器——《Android(安卓)Studio实战—
  4. Android开发实践:用脚本编译Android工程
  5. [置顶] Android学习路线指南
  6. Android(安卓)Jni开发之Android(安卓)Studio中使用Android.mk
  7. Google Android操作系统内核编译图文教程
  8. 来看看compileSdkVersion, minSdkVersion, targetSdkVersion这三
  9. android工程gen目录无法生成的解决办法汇总

随机推荐

  1. Android 4游戏编程入门经典
  2. Android: Android Bluetooth
  3. Android根据文件路径使用File类获取文件
  4. Android Fresco图片处理库用法API英文原
  5. Android外设存储设备的访问及测试
  6. Android巧用DecorView实现对话框功能
  7. 【Android】如何让跑马灯跑起来-控件请求
  8. 【边做项目边学Android】小白会遇到的问
  9. Android是什么?
  10. 安卓xml文件中设置动画匀速旋转无效?