首页 > 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
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之Android使用ANT自动打包(七十九)》有 32 条评论

  1. 刹那芳华 说:

    keystore.properties怎么配置?

    • 雨松MOMO 说:

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

    • 雨松MOMO 说:

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

  2. 冰山 说:

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

  3. Wen 说:

    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!

  4. Sloane 说:

    MOMO顶起,但我生成出来的Android项目里面怎么没有build.xml这个文件啊

  5. Sloane 说:

    MOMO顶起,但我生成出来的Android项目里面怎么没有build.xml这个文件啊

  6. sesr 说:

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

  7. sesr 说:

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

  8. 红枫 说:

    一直returned 1 可能是我的unity没启动,我下载了unity plugin 找不到我的unity,我安装在了D盘下面,请问如何更改啊

  9. 不提 说:

    ant换成gradle吧

  10. 张洁勇 说:

    嗯?没看到你下载apach的ant哇?

  11. 独荷 说:

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

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

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

  14. KKD 说:

    赞 非常给力 谢谢分享 Unity3D研究院之Android使用ANT自动打包(七十九) - 雨松MOMO程序研究院 - 1

  15. vsattce 说:

    2L是我的

留下一个回复

你的email不会被公开。