【问题标题】:64 bit version issue in react-native android app by google play store谷歌播放商店在 react-native android 应用程序中的 64 位版本问题
【发布时间】:2018-07-21 18:56:38
【问题描述】:

根据https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html

在 2019 年 8 月,Play 商店将要求新应用和带有原生库的应用更新除了提供 32 位版本之外还提供 64 位版本。

我有一个 React Native 应用程序(包括本机代码)。我的问题是如何知道我正在使用的第三方库甚至我自己的代码是否不支持 64 位?我该如何解决?

更新

我将x86_64 添加到我的build.gradle 中,现在我在apk 中看到x86_64 文件夹,但我认为有些文件丢失了。

这是我的x86 文件夹的样子:

这是我的x86_64 文件夹的样子:

【问题讨论】:

  • 您能否告诉我们这是否足以使您的 Android 应用符合要求?我还在 RN0.40 上,不想升级所有东西。
  • 如何检查您的合规性?有同样的问题

标签: android react-native google-play 32bit-64bit react-native-android


【解决方案1】:

【讨论】:

  • React Native 0.59 发布,支持android 64位架构。
  • 所以我必须更新 react native 版本以提供 64 位架构支持,对吧?
  • 我有一个使用 0.57 版本的 react native 在 Play 商店上发布的应用程序,现在我收到了有关 64 位版本的邮件,那么我现在需要做什么?我应该将该项目的 react native 版本更新到 0.59,然后发布它的更新吗?
  • 是的,只需升级到 0.59 并生成新版本。上传它,如果它工作正常!
  • 真的没有办法让它在像 react-native 0.57.8 这样的早期版本上工作吗?我继承了一个庞大的 RN 项目,虽然我尝试升级它(我收到它的时候是 0.54),但结果是不可能升级到 0.58,因为它不再适用于中继经典;而且我还有将近 200 个文件仍在使用 relay-classic 进行转换。
【解决方案2】:

应用程序的所有本机代码都存储在 apk 根目录下的 libs/ 目录中。例如,对于已编译的 ARM 或 x86 代码,您可以在 libs/architecture_type/lib_name.so 中找到它。

APK 本质上只是一个 zip 文件,因此您可以使用任何 zip 工具将其解压缩。

list of architectures (ABIs) is here。如果您没有 arm64-v8a 的目录或有 x86 但没有 x86_64,那么您缺少 64 位本机代码。

【讨论】:

  • 谢谢!!我也更新了 build.gradle 以编译 x86_64,但我认为这还不够,因为输出文件夹中只有一个文件。在问题中查看我的更新。
  • 有了一个新的 React Native 项目 (0.59.8),我拥有所有库:x86_64、x86、arm64-v8a、armeabi-v7a,它们包含相同的文件。我想这意味着 APK 支持 64 位。
【解决方案3】:

https://github.com/facebook/react-native/issues/2814

Facebook 似乎在支持 64 位构建方面拖了后腿。

您可以检查构建文件夹中的中间体,以查看您支持的 abis。

https://developer.android.com/ndk/guides/abis.html

Android 采用构建 abi 的最小公分母。如果 Facebook 不尽快解决这个问题,这将成为一个问题。

【讨论】:

  • 应该检查中间件下的哪些文件夹?到目前为止,我根本没有看到任何 abis。希望这是一件好事。
【解决方案4】:

React Native 已于 3 月 12 日发布了新版本的 React Native。 在这个新版本中,React Native 支持 64 位系统。 您可以在下面的链接中阅读有关此内容的更多详细信息。 http://facebook.github.io/react-native/blog/2019/03/12/releasing-react-native-059

【讨论】:

    【解决方案5】:

    react-native 新版本自动支持 64 位。 只需将 react-native 版本更新到 0.59.0 或更高版本并重建您的应用程序,只需运行:

    react-native upgrade 0.59.1
    

    【讨论】:

    • 升级后如何知道我的应用是 32 位还是 64 位?
    • 你可以从生成的apk文件中知道
    • 我看到了一个 release.apk!
    【解决方案6】:

    如果您使用低于 0.59 的 react native 版本,那么您必须升级您的应用程序以使用 0.59 或更高版本的 react native。 React native 从 0.59 版本开始支持 64 位。

    另外,请确保您的应用在 MyProject/Android/App/Build.gradle 文件中有以下行。

    splits {
            abi {
                reset()
                enable enableSeparateBuildPerCPUArchitecture
                universalApk true  // If true, also generate a universal APK
                include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
            }
        }
    

    更多请参考: Update your React Native Apps to be 64 Bit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多