首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之Android使用ANT自动打包(七十九)
2014
12-28

Unity3D研究院之Android使用ANT自动打包(七十九)

好久没有写博客了,并不是我不想写,而真是没有时间写。感谢这段时间大家的留言,如果我没有回复的请见谅。最近做了一段时间Android渠道包的接入也算积累了点经验,希望可以帮助以后的朋友们,嘿嘿。

Unity打Android渠道包的传统步骤是,先把SDK放在plugins目录下,设置好证书后最后用unity直接生成.apk。 这是的确是正确的打包方式,但是这样做非常容易出错,SDK不能直接放在plugins目录下,必须要先编译。有些渠道的SDK TMD不是编译好的.jar 而是一个android工程,你必须要让你的unity工程去依赖它。。。所以这样做一不小心就会出错。。

为了彻底解决容易出错的问题,那么我们一定要使用Android的Ant来打包。结合到Unity的工作原理就是,先把unity工程导出成一个android工程,然后在把渠道的 assets lib 依赖 以及icon 拷贝进去,最后通过ant直接生成apk来。

1.先将unity导出成android工程,大家可以看我以前的文章。

http://www.xuanyusong.com/archives/3162

2.拷贝assets lib 依赖 以及icon

其实无非也就是shell脚本的 cp命令,多余的我也就不说了。这里我需要说一下splash启动图,unity不允许在android工程里面设置启动图,必须要在unity里设置。可以提前把一张启动图放在unity里面,然后在ProjectSetting里面关联上启动图,自动打包的时候根据不同的渠道将splash图片覆盖一下unity工程里面的图片,然后导出即可。

3.Android 与 ant 环境搭建

http://developer.android.com/sdk/index.html 建议你直接下载ADT ,这里不仅包含SDK也包含开发编辑器。如下图所示eclipse就是ADT开发编辑器,sdk就是android的sdk

Unity3D研究院之Android使用ANT自动打包(七十九) - 雨松MOMO程序研究院 - 1

 

如下图所示,记得要SDK都更新到最新,不然ant打包会报错。

Unity3D研究院之Android使用ANT自动打包(七十九) - 雨松MOMO程序研究院 - 2

 

打开ADT(Eclipse)在导航菜单栏中选择Help -> Install New Software

Work with中输入 http://download.eclipse.org/releases/juno

如下图所示,在下拉列表中选择General Purpose Tools 找到Eclipse Plug-in Development Environment (因为我已经装过了,所以这里不显示) 安装即可。

Unity3D研究院之Android使用ANT自动打包(七十九) - 雨松MOMO程序研究院 - 3

 

安装完毕后,打开终端直接输入 open -e .bash_profile

如下图所示,将ANT 和Android的环境变量都配置完毕。记得要关闭一下本文以及终端,方可生效。

Unity3D研究院之Android使用ANT自动打包(七十九) - 雨松MOMO程序研究院 - 4

到这一步ant的环境已经配置完毕。如下图所示,在ANT打包前我们要先把android工程生成出来。

AndroidManifest.xml 游戏名 包名 activity service都在这里,这里不做过多的解释了。。

assets:unity的.so放在这里。如果渠道包assets下面有文件也一并放在这里。

bin:就不用管了,他是android编译生成出来的。

build.xml:ant打包必备的资源文件,之前我们配置的环境变量就是为了它。下面我在贴出来内容。

gen:生成出来的,不用管了。

keystore.properties:证书的描述文件,证书的路径、密码啊啥的都在这里。

libs:将渠道libs文件夹下的拷贝机进来。

project.properties:如果渠道包是一个工程,那么就必须在这里进行依赖。这里写的就是依赖工程的路径。

res:资源

src:代码

Unity3D研究院之Android使用ANT自动打包(七十九) - 雨松MOMO程序研究院 - 5
build.xml

最后就是ant打包的指令了。

tempEclipsePath:是android 工程路径,先clean在release。

ant -buildfile ${tempEclipsePath}/build.xml clean
ant -buildfile ${tempEclipsePath}/build.xml release

这样包就打在了bin目录下面,可以mv把apk拷贝到你需要的目录下面就好了。

mv -f ${tempEclipsePath}/bin/Game-release.apk ${out}

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

    • PlayerSettings.Android.keystoreName = args[“keystoreName”];
      PlayerSettings.Android.keystorePass = args[“keystorePass”];
      PlayerSettings.Android.keyaliasName = args[“keyaliasName”];
      PlayerSettings.Android.keyaliasPass = args[“keyaliasPass”];

      • 我的key.store是这样写的,结果运行还是找不到签名文件
        key.store=E:key.keystore
        key.alias=key.keystore
        key.alias.password=123456
        key.store.password=123456
        version=1.0.3

  1. 雨松兄弟好,按传统的方法打包能调到android的函数:用unity自带的打包,资源放在Assets/android下。当我把不添资源(assets,lib…)的空包导出android项目,copy 资源到android项目,用ant打包,出来的包调不到android的函数?我反编译了代码,包里已经有android的函数了。这个问题遇到过吗?

  2. momo 大哥 我使用的win32 环境下 遇到这个问题,请问知道这错咋解决么
    Buildfile: cygdrivedSoftwareadt-bundle-windows-x86:cygdrivedSoftwareadt-
    bundle-windows-x86:cygdrivedSoftwareJavajdk1.7.0:cygdrivedSoftwareandro
    id-ndk-r9:cygdrivecWindowssystem32:cygdrivecWindows:cygdrivecWindowsS
    ystem32Wbem:cygdrivecWindowsSystem32WindowsPowerShellv1.0:cygdrivecPro
    gram does not exist!
    Build failed
    Buildfile: cygdrivedSoftwareadt-bundle-windows-x86:cygdrivedSoftwareadt-
    bundle-windows-x86:cygdrivedSoftwareJavajdk1.7.0:cygdrivedSoftwareandro
    id-ndk-r9:cygdrivecWindowssystem32:cygdrivecWindows:cygdrivecWindowsS
    ystem32Wbem:cygdrivecWindowsSystem32WindowsPowerShellv1.0:cygdrivecPro
    gram does not exist!

  3. 我们也是这么干的,不过有点不一样。导出的android工程,每次变的只是assets下的东西,libs里面的库文件都是从untiy3d安装目录下copy的,分release和debug;这样每次导出来的可以算是游戏资源了,只要把android多渠道环境配置好,再python + ant,copy游戏资源,ant打包,一百个渠道都ok,很方便的

  4. 雨松老师,我是新手一枚,在研读您的书,我想请教如何使一个物体以一定速度转动一定角度呢?看您的书里写的是点击按钮移动一定距离,能不能实现点击一下,以一定速度移动一定距离呢?!因为涉及到课题,比较急,还希望老师能解答一下!

  5. 来支持松松!太强大了,什么IDE你都会。。。。后期教程出点AndroidStudio跟Unity的哇 ,Android多渠道打包在AndroidStudio里面更方便了….ANT到现在都没用过。。。你 Unity3D研究院之Android使用ANT自动打包(七十九) - 雨松MOMO程序研究院 - 1 霸气!!!

  6. 雨松大大,感觉这还是将Eclipse中的Android项目打包放入到Unity中作为插件使用,并不像这篇文章前面所讲述的将Unity中的项目导出然后加入到Eclipse中作为插件使用。