此版本不符合 Google Play 关于提供 64 位版本应用的规定 以下 APK 或 App Bundle 面向 64 位设备


编译时看看是不是v8a,且需要.aab格式的包

我的是
ndk{
abiFilters ‘armeabi-v7a’,‘x86’
}
见鬼了,构建时勾选的明明是armeabi-v7a:arm64-v8a,那我是不是把这里改为

	    ndk{
	        abiFilters 'armeabi-v7a','arm64-v8a'
	    }

就OK了?

是的,是这样改。
有几点注意下:
1.删除build目录下x86相关的文件夹(因为你之前选过,需要手动删除,或者换个目录重新构建)

这个表明你自己改过build.gradle文件,这种情况下你在cocos里面build的时候有没有勾选哪个都不产生影响的,最终都是build.gradle文件里这个设置生效。

如果你的包体超过150M,参考我另一篇文档

只要是文件夹带x86(还有x86-64文件夹也该删吧)了的就一律删掉是吧?
那也就是说
1 ndk{
abiFilters ‘armeabi-v7a’,‘arm64-v8a’
}
这个需要修改

2 删除x86和x86-64的文件夹

这两步就OK了吧?

不用删,abiFilters ‘armeabi-v7a’,‘arm64-v8a’ 就行了。这个就是filter,打包的时候会自动把其他平台的库去掉的。

嗯,打完包,再检查下包里面的配置

您的意思是我改过build.gradle里面的 ndk{
abiFilters ‘armeabi-v7a’,‘arm64-v8a’
}?

这个真没改过,但build.gradle里面的其他东西肯定改过。

你肯定改过,cocos打包出来的默认build.gradle里面是没有直接写 ndk{
abiFilters ‘xxxxx’
}
的,它是通过读取PROP_APP_ABI这个字段生成出来的,而这个字段就来源于你在编辑期内的勾选 :smile:

奇怪了,我真没下意识改过。。。。那没准是在网上乱拷bulid.gradle内容时中招的

另外请教一下,我上一个游戏,armeabi-v7a,arm64-v8a,x86, x86-64都勾选了,而且我确认了打包后里面也包括这四项。但上架谷歌的时候没事。
这次的游戏,打包后里面只有armeabi-v7a和x86,就报上面那个此版本不符合google play关于提供64位版本的错。
那是不是可以理解为,如果x86, x86-64这两个都有就上架没事,只有x86这一个就不行?

如果没有事,你都勾上吧。毕竟有人在模拟器上玩。包的体积够的情况下

嗯嗯,我考虑下都勾选上。我上面的理解没错吧?如果x86, x86-64这两个都有就上架没事,只有x86这一个就不行?

主要是有没有arm64-v8a吧?

不太清楚,反正网上说有x86就不行,但我上一个游戏armeabi-v7a,arm64-v8a,x86, x86-64都有就没事。现在考虑还是像上一个游戏一样,把这四项都弄上得了。。。。

勾选armeabi-v7a,arm64-v8a这两个的情况下,现在没有手动删除x86目录,打包后lib文件夹里面只有armeabi-v7a,arm64-v8a。

确认到这一步就可以了吧?还有别的需要确认吗?

嗯,可以了

嗯嗯,非常感谢!

有一个小技巧,安卓包打完以后,需要打开安装包的lib目录看一下,确认各个架构目录下的so文件数量一致,如果不一致的话必会在对应机型上闪退。

嗯嗯,学习了,非常感谢!