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,代码剥离要慎重使用啊