一般情況下,我們都是使用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/sdk
ANDROID_NDK_PATH=/opt/android/ndk
ANT_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"
exit
fi
if [ $1 = "debug" ]
then
BUILD_RELEASE=0
fi
if [ $1 = "release" ]
then
BUILD_RELEASE=1
fi
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 1
fi
#判斷jni目錄是否存在,如果存在,則首先編譯jni目錄
if [ -d jni ]
then
echo "build jni, generate libs"
$ANDROID_NDK_PATH/ndk-build
fi
#使用ant來編譯
if [ $BUILD_RELEASE ]
then
$ANT_PATH/ant release
else
$ANT_PATH/ant debug
fi
echo "build success"
在Android工程的根目錄運行該腳本文件後,會在bin目錄下生成apk文件,如果工程目錄下沒有ant.properties文件和xxx.key文件的話,則只會生成debug版和unsigned-release版,如果希望直接生成簽名後的apk文件,則需要給出一個Android key文件,並編寫一個ant.properties文件,該文件的編寫示例如下:
key.store=ticktick.key
key.alias=ticktick
key.store.password=123456
key.alias.password=123456
在Android工程的根目錄下,如果存在該ant.properties文件,則在編譯release版的時候,會自動使用ticktick.key文件來簽名生成的apk文件。
關於使用腳本編譯Android工程就介紹到這兒了,希望我的示例腳本能夠給初學者提供一些參考和幫助,���任何疑問歡迎留言或者來信[email protected]交流。
Android開發實踐:用腳本編譯Android工程相關文件下載:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2014年資料/3月/3日/Android開發實踐:用腳本編譯Android工程
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm