您的位置:首页 > 移动开发 > Unity3D

Unity ios、android、pc一键打包(三)

2016-03-29 21:30 1021 查看
ios篇

ios不允许代码热更,但是其他资源文件可以热更,我们利用uLua也可以进行热更,只不过效率有点低,但是我们主要考虑不热更代码的一键打包功能。

1、主要是在mac os系统下进行打包,最好的办法就是利用shell脚本。如果对python有大致的了解也可以用。

#shell http://www.cnblogs.com/tacg/archive/2014/12/09/4153068.html cd ../../../
# 当前目录
UNITY_PROJECT_PATH=$PWD
cd ../
XCODE_EXPORT_PATH=$PWD/iosexprt
BUILD_LOG_PATH=$PWD/buildlog
cd $UNITY_PROJECT_PATH

echo clean exist Xcode project,path=${XCODE_EXPORT_PATH}
rm -rf ${XCODE_EXPORT_PATH}
rm -rf ../Ipa

#-logFile is important 这里日志生成的重要部分.函数奔溃找回都是通过此处的
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -quit -projectPath ${XCODE_EXPORT_PATH} -excuteMethod
PublishCommand.Build32Bit -logFile $BUILD_LOG_PATH

#build ipa

#证书 需要自己申请
xcodebuild build -target Unity-iphone CODE_SIGN_IDENTITY="" PROVISIONING_PROFILE=""
APP_PATH=$(find ./build -name *.app)
APP_NAME=$(basename $APP_PATH .app)

echo run xcode
xcun -sdk iphones PackageApplication -v $APP_PATH -o $XCODE_EXPORT_PATH/build/$(APP_NAME).ipa

mkdir ../Ipa
mv $XCODE_EXPORT_PATH/build/$(APP_NAME).ipa $UNITY_PROJECT_PATH/../Ipa/$(APP_NAME).ipa

#build 64bit
# IL2CPP: http://www.gameres.com/339671.html # 一键打包: http://www.xuanyusong.com/archives/2720


1) android打包点都差不多哦,调用Unity内部函数,

2) CODE_SIGN_IDENTITY="" PROVISIONING_PROFILE="" 是你的开发者证书

3) 以上是针对ios 32bit的打包,64位稍后再说。

4) -logFile $BUILD_LOG_PATH 是生成日志的地方,ios靠这个文件才能还原日志,可利用PP助手查看

2、导出的XCode工程经常会嵌入第三方SDK,sdk经常会修改object-c代码,加入第三方framework,手动导入很麻烦

方法:参考一下两篇文章,阐述得比较详细,看完即了解,主要是unity打包的时候会有一个回调函数OnPostProcessBuild.
http://www.xuanyusong.com/archives/2720 http://www.xuanyusong.com/archives/2734
3、IOS 64bit Build,unity在在以下设置

PlayerSetting->Scripting Backend-> IL2CPP

ARchitecture : Armv64 > Armv7 > Universal(通常是Armv6)

这个指令集通常是向下兼容的,对应的机型选择相应的指令集效率更高,通常我们选用universal

Armv6:iphoe4以下 通常第一代机型

Armv7:iphone4/4s

Armv7:iphone5/5c

Armv64:iphone5s以上

1) 先参考一下两篇文章了解IL2CPP,为什么我们要了解这个IL2CPP尼?这是一个趋势?
http://www.gameres.com/339671.html http://zhuanlan.zhihu.com/indieace/19972689
2) 启用IL2CPP怎么都会剥离代码,这是一个万年的坑,剥离代码往往会出现很多问题,unity Assets/link.xml是阻止代码剥离的xml文件

剥离的坑:

2.1 在unity4.6以上经常有人会用到Animator这个类,但是迫于他有很多坑bug所以经常有人会用回Animation,如果你没有用到IL2CPP就会帮你剥离

而这些经常是绑定在预制上的,你播放特效或者动画的时候就会失效,只好在link.xml防止被剥离拉

2.2 经常第三方库没有及时更新到64位bit经常会出现各种奇奇怪怪的bug,代码剥离要慎重使用啊
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: