Unity3D发布安卓包提审Google Play平台经验总结

政策说明

1,安卓包需要签名
2,自2019年8月1日起,所有新提审的包,需要既支持32位又要支持64位CPU

注意事项

  • 注意一:
    在这里插入图片描述
    Scripting Backend一定要选择IL2CPP,默认Mono是不支持64位的。
    Target Architectures勾选ARMv7和ARM64(默认是勾选了ARMv7的,Backend切换到IL2CPP才能够勾选得起ARM64)。建议x86就不要勾选了,目前安卓x86的市场份额不到1%。

  • 注意二:Strip Engine Code
    在这里插入图片描述
    默认这一项是勾选的,即对代码进行裁剪。勾选后会按照Managed Stripping Level选择的等级对代码裁剪。可以降低包体的大小,同时带来的风险会很大,导致IL2CPP后的代码在运行时出错(即,打包没有问题,但是运行游戏的过程中各种崩溃)。若是没有太多精力根据崩溃日志解决崩溃问题,建议取消勾选。
    提供几个参考链接,提供了一些常见崩溃问题及解决方案:
    Unity中使用Strip的总结
    官方:Managed code stripping
    官方:Unity-Managed bytecode stripping with IL2CPP

  • 注意三:三方库放置位置
    对于ARM体系
    32位库放置到Plugins/Android/libs/armeabi-v7a
    64位库放置到Plugins/Android/libs/arm64-v8a
    对于x86体系
    32位库放置到Plugins/Android/libs/x86
    64位库放置到Plugins/Android/libs/x86_64
    在这里插入图片描述

笔者遇到过项目中编译了安卓移动端32位的xlua so文件,且目录放置正确(libs/x86)。但是并没有编译64位的对应文件。项目IL2CPP打包选择的是ARMv7和ARM64(没有选择x86架构),但是提审包依旧报错:此版本不符合Google Play关于提供64位版本应用的规定。以下APK或App Bundle面向64位设备,但只有32位原生代码:1
在这里插入图片描述
原因就是工程里面放了x86架构的32位代码文件,但是并没有在对应目录放64位代码文件。虽然我目标架构平台并没有勾选x86架构,但是依旧报错。这一点一定要注意!!!

简单验证

法一
apk包,后缀改成.zip,解压后,在lib目录下,能看到arm64-v8a和armeabi-v7a两个目录,即可以初步说明打的包支持64位CPU
法二
使用android studio分析apk包Build-->Analyze APK
android studio这个工具非常强大,就不用像法一那样改后缀了。而且还能看到Android Manifest.xml的真实内容。一般而言Unity打出的安卓apk,通过法一打开Manifest是乱码。
官方:支持 64 位架构

发布了198 篇原创文章 · 获赞 23 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/iningwei/article/details/104484709