降低的播放机大小主要有两个途径:一是更改Xcode内的Active Build Configuration,二是更改Unity的Stripping级别。
在发布模式下生成
你可以在 Xcode的Active Build Configuration下拉菜单中的调试和发布选项之间进行选择。根据自身游戏的大小,选择发布模式生成的player会比选择调试模式减少2-3MB的大小。
在发布模式下,player会去掉任何的调试信息进行生成,所以如果你的游戏崩溃或有其他问题,将是没有可用的、可输出的堆栈跟踪信息。这适合发布已完成的游戏,但你更应该在开发过程中使用调试模式。
iOS Stripping级别(Advanced License feature)
尺寸优化工作可通过以下几种方式被剥离机制激活:
Strip assemblies级别:通过分析脚本的字节码,来将这些脚本没有引用的类和方法从 Dll 中删除,从而使其不进入 AOT编译阶段。这种优化减少了主要的二进制以及相应 Dll的大小。在不使用反射的条件下,这种优化是安全的。
Strip ByteCode级别:任何.Net Dll(存储数据文件夹中)将从元数据中被剥离出来。这是可能的,因为所有的代码都已经 AOT阶段被预编译并链接到主要的二进制文件中
使用micro mscorlib级别:使用一种特殊的、较小的mscorlib版本。某些部件将从此库中被移除,例如,安全,Reflection.Emit,远程处理,非公历日历等组件都将被删除。此外,内部组件之间的相互依赖性也会被降至最低。该种优化减少了主要的二进制以及mscorlib.dll的大小,但不能与一些系统和 System.Xml程序集类兼容。因此,小心地使用它。
这些级别是累积的,第3级优化隐式地包含级别 2和级别1,而第 2级优化则包含级别1。
Micro mscorlib是核心库的最低级版本。只有这些项目是目前Unity中的Mono运行库所需要的。使用micro mscorlib的最佳做法是不使用任何你的应用程序所不需要的.Net的类或其他功能。GUID就是一个你可以忽略的例子,她可以轻松地被自定义的伪 Guid所替代,这样做将产生更好的性能和更小的应用程序。
如何处理使用反射机制的Strip
Strip程度取决于静态代码的分析,但有时侯,这种分析并不是很有效,特别是针对使用类似反射一样的动态功能的代码。在这种情况下,有必要给出一些提示来指出哪些类是不应该被触动的。Unity支持对于每个项目都给出一个自定义Strip黑名单。使用黑名单是创建 link.xml文件并将它放入Assets文件夹的一个简单方法。以下是一个的 link.xml文件的示例。其中有保留标记的类将不会被Strip:
有时侯,我们很难确定哪些类会被进行错误的Strip。通常你可以通过在模拟器上运行已被Strip的应用程序和检查 Xcode控制台的错误消息来获取有用的信息。
简单的清单,使你的发布版本尽可能地小
1.最小化你的资源(assets):启用 PVRTC压缩纹理,并尽可能低降低其分辨率。此外,尽量缩减无损压缩的音频的个数。这里还有一些额外的缩减文件大小的提示。
2.设置iOSStrip级别为Use micro mscorlib。
3.设置脚本调用优化级别为Fast but no exceptions。
4.不要让你的任何代码与System.dll或 System.Xml.dll有关联,因为这些库并不兼容micro mscorlib。
5.去掉不必要的代码关联。
6.将API兼容性级别设置为.Net 2.0子集。请注意.Net 2.0子集与其他库与兼容性比较有限。
7.设置目标平台为armv6 (OpenGL ES1.1)。
8.不要使用 JS阵列。
9.避免泛型容器与结构等类型相结合。
我能用Unity创造出低于 20 mb的应用程序吗?
当然可以。如果所有优化被都关掉,一个空项目在AppStore中大小大致为 13 MB左右。这在游戏中为你提供了大约7 MB的压缩资源预算。如果你拥有先进的许可证(并因此获得Strip选项),那么只含有主相机的空场景在AppStore中可压缩到大约 6 MB(zipped和 DRM连接),这样,你就可以有大约
14 MB可用空间用于压缩资源。
为什么我的应用程序发布到AppStore后大小增加了?
当他们发布你的应用程序时,苹果首先对二进制文件进行加密,然后将它通过 zip压缩。最常见的,苹果 DRM会使二进制文件大小增加大约 4 MB左右。作为一般规则,你应预见到的文件最终大小大致为所有文件(除了可执行文件)的 zip压缩大小,再加上未压缩的可执行文件的大小。
分享到:
相关推荐
vuforia-samples-advanced-android-ios-unity-4-2-3.zip官网下载太慢了,放在网盘方便大家下载
BestHTTP是一个用于Unity游戏开发的网络通信插件,它提供了一套简单易用的API,用于进行HTTP、WebSocket和...跨平台支持:BestHTTP适用于Unity游戏开发,并且支持多个平台,包括Windows、Mac、Linux、iOS和Android等。
Use the Vuforia SDK to build mobile vision applications for Android and iOS. Apps can be built with Eclipse (Java/C++), XCode (C++) and Unity - the cross-platform game engine.
unity3d增强现实最新版 vuforia-unity-android-ios-3-0-9.unitypackage开发包插件
Unity3D IOS下保存和读取资源(保存到文件夹目录),在Unity中IOS下将资源读取和保存,保存可以保存到文件夹目录
高通vuforia-unity-mobile-android-ios-4-0-5-beta
vuforia-unity-mobile-android-ios-4-2-3 .unitypackage官网下载太慢了,上传方便大家,下载,学习,交流!
vuforia-samples-core-android-ios-unity-4-2-3.zip 原始资源420多兆,官网下载太慢,放在网盘里供下载
Unity3d 调用Ios相册,对图片进行剪彩,然后加载图片到Unity3d RawImage上面,为unity3d 2018.3.0工程
用来做unity3d马甲包,CS源码混淆,功能:1、混淆私有函数名,私有变量名 2、函数体垃圾代码注入 3、函数变量名混淆,想免费提供下载,但是不知道怎么被CSDN自动设置5积分了,如果需要请联系作者QQ1367712978,直接...
资源名称:iOS游戏开发之Unity3D引擎系列资源目录:【】Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动【】Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放【】Unity3D 游戏引擎之IOS高级界面发送消息...
5. 重命名原生项目内的main.m文件后缀为main.mm. 切记 6. 在原生应用的AppDelegate中封装UnityAppController 7.
超好用的增强现实(AR)代码,利用Unity3D平台,可输出android和ios版本
Unity 保存图片到IOS相册 ,可读写Ios 相册 完整工程。 删除了Library 太大
Unity3d json库 ios上无错,库里没有用到反射
sqlite-unity-plugin:用于Unity3D Android和iOS构建SQLite插件
Laravel开发-laravel-ota-distribution-ios 此包创建上载iOS版本和创建清单文件准备下载iOS版本所需的HTML下载视图和路由。
高通发布的增强现实插件,为unity3d量身打造,同时支持android和ios