如何使用 Expo CLI 为 android 构建 64 位本机代码

Posted

技术标签:

【中文标题】如何使用 Expo CLI 为 android 构建 64 位本机代码【英文标题】:How to Build 64-bit native code for android using Expo CLI 【发布时间】:2019-09-21 17:24:02 【问题描述】:

我正在使用 react-native 和 EXPO CLI 来构建 android apk 文件。但我无法上传到 Play 商店。我收到一条警告消息

警告此版本不符合 Google Play 64 位要求

以下 APK 或 App Bundle 可用于 64 位设备,但它们只有 32 位本机代码:1.

从 2019 年 8 月 1 日起,所有版本都必须符合 Google Play 64 位要求。

我正在使用的版本

"dependencies": 
    "expo": "^32.0.0",
    "prop-types": "^15.7.2",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
    "react-navigation": "^3.4.1"
  ,
  "devDependencies": 
    "babel-preset-expo": "^5.0.0"
  ,

帮助我按照 Google Play 64 位要求构建 app bundle。

【问题讨论】:

你成功了吗?我尝试升级到 expo 33,但我仍然在 google play 中收到警告(“此版本不符合 Google Play 64 位要求”、“以下 APK 或 App Bundles 可用于 64 位设备,但它们只有 32 位本机代码...") 【参考方案1】:

对于高于版本0.59 的非世博项目,请查看您的android/app/build.gradle。如果您在defaultConfig 中设置了ndk,请确保它包含所有架构abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"

defaultConfig 
  ...
  ndk 
    abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
  

【讨论】:

【参考方案2】:

还没到。这就是答案。 https://blog.expo.io/expo-sdk-v33-0-0-is-now-available-52d1c99dfe4c

我们建议所有使用 Android 应用程序的 Expo 开发人员现在升级到 SDK 33,以提前完成创建 64 位 APK(SDK 34 中提供)所需的大部分工作,并且必须提交到8 月的 Google Play。

我假设在 32 和 33 之间发生巨大变化之后,他们想将其拆分为 2 个单独的版本。所以,假设我们将在 7 月下旬获得 v34 sdk ;)

【讨论】:

@yossi 我想替你说出来,因为你刚刚问过了【参考方案3】:

世博会的任何后续行动?已经是五月底了

【讨论】:

根据expo论坛,8月前将支持64位:forums.expo.io/t/does-expo-package-64-bit-version-of-android/… 你成功了吗?我尝试升级到 expo 33,但我仍然在 google play 中收到警告(“此版本不符合 Google Play 64 位要求”、“以下 APK 或 App Bundles 可用于 64 位设备,但它们只有 32 位本机代码...")【参考方案4】:

在我的应用程序部署期间我能找到的最多的recent information 说 expo 不会生成 64 位二进制文​​件:

我的理解是 react-native 0.59 会支持 64-bit 版本(目前处于“候选发布”阶段)。 32 世博会在 我相信 react-native 0.57。

到目前为止,我们不提供 64 位二进制文​​件,但这在我们的路线图中 我可以保证我们会在截止日期之前添加这样的功能

但是,这不应阻止您部署应用,因为该要求要到 8 月才会生效。

【讨论】:

我用“expo弹出”将它们分开,版本是“expo 30”,这意味着我们不能将它们上传到谷歌商店? 如果您退出了,您将不再使用 expo,我的回答也不再适用。一旦你被弹出,构建过程会发生变化,但如果你反应原生版本大于 0.59,你可以生成 64 位二进制文​​件 您是说可以创建 64 位二进制文​​件,而不管您使用“expo 弹出”标识了什么? 是否有任何迹象表明 Expo 团队知道 8 月份对 Android 版本的要求,并打算到那时支持 64 位 Android 版本? @pachun:他们说 Expo 将在 8 月之前支持 64 位:forums.expo.io/t/does-expo-package-64-bit-version-of-android/…【参考方案5】:

升级到 Expo SDK 33 后,我最新的 Android 版本(7 月 15 日)确认为 64 位:

Native platforms: arm64-v8a, armeabi-v7a, x86, x86_64

【讨论】:

以上是关于如何使用 Expo CLI 为 android 构建 64 位本机代码的主要内容,如果未能解决你的问题,请参考以下文章

如何修复安装 expo-cli

Expo CLI 通过纱线安装,但无法正常工作

为什么在项目初始化的expo-cli中删除了高级选项?

成功安装 expo-cli 后。 'expo' 未被识别为内部或外部命令

expo 未被识别为内部或外部命令

使用 react-native-cli 或 expo-cli 的移动应用程序?