React Expo 更改目标 Android API

Posted

技术标签:

【中文标题】React Expo 更改目标 Android API【英文标题】:React Expo changing target Android API 【发布时间】:2019-12-22 13:47:42 【问题描述】:

最近我们使用 react expo 构建 android 应用,并使用以下命令 expo build:android -t apk 或 Android App Bundle expo build:android -t app-bundle 构建签名 APK

在我们构建签名的 APK 后,我们尝试上传到 Playstore,但出现了一些错误,需要我们将目标 API 从 26 升级到 28。在 SO 上探索和阅读了几个 QA,其中许多是针对 React Native 的。我们如何将我们的 APK 发布到 Play 商店?

这里是app.json


  "expo": 
    "name": "***",
    "slug": "***",
    "privacy": "public",
    "sdkVersion": "32.0.0",
    "platforms": [
      "ios",
      "android"
    ],
    "version": "1.2.3",
    "orientation": "portrait",
    "icon": "./assets/logo.png",
    "splash": 
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    ,
    "updates": 
      "enabled": true,
      "checkAutomatically": "ON_LOAD",
      "fallbackToCacheTimeout": 0
    ,
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": 
      "supportsTablet": true
    ,
    "android": 
      "package": "com.qreatiq.foodmart",
      "permissions": [
        "CAMERA"
      ],
      "googleServicesFile": "./google-services.json",
    ,
  

我们已尝试检查文档 here 并且有 compileSDKVersion 或相关的属性,如原生应用程序。

在 Native 应用中我们可以很容易地配置如下

compileSdkVersion 27
buildToolsVersion "27.0.3"
minSdkVersion 16
targetSdkVersion 27

如何在 React Expo 上做到这一点?

更新 1 从developer.android.com阅读后

当您上传 APK 时,它需要满足 Google Play 的目标 API 等级要求。自 2019 年 8 月 1 日起,Google Play 要求 新应用至少面向 Android 9.0(API 级别 28),并且该应用 更新从 2​​019 年 11 月 1 日起针对 Android 9.0。在这些日期之前, 新应用和应用更新必须至少面向 Android 8.0(API 级别 26).

仍然对那些事情没有任何想法。

【问题讨论】:

【参考方案1】:

按照以下步骤操作:

    关闭您的 Expo CLI 服务器

    app.json 中,将sdkVersion 更改为"34.0.0"

    package.json 中,更改这些依赖项:

    react-native"https://github.com/expo/react-native/archive/sdk-34.0.0.tar.gz" expo"^34.0.3" react"16.8.3" —(这个确切的版本) react-navigation"^3.11.1" jest-expo"^34.0.0"(如果你使用的话) sentry-expo"~1.13.0"(如果你使用它)

    如果你使用react-navigation,你也应该运行expo install react-native-gesture-handler react-native-reanimated

    删除项目的node_modules 目录并再次运行npm install 或使用yarn

    运行expo start -c

完成这些步骤后,它应该可以工作了。

来源:https://blog.expo.io/expo-sdk-34-is-now-available-4f7825239319

【讨论】:

【参考方案2】:

您需要更改app.json 中的sdkVersion 属性并再次构建应用程序:

"sdkVersion": "34.0.0",
    "platforms": [
      "ios",
      "android"
    ],

使用expo build:android -t app-bundle 命令。

确保您安装了最新的expo cli

这是相应的blog 帖子。

【讨论】:

以上是关于React Expo 更改目标 Android API的主要内容,如果未能解决你的问题,请参考以下文章

使用 RN 和 expo 更改 android 上的导航栏?

在 iOS 上带有 expo 的 react-native statusBar

在 react-native-web (expo) 中聚焦时更改 TextInput 的边框颜色

React Native Expo:更改应用程序配置

Google Play Expo w/ React - Expo 的 app.json 文件中与 Android 对应的 plist 是啥?

React Native Expo 更改默认 LAN IP