整理的Unity導(dǎo)出安卓工程利用ANT進(jìn)行多渠道批量打包APK

Unity導(dǎo)出的安卓工程利用ant進(jìn)行多渠道循環(huán)批量打包

一:設(shè)置JAVA環(huán)境變量

做android開發(fā)的配置這個(gè)是基礎(chǔ)。

http://www.cnblogs.com/zhj5chengfeng/archive/2013/01/01/2841253.html

二:配置Android的SDK環(huán)境變量

除了需要Java的環(huán)境變量,我們還需要配置Android的sdk的位置,名字是ANDROID_HOME,值就是你的android的sdk的位置,比如我的,就如下所示:


二:安裝ant并設(shè)置ant環(huán)境變量

1、在Ant官網(wǎng)(http://ant.apache.org/bindownload.cgi)下載最新Ant包,在http://sourceforge.net/projects/ant-contrib/files下載Ant擴(kuò)展包ant-contrib-1.0b3.jar(這個(gè)包就是用于循環(huán)編譯多個(gè)渠道包)。

2、將Ant包解壓到常用開發(fā)工具目錄(自行選擇,我的放在D:/Dev目錄下),然后將下載下來的Ant擴(kuò)展包ant-contrilb拷貝到Ant安裝目錄下的lib文件夾中。

3、設(shè)置Ant環(huán)境變量:ANT_HOME,變量值指向ant目錄。


4、在環(huán)境變量Path里增加:%ANT_HOME%/bin;%ANT_HOME%/lib;


5、設(shè)置好了之后驗(yàn)證一下。打開CMD輸入ant -version命令出現(xiàn)下面反饋,說明ant安裝成功


三、配置打包項(xiàng)目

Unity中導(dǎo)出Android項(xiàng)目


導(dǎo)出項(xiàng)目文件目錄如下:


導(dǎo)入到Eclipse中


在AndroidMainfest.xml中的application標(biāo)簽下添加一個(gè)用來識(shí)別渠道的標(biāo)簽

如果出現(xiàn)問題,修改之后彈出錯(cuò)誤,請(qǐng)選擇快速修正

1、生成build.xml文件

打開cmd并進(jìn)入到C:\Users\Administrator\Desktop\Test\4\com.game.qq這個(gè)項(xiàng)目目錄下 使用android update project -n com.game.qq -p .命令(注意-n表示項(xiàng)目的名稱,-p參數(shù)后面有個(gè)點(diǎn)表示當(dāng)前目錄,-p后面還有一個(gè)點(diǎn)(.))。

注意:如果是Unity打包出來的Android工程,-n后面加入的名稱一定要與Unity中PlayerSetting-BundleIdentifier中的名稱一致


執(zhí)行這個(gè)命令后,會(huì)在項(xiàng)目中自動(dòng)生成build.xml和local.properties文件。

編輯build.xml文件


"${sdk.dir}/tools/ant/build.xml"/>

"out.unaligned.dir"value="C:/Users/Administrator/Desktop/Test/4/"/>

"${out.unaligned.dir}"/>

"modify_update_file">

***********************

make channel ${channel}

"AndroidManifest.xml"

match='channel'

replace='${channel}'

byline="false"

encoding="utf-8"

/>


"out.unaligned.file"location="${out.unaligned.dir}/HelloWorld_${app_version}_${channel}_android.apk"/>

"make_one_channels"depends="savemanifest,modify_update_file,release,replacemanifest,deletebin"description="description">

"replacemanifest">

***********************

replacemanifest

"${basedir}\AndroidManifest.xml"/>

"..\temp\build\META-INF\AndroidManifest.xml"todir="${basedir}"encoding="utf-8"/>

"savemanifest">

***********************

savemanifest

"${basedir}\AndroidManifest.xml"todir="..\temp\build\META-INF"encoding="utf-8"/>

"deletebin">

"${basedir}\bin"/>


"foreach"classname="net.sf.antcontrib.logic.ForEach"classpath="D:/AndroidSDK/tools/lib/ant-contrib-1.0b3.jar"/>

"make_channels">

"make_one_channels"list="${market_channels}"delimiter=","param="channel">

打包的過程:

(1)第36行make_channels的target是ant的入口,該target中使用foreach循環(huán)調(diào)用名為make_one_channels的target(第17行)并把market_channels集合中的每個(gè)值替換給channel

(2)make_one_channels的target指定了每次打包的過程:

savemanifest:打包前先將原始的AndroidManifest.xml復(fù)制到與項(xiàng)目同一層級(jí)目錄下的temp下build下META-INF中

modify_update_file:匹配到AndroidManifest.xml中的channel并將其替換

release:自動(dòng)編譯加簽名

replacemanifest:刪除AndroidManifest.xml,將temp/build/META-INF中的原始AndroidManifest.xml復(fù)制回項(xiàng)目根目錄下

deletebin:刪除bin文件(:這步很重要,否則只能打出一個(gè)渠道的APK,當(dāng)時(shí)做這塊的時(shí)候碰到的問題)

打包方法的使用

打開cmd終端,執(zhí)行cd C:\Users\Administrator\Desktop\Test\4\com.game.qq

注意在運(yùn)行之前要注意先clean一下項(xiàng)目,不然可能會(huì)報(bào)錯(cuò)誤,切記?。。。?br>

需要在cmd終端,項(xiàng)目目錄路徑下執(zhí)行ant clean

BUILD?FAILED

D:\AndroidSDK\tools\ant\build.xml:649: The following error occurred while executing this line:

D:\AndroidSDK\tools\ant\build.xml:694: return 1




然后執(zhí)行

ant make_channels

如果項(xiàng)目中引入了第三方工程library,比如我的項(xiàng)目,引入三個(gè)第三方工程:

如果執(zhí)行打包命令,那么會(huì)報(bào)錯(cuò),這是因?yàn)槟莻€(gè)library 還不支持ant自動(dòng)編譯,我們需要先讓它也支持(注意:第三方工程要設(shè)置為Lib:

project->properties->Android->Library->Is Library 這個(gè)勾選上)。

進(jìn)入到library項(xiàng)目所在的目錄,輸入命令 android update lib-project -p ./ ?(注意是 lib-project);

執(zhí)行完之后,你會(huì)發(fā)現(xiàn)第三方工程目錄下多了build.xml文件和local.properties文件。然后你在執(zhí)行打包命令就可以成功打包了。


查看結(jié)果


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容