Expo React-Native Android版本不会更新Google Play版本代码

时间:2018-06-01 22:14:27

标签: android react-native expo

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

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

每次构建后,我都更新了app.json中的版本,我也尝试更新package.json中的版本。我已经完成了对'versionCode'的目录范围搜索,并且没有实例。目录范围内的'版本'搜索结果超过2,000个,我滚动浏览了所有这些结果,并没有看到任何特定的android构建。我没有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"
  }
}

5 个答案:

答案 0 :(得分:12)

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

“ android”:{
      “ versionCode”:2
}

请注意,'2'没有引号。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

根据部署到应用商店1,您需要遵循构建独立应用程序中的说明。确实在2中引用了“ versionCode”,它是特定于Android部分的一个选项:3

答案 3 :(得分:0)

在构建并交付给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));

答案 4 :(得分:0)

如果您使用的是原生的本地反应(没有expo),则更改app.json将不起作用。您必须去build.gradle并将versionCode和versionName都增加1