溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android開(kāi)發(fā)實(shí)踐:用腳本編譯Android工程

發(fā)布時(shí)間:2020-10-13 06:58:56 來(lái)源:網(wǎng)絡(luò) 閱讀:3263 作者:Jhuster 欄目:移動(dòng)開(kāi)發(fā)

   一般情況下,我們都是使用Eclipse+ADT插件或者Android studio軟件來(lái)編譯Android工程的,其實(shí),Eclipse或者Android studio僅僅是將一些編譯命令封裝到可視化界面里而已,通過(guò)shell腳本、ADT附帶的一些命令以及Ant工具,我們完全可以將Android工程的編譯過(guò)程自動(dòng)化,直接通過(guò)運(yùn)行腳本就得到最終的APK文件。


   Linux下用腳本編譯c/c++程序至少需要兩個(gè)東西,一個(gè)是編譯器,如gcc/g++,另一個(gè)則是編譯配置文件,即Makefile;同理,編譯Android程序也同樣需要編譯器和編譯配置文件,由于Android程序是Java開(kāi)發(fā)的,所以編譯器一般使用Ant(Apache的核心項(xiàng)目,Java編譯器),配置文件則是build.xml,該編譯配置文件可以自己手寫(xiě),也可以通過(guò)ADT的工具生成;如果Andrid工程涉及JNI層,則編譯命令使用NDK-Build,對(duì)應(yīng)的編譯配置文件則是Android.mk。


   前面這段話,簡(jiǎn)單介紹了使用腳本編譯Andriod工程的一些基本工具和關(guān)鍵詞,詳細(xì)的用法就留給讀者自己去Google吧,這里給出一個(gè)我自己編寫(xiě)的通用腳本,放到你的Android工程的根目錄,修改腳本的相關(guān)路徑的配置,添加執(zhí)行權(quán)限(chmod +x),即可編譯你的Android工程了,具體的用法用注釋的形式添加在腳本中了,文章最后的附件則是該腳本的測(cè)試Android工程。


#!/bin/bash
                                                                                                                                                                                                                                                            
#NOTE: 用法,在本工程根目錄下執(zhí)行 ./build.sh xxx
                                                                                                                                                                                                                                        
#其中,xxx為參數(shù),可以是clean debug release,也可以不帶參數(shù),不帶參數(shù)默認(rèn)為debug
                                                                                                                                                                                                                                           
#如果參數(shù)是 clean,  則會(huì)刪除所有編譯生成的文件              
#如果參數(shù)是 debug , 則會(huì)生成 debug 版本的apk,位于 bin 目錄下
#如果參數(shù)是 release,則生成 release版本的apk,位于 bin 目錄下
                                                                                                                                                                                                                                            
#NOTE: 如果更改了工程配置,請(qǐng)先刪除目錄下的build.xml
                                                                                                                                                                                                                                           
#獲取本目錄的名稱,作為build.xml的項(xiàng)目名稱
PROJECT_NAME=${PWD##*/}
                                                                                                                                                                                                                                                  
#路徑配置,請(qǐng)根據(jù)編譯環(huán)境修改
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 是否存在,若不存在,則創(chuàng)建一個(gè)
#請(qǐng)根據(jù)你的目標(biāo)平臺(tái),修改update project命令的最后一個(gè)參數(shù),該值為 android list 命令輸出結(jié)果列表的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來(lái)編譯
if [ $BUILD_RELEASE ]
then
    $ANT_PATH/ant release 
else
    $ANT_PATH/ant debug
fi
echo "build success"


   在Android工程的根目錄運(yùn)行該腳本文件后,會(huì)在bin目錄下生成apk文件,如果工程目錄下沒(méi)有ant.properties文件和xxx.key文件的話,則只會(huì)生成debug版和unsigned-release版,如果希望直接生成簽名后的apk文件,則需要給出一個(gè)Android key文件,并編寫(xiě)一個(gè)ant.properties文件,該文件的編寫(xiě)示例如下:


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


   在Android工程的根目錄下,如果存在該ant.properties文件,則在編譯release版的時(shí)候,會(huì)自動(dòng)使用ticktick.key文件來(lái)簽名生成的apk文件。


   關(guān)于使用腳本編譯Android工程就介紹到這兒了,希望我的示例腳本能夠給初學(xué)者提供一些參考和幫助,有任何疑問(wèn)歡迎留言或者來(lái)信lujun.hust@gmail.com交流,或者關(guān)注我的新浪微博 @盧_俊 獲取最新的文章和資訊。


附件:http://down.51cto.com/data/2364114
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI