Expo React-Native Android 版本未更新 Google Play 的版本代码

Posted

技术标签:

【中文标题】Expo React-Native Android 版本未更新 Google Play 的版本代码【英文标题】:Expo React-Native Android build not updating Version Code for Google Play 【发布时间】:2018-11-12 01:51:16 【问题描述】:

我构建了一个 React-Native android 应用并上传到 Google Play,效果很好。

现在我正在尝试上传一个新版本(上传到 iTunes Connect 没有问题),而 Google Play 给了我这个错误: “您需要为您的 APK 或 Android App Bundle 使用不同的版本代码,因为您已经拥有版本代码为 1 的版本代码。”

每次构建后,我都会更新 app.json 中的版本,我也尝试过更新 package.json 中的版本。我已经对“versionCode”进行了目录范围的搜索,但没有实例。对“版本”的目录范围搜索出现了 2,000 多个结果,我滚动浏览了所有结果,并没有看到任何特定于 android build 的内容。而且我对 ios 构建没有任何问题。

我曾尝试使用 Max Expo XDE 首先发布应用程序,并且我正在使用“exp build:android”在命令行中构建它。

我的 app.json 中有以下内容:


  "expo": 
    "name": "Placeholder",
        "sdkVersion": "27.0.0",
        "privacy": "unlisted",
        "orientation": "portrait",
        "icon": "./assets/img/AppIcon.png",
    "version": "0.3.4",
    "ios": 
      "bundleIdentifier": "com.placeholder.placeholder"
    ,
    "android": 
      "package": "com.placeholder.placeholder"
    
  

而我的 package.json 如下(并且 npm install 已经运行):


  "name": "placeholder",
  "version": "0.2.0",
  "private": true,
  "devDependencies": 
    "jest-expo": "~27.0.0",
    "react-native-scripts": "1.14.0",
    "react-test-renderer": "16.3.1"
  ,
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": 
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "android": "react-native-scripts android",
    "ios": "react-native-scripts ios",
    "test": "jest"
  ,
  "jest": 
    "preset": "jest-expo"
  ,
  "dependencies": 
    "axios": "^0.18.0",
    "expo": "^27.0.1",
    "native-base": "^2.4.3",
    "react": "16.3.1",
    "react-native": "https://github.com/expo/react-native/archive/sdk-27.0.0.tar.gz",
    "react-native-svg": "^6.3.1",
    "react-navigation": "^2.0.0",
    "redux-thunk": "^2.2.0",
    "socket.io-client": "^2.1.0"
  

【问题讨论】:

【参考方案1】:

我也遇到了这个问题,我通过在android下的app.json中添加versionCode解决了这个问题。例如,

“机器人”: “版本代码”:2

注意 '2' 没有引号。

如果您需要了解有关 versionCode 的更多信息,请参阅此文档。

versionCodeOnAndroid

【讨论】:

这是正确答案 - 详细在这里 - docs.expo.io/versions/v32.0.0/workflow/configuration/… 完美。太感谢了。世博会应该让它更明确。【参考方案2】:

需要将“versionCode”添加到app.json的“android”部分...

【讨论】:

【参考方案3】:

如果您使用的是原生 react native(没有 expo),那么更改 app.json 将不起作用。您必须宁愿去 build.gradle 并将 versionCode 和 versionName 都增加 1

【讨论】:

【参考方案4】:

在构建和交付到 testflight 时,您需要在构建之前更新版本。如果你和我一样对此感到恼火,你可以使用 nodejs 简单脚本,我们称之为 build.js:

'use strict';
const fs = require('fs');
const  exec  = require('child_process');

let config = require('./app.json');

let t = new Date().getTime();
let backup = 'app.' + t + '.json';

// make some backup
fs.writeFile(backup, JSON.stringify(config)); 

let v = config.expo.version;
v = v.split('.');
let x = parseInt(v[v.length - 1]);

// add to last part of version, update to your needs
v[v.length - 1] = (x + 1); 
config.expo.version = v.join('.');

// write new config
fs.writeFile('app.json', JSON.stringify(config, null, 2));

【讨论】:

【参考方案5】:

根据 Deploying to App Stores 1,您需要按照构建独立应用程序中的说明进行操作。 “versionCode”确实在2 中引用,它是Android 部分特有的选项:3。

【讨论】:

【参考方案6】:

使用这些配置对我有用:


  "expo": 
    "name": "APP_NAME",
    "description": "APP_DESCRIPTION",
    "slug": "SLUG_NSME",
    "version": "1.1.0",
    "orientation": "portrait",
    "updates": 
      "fallbackToCacheTimeout": 0
    ,
    "assetBundlePatterns": ["**/*"],

    "android": 
      "package": "com.company_name.project_name",
      "versionCode": 2 // just change/add this line
    
  

在此处查找完整指南:expo documentation 和 Play Store Documentation。

【讨论】:

以上是关于Expo React-Native Android 版本未更新 Google Play 的版本代码的主要内容,如果未能解决你的问题,请参考以下文章

Expo react-native 将无法连接到 socketio(Android 和 iOS)

如何在 Android 上减小 expo/react-native 应用程序的大小

React-Native Expo,Facebook 登录无法在 Android 设备上运行

在生产模式下运行 expo android 应用程序时出错 - React-native

如何在 expo/react-native 应用程序中添加自定义节点模块?

Expo React-Native Android 版本未更新 Google Play 的版本代码