我构建了一个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"
}
}
答案 0 :(得分:12)
我也遇到了这个问题,我通过在Android下将versionCode添加到我的app.json中解决了这个问题。例如,
“ android”:{
“ versionCode”:2
}
请注意,'2'没有引号。
答案 1 :(得分:1)
需要将“versionCode”添加到app.json的“android”部分...
答案 2 :(得分:0)
答案 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