【问题标题】:Unity Android 64 Bit - Not Compliant ErrorUnity Android 64 位 - 不兼容错误
【发布时间】:2021-05-14 13:09:53
【问题描述】:

在将原生 Android Unity 集成版本发布到 Play 商店时遇到问题。我将它作为一个项目从 Unity 中提取出来,并将其作为库迁移到我们的原生应用程序中。

尝试将 .AAB 上传到 Play 商店时,出现以下错误:

This release is not compliant with the Google Play 64-bit requirement.
The following APKs or App Bundles are available to 64-bit devices, but they only have 32-bit native code: [10406]

我已经检查了以下内容:

  • 首先,我按照官方指南中的步骤操作:https://developer.android.com/distribute/best-practices/develop/64-bit

  • Unity 版本:2019.4.9f1,Android 播放器设置我选择了 ARMv7 和 ARM64。此版本的 Unity 中没有 x86 选项。脚本后端列为 IL2CPP

  • 在 build.gradle 文件中,我列出了:ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } 因为我们希望同时支持 32 位和 64 位

  • 我使用 Android Studio 中的 APK Analyzer 工具来分析应用的 APK 和 AAB 版本。 lib/armeabi-v7a 和 lib/arm64-v8a 文件夹中都列出了相同的 10 个“.so”文件。

  • 接下来,我结合使用 apktool 和“file”命令来提取应用程序的 APK 和 AAB 版本的内容,并仔细检查 arm64-v8a 文件夹中的“.so”文件是否位于事实上,64 位架构

  • 我测试,如果我在64位设备上直接使用以下命令安装APK版本,是成功的:

    % adb install --abi arm64-v8a app.apk
    Performing Streamed Install
    Success
    

我完全没有想法,我确实联系了 Play 商店寻求帮助,但他们在 2 天内没有回复,所以我开始坐立不安了。

有人知道我可能错过了什么吗?

编辑: 忘了说,这也在 app 和 unityLibrary build.gradle 文件中:

    packagingOptions {
        doNotStrip '*/armeabi-v7a/*.so'
        doNotStrip '*/arm64-v8a/*.so'
    }

这是一个包含我简化的 gradle 文件的 repo,如果它有帮助的话: https://github.com/azdragon2/unityandroid-stackoverflow-question

谢谢!

【问题讨论】:

    标签: android unity3d 64-bit


    【解决方案1】:

    问题源于我使用的 Unity 库中包含的“.bc”文件的使用。这些 bc 文件始终被解释为 32 位。您必须升级您正在使用的包含这些文件的库。

    您可以通过对您的 APK 或 AAB 文件运行以下命令来确定您是否有同样的问题:

    zipinfo -1 app.apk | grep \.bc$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-26
      • 2023-03-30
      • 2013-03-12
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 2016-02-28
      相关资源
      最近更新 更多