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