本文依据官方文档 Reducing APK Package Size整理而来,不过我会陆续添加自己减少包大小的心得。
ETC1 纹理
当使用ETC1打Android包时,注意ETC1是不会压缩带Alpha通道的纹理的。当你的纹理需要Alpha通道而又不得不使用ETC1压缩时,可以使用两张分开的纹理,一张颜色一张存放Alpha值。
创建一个空的项目
创建新的工程时,不要带初学者内容,如果要使用的话使用UE4的迁移工具来导入想要的资源。
压缩Cook过的内容
最容易且最快的方法就是告诉UE4要压缩打包的APK包。可以通过EditàProject Setting,通过点击红色区域的高级设置找到Create compressed cooked packages来启用压缩。这样一般包的大小会减小50%以上,比如你原来有100兆,那么压缩后一般会小于50兆。
设置工程的关卡
正确地设置默认启动的关卡可以减少APK的大小(因为Android中有obb文件,所以此处应该是说的是减小apk最小包的大小)通过点击EidtàProejct settings来设置默认加载的关卡。
检查Cook的内容
为了确定只跟工程相关的文件添加到了apk中,你可以在Cooked文件夹中来检查所有cook的资源,它在(ProjectName)\Saved\Cooked文件夹下。
开发版和发布版大小(Development VS Shipping)
如果要发布程序切记要发布Shipping版本,一般发布版本可能比开发版本少14%左右。
针对单个设备设置LOD级别
UE4 4.8及以后可以为每个设置指定纹理大小。
移除未使用的内容
当最终版本要发布时,记得移除未使用的或者用途测试用途的内容。
移除未使用的插件
在编辑器中关闭未使用的插件可以确保不会把无用的内容和代码打包进最终的apk包中,因为有些包是需要一个资源和代码来运行的。通过WindowsàPlugins来禁用未使用的组件。
打包黑名单
UE4 4.9及以后版本可以通过在工程Build/Platform/(Target Platform Folder)目录中添加打包一些文本文件来排除部分或者路径下全部文件的打包。
下面是一个示例:
前面三个可以安全删除,但是AssetRegistry.bin在某些工程中可能是需要的,所以需要严格地测试来确保程序正确的运行。
最大动态点光源数量
UE4及后续版本中添加了设置最大动态点光源数量的选项。通过设置它的值可以一定程度上减小apk的大小,主要是减少了编译出的shader的个数及大小。这个属性在EditàProject SeetingsàMobileàMax Dynamic Point Lights