之前写过一篇Unity自动打包工具,偏重于讲述unity3d在Windows平台上打包wp和android。最近嫌在我电脑上打android包影响我的开发工作,就在mac上做了一下android打包。本来想着很简单的事情,但是最后折腾了我一天时间。因此记录一下,以作总结。
首先是安装开发环境java sdk/android sdk&ndk/ant/unity android support等。最近墙的很厉害,推荐在一个国内站点(http://android-studio.org/)安装android studio。装好之后启动android studio,点选Configure启动SDK Manager,然后在线装android sdk/ndk/build tools等。
装好之后,设置环境变量。打开/Users/YOUR_UASER_NAME/.bash_profile,如果没有创建。比如我的设置如下:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home"
export ANT_HOME="/Users/macmini3/Downloads/softwares/apache-ant-1.9.7"
export ANDROID_SDK_HOME="/Users/macmini3/Library/Android/sdk"
export ANDROID_NDK_ROOT="/Users/macmini3/Downloads/softwares/android/android-ndk-r10e"
export CLASSPATH=".:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar:$ANT_HOME/lib"
export PATH=".:$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/build-tools/24.0.0:$ANDROID_NDK_ROOT"
保存之后执行生效,$source .bash_profile
然后再Unity->Preferences ->External tools设置sdk/jdk/ndk的路径。
然后写shell脚本,核心是对导出的android工程,调用下面几个命令,主要是用ant自动打包,然后签名、对齐等,最终生成apk
android list targets
android update project
ant release -buildfile $projdir/build.xml/
jarsigner
zipalign
写完之后我直接调用这个脚本,正常生成了apk。然后在打包工具里由C#调用它,竟然失败了,错误信息是android/ant/zipalign “command not found”。这是什么原因?前面不是已经在环境变量里设置了吗?百思不得其解,请教了一个linux高手,原来是需要在/usr/bin/目录建立一个软链接,比如
sudo ln -s -f /Users/macmini3/Library/Android/sdk/tools/android
sudo ln -s -f /Users/macmini3/Library/Android/sdk/build-tools/24.0.0/zipalign
sudo ln -s -f /Users/macmini3/Downloads/softwares/apache-ant-1.9.7/bin/ant
但是这样会提示“ln: Operation not permitted”。这是因为苹果在OS X 10.11中引入的SIP(System Integrity Protection)特性使得即使root权限也无法修改系统级的目录(也即rootless模式),所以需要关闭SIP。
重启,按着Command/Win+R,进入Recovery模式。然后在Utilities中选Terminal,执行#csrutil disable,重启就可以了。
现在终于可以愉快的一键出android包了!
相关链接:
1. Unity自动打包工具 http://blog.csdn.net/ynnmnm/article/details/36774715