我在 Android 上使用 React Native。如何更新应用程序中的版本号?当我收到此错误时。
我正在根据这个 url https://facebook.github.io/react-native/docs/signed-apk-android.html 生成文件
我曾尝试修改 AndroidManifest.xml 文件,但在构建它之后,该文件会自动修改回来。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.facebook.react"
android:versionCode="1"
android:versionName="1.0" >
在这里,我修改了 XML:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.facebook.react"
android:versionCode="2"
android:versionName="1.1" >
之后,构建文件会自动更改回来。
https://i.stack.imgur.com/bhOmm.png
您应该在 android/app/build.gradle
中更改您的 versionCode
和 versionName
:
android {
defaultConfig {
versionCode 1
versionName "1.0"
{...}
}
{...}
}
请注意,versionCode
必须是一个大于以前版本所用整数的整数,而 versionName
是可以向用户显示的人类可读版本。
@Joseph Roque 是正确的,您需要更新 android/app/build.gradle
中的版本号。
以下是我如何自动执行此操作并将其绑定到 package.json
中的包版本和 git 提交。
在 android/app/build.gradle
中:
/* Near the top */
import groovy.json.JsonSlurper
def getNpmVersion() {
def inputFile = new File("../package.json")
def packageJson = new JsonSlurper().parseText(inputFile.text)
return packageJson["version"]
}
/* calculated from git commits to give sequential integers */
def getGitVersion() {
def process = "git rev-list master --first-parent --count".execute()
return process.text.toInteger()
}
......
def userVer = getNpmVersion()
def googleVer = getGitVersion()
android {
...
defaultConfig {
.....
versionCode googleVer
versionName userVer
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
笔记:
重要的是 versionCode 是一个整数 - 所以我们不能在这里使用语义版本控制。这在 Play 商店中用于判断哪些版本在其他版本之后 - 这就是为什么它与 getGitVersion 中的 git 提交相关联
但是 versionName 会显示给用户 - 我在这里使用语义版本控制并将实际值存储在我的 package.json 中。感谢 https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661
def process = "git rev-list main --first-parent --count".execute()
对于那些想要自动化并同时拥有 iOS 的用户,您可以使用 react-native-version 来设置版本号。
您需要做的就是在 package.json 文件中更新您的版本号并运行以下命令:
$ npx react-native-version --never-amend
[RNV] Versioning Android...
[RNV] Android updated
[RNV] Versioning iOS...
[RNV] iOS updated
[RNV] Done
✨ Done in 0.39s.
我希望这可以帮助其他人。
我遇到了同样的问题,我检查了上述所有答案,我犯了一个愚蠢的错误,因为没有什么对我有用。以防万一你们犯了和我一样的错误,试试这个。
版本可以是十进制数,例如 1.0 或 1.0.1 等,但 VersionCode 不能是十进制数 它应该是 1、2、3 等,而不是 1.1 或 2.2
所以在 project/app/build.gradle
android {
defaultConfig {
versionCode 1 // do not use decimal number here
versionName "1.0" // you can use decimal number here.
{...}
}
{...}
}
在 app.json 中的 android
下设置 versionCode
:
{
"expo": {
"name": "App Name",
...
"android": {
"package": "com.app.name",
"permissions": [],
"versionCode": 2
}
}
}
如果有人面对
错误的版本代码,例如 - 31284
然后确保不要在 android/app/build.gradle
中使用SeparateBuildPerCPUArchitecture
def enableSeparateBuildPerCPUArchitecture = false
和
更新 android/app/build.gradle
中的版本代码和名称更改:
android {
defaultConfig {
versionCode 1
versionName "1.0"
{...}
}
{...}
}
如果您在使用 expo 时遇到此问题,请转到 app.json
并将 version 更改为更高的数字。
{
"expo": {
"name": "nameofapp", // btw dont copy this
"slug": "appslug", // btw dont copy this
"version": "1.0.0", // here is where you change the version
...
...
...
}
}
您还需要更改 package.json
中的版本
{
...
"name": "appname", // btw dont copy this
"version": "2.0.0", // here is where you change the version
...
"android": {
"versionCode": 2,
...
}
...
}
2.2
?我不明白versionCode
:(versionCode
是适用于 Google/您的值。当您上传到 Google Play 时,它期望versionCode
大于之前的versionCode
,并且对于每个上传的文件也是唯一的。就个人而言,每次准备上传到 Google Play 时,我都会手动将versionCode
加一。其他人根据 git commit 或其他因素自动增加它。versionName
是您将更改为“2.2”的内容,以便您的用户在更新/下载您的应用程序时会看到该版本号。1.0.1
并将该值显示给用户。