Unity导出的安卓工程利用ant进行多渠道循环批量打包

一:设置JAVA环境变量

做android开发的配置这个是基础。

win7 下配置java环境变量,下面是链接

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

二:配置Android的SDK环境变量

除了需要Java的环境变量,我们还需要配置Android的sdk的位置,名字是ANDROID_HOME,值就是你的android的sdk的位置,比如我的,就如下所示:

二:安装ant并设置ant环境变量

1、在Ant官网(http://ant.apache.org/bindownload.cgi)下载最新Ant包,在http://sourceforge.net/projects/ant-contrib/files下载Ant扩展包ant-contrib-1.0b3.jar(这个包就是用于循环编译多个渠道包)。

2、将Ant包解压到常用开发工具目录(自行选择,我的放在D:/Dev目录下),然后将下载下来的Ant扩展包ant-contrilb拷贝到Ant安装目录下的lib文件夹中。

3、设置Ant环境变量:ANT_HOME,变量值指向ant目录。

4、在环境变量Path里增加:%ANT_HOME%/bin;%ANT_HOME%/lib;

5、设置好了之后验证一下。打开CMD输入ant -version命令出现下面反馈,说明ant安装成功

三、配置打包项目

Unity中导出Android项目

 

导出项目文件目录如下:

导入到Eclipse中

在AndroidMainfest.xml中的application标签下添加一个用来识别渠道的标签

如果出现问题,修改之后弹出错误,请选择快速修正

1、生成build.xml文件

打开cmd并进入到C:\Users\Administrator\Desktop\Test\4\com.game.qq这个项目目录下 使用android update project -n com.game.qq -p .命令(注意-n表示项目的名称,-p参数后面有个点表示当前目录,-p后面还有一个点(.))。

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

执行这个命令后,会在项目中自动生成build.xml和local.properties文件。

编辑build.xml文件

<!-- value 后面接的是工程的路径 -->
<property name="out.unaligned.dir"
        value="C:/Users/Administrator/Desktop/SDK/Share/WCA斗地主" />
<mkdir dir="${out.unaligned.dir}" />
<target name="modify_update_file">
<echo>*********************** make channel ${channel}</echo> <replaceregexp file="AndroidManifest.xml"
match='channel'
replace='${channel}'
byline="false"
encoding="utf-8"
/>
<property name="out.unaligned.file"
location="${out.unaligned.dir}/WCA_${channel}.apk"/> </target> <target name="make_one_channels"
depends="savemanifest,modify_update_file,release,replacemanifest,deletebin" description="description">
</target> <target name="replacemanifest">
<echo>*********************** replacemanifest</echo>
<delete file="${basedir}\AndroidManifest.xml"/>
<copy file="..\temp\build\META-INF\AndroidManifest.xml"
todir="${basedir}" encoding="utf-8"/>
</target> <target name="savemanifest">
<echo>*********************** savemanifest</echo>
<copy file="${basedir}\AndroidManifest.xml"
todir="..\temp\build\META-INF" encoding="utf-8" />
</target> <target name="deletebin">
<delete dir="${basedir}\bin" />
</target>
<!-- classpath 接的是ant的路径 -->
<taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach" classpath="D:/AndroidSDK/tools/lib/ant-contrib-1.0b3.jar" />
<target name="make_channels">
<foreach target="make_one_channels" list="${market_channels}"
delimiter="," param="channel">
</foreach>
</target>

还需要手动创建ant.properties

内容如下:

key.store=C:/Users/Administrator/Desktop/Test/4/com.game.qq/com.game.qq.keystore
key.alias=beijing
key.store.password=123456
key.alias.password=123456
market_channels=wca,QQ,360,91

2、如果项目中引入了第三方工程library,比如我的项目,引入三个第三方工程:

如果执行打包命令,那么会报错,这是因为那个library 还不支持ant自动编译,我们需要先让它也支持(注意:第三方工程要设置为Lib:
project->properties->Android->Library->Is Library 这个勾选上)。
进入到library项目所在的目录,输入命令 android update lib-project -p ./  (注意是 lib-project);
 

打包的过程:

(1)第36行make_channels的target是ant的入口,该target中使用foreach循环调用名为make_one_channels的target(第17行)并把market_channels集合中的每个值替换给channel

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

savemanifest:打包前先将原始的AndroidManifest.xml复制到与项目同一层级目录下的temp下build下META-INF中

modify_update_file:匹配到AndroidManifest.xml中的channel并将其替换

release:自动编译加签名

replacemanifest:删除AndroidManifest.xml,将temp/build/META-INF中的原始AndroidManifest.xml复制回项目根目录下

deletebin:删除bin文件(:这步很重要,否则只能打出一个渠道的APK,当时做这块的时候碰到的问题)

打包方法的使用

打开cmd终端,执行cd C:\Users\Administrator\Desktop\Test\4\com.game.qq

注意在运行之前要注意先clean一下项目,不然可能会报错误,切记!!!!

需要在cmd终端,项目目录路径下执行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

然后执行

ant make_channels

整理的Unity导出安卓工程利用ANT进行多渠道批量打包APK的更多相关文章

  1. unity接入安卓sdk (unity调用安卓工程)

    1.安装jdk 并且配置环境,这个网上资料很多,这里不说了 2.安卓开发软件eclipse集成环境版 下载地址 http://tools.android-studio.org/index.php/ad ...

  2. Android中利用ant进行多渠道循环批量打包

    公司负责Android开发的小伙伴学习能力稍微偏弱,交代给他的自动化打包的任务,弄了好久依然没有成效.无奈只好亲自出手. 没有想到过程很顺利,我完全按照如下文章的步骤进行: 主要参考: Android ...

  3. 在Android开发中使用Ant 三:批量打包

    批量打包最常用到的地方是进行产品推广时,为每个渠道打一个包.上一篇随笔中,介绍了怎样进行一次完整的打包,批量打包只要在此基础上做一次循环即可. 在打包之前要做两个准备工作,一个是读取渠道,一个是修改存 ...

  4. 【已解决】unity4.2.0f4 导出Android工程报错:Error building Player: ArgumentException: Illegal characters in path. [unity导出android工程 报错,路径含有非法字符]

    使用unity3D开发的一个客户端,需要导出为Android工程,然后接入一些第三方android SDK. unity版本 操作系统为: OS 名称: Microsoft Windows 7 旗舰版 ...

  5. Unity导出Gradle工程给Android Studio使用

    1 Unity导出Gradle项目 Unity打包时Build System选择Gradle,勾选Export Project 2 Android Studio导入Unity导出的Gradle项目 打 ...

  6. android ant 多渠道批量打包

    注:本文转载于:http://blog.csdn.net/zz7zz7zz/article/details/8915701 前言: 利用ant 可实现多渠道,批量打包. 正文: 思想:通过循环更改An ...

  7. Ant多渠道批量打包

    由于我现在已经用更好的gradle了,所以关于ant我只是简单的讲一讲,如果想学gradle请到我的博客中查看 http://www.cnblogs.com/uncle2000 ant的配置请自行百度 ...

  8. 最新的Android Sdk 使用Ant多渠道批量打包

    实例工程.所需的文件都在最后的附件中.    今天花费了几个小时,参考网上的资料,期间遇到了好几个问题, 终于实现了使用Ant批量多渠道打包,现在,梳理一下思路,总结使用Ant批量多渠道打包的方法:1 ...

  9. unity与安卓通讯的一些事儿

    1.unity与安卓通讯的两种方法: 第一种是unity导出安卓工程,在unity的BuildSetting窗口可以将unity工程导出为安卓工程,然后再用Eclipse或者Android Studi ...

随机推荐

  1. Codeforces 479E. Riding in a Lift (dp + 前缀和优化)

    题目链接:http://codeforces.com/contest/479/problem/E 题意:         给定一个启示的楼层a,有一个不能去的楼层b,对于你可以去的下一个楼层必须满足你 ...

  2. 2013-2014集训之DP

    第一周: 经过漫长的时间,终于有时间来写一下结题报告. 地址http://acm.hust.edu.cn/vjudge/contest/view.action?cid=36180#overview A ...

  3. CodeForces 711D Directed Roads (DFS判环+计数)

    题意:给定一个有向图,然后你可能改变某一些边的方向,然后就形成一种新图,让你求最多有多少种无环图. 析:假设这个图中没有环,那么有多少种呢?也就是说每一边都有两种放法,一共有2^x种,x是边数,那么如 ...

  4. A - Oulipo

    A - Oulipo Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit S ...

  5. 非阻塞同步机制与CAS操作

    锁的劣势 Java在JDK1.5之前都是靠synchronized关键字保证同步的,这种通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程 持有守护变量的锁,都采用独占的方式来访问这些 ...

  6. 编译ffmpeg(iOS)

    一,x264库的编译 首先到http://www.videolan.org/developers/x264.html下载x264的库,然后解压,修改文件夹名称为x264     二,下载ffmpeg2 ...

  7. Eclipse设置、调优、使用

    eclipse调优 一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,就会有很大的改善. 加快启动速度 1. ...

  8. openmp 并行求完数

    // GetWanShu.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "omp.h" #inclu ...

  9. InteractivePNG

    在as3中很多时候需要只能选中png中可视区域,即透明区域“感觉可以穿透”.

  10. 面向过程MySQL数据库链接操作

    刚好今天复习到这个章节,将就发布出来,就当是为自己复习了 //链接数据库 $link = mysqli_connect('localhost/IP地址','用户名','密码','数据库名'); //设 ...