如何更新本机应用程序的版本号
Posted
技术标签:
【中文标题】如何更新本机应用程序的版本号【英文标题】:How to update version number of react native app 【发布时间】:2016-06-25 18:48:05 【问题描述】:我在 android 上使用 React 本机。如何更新应用程序中的版本号?当我收到此错误时。
我正在根据这个 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" >
之后,构建文件会自动变回。
【问题讨论】:
android:versionCode="2" 意味着无论何时你想在 Play 商店上传需要增加版本代码和版本代码的 apk,你可以保留任何你想要的不影响 不行,我已经做了。我已经更正了我的问题。 【参考方案1】:您应该在android/app/build.gradle
中更改您的versionCode
和versionName
:
android
defaultConfig
versionCode 1
versionName "1.0"
...
...
请注意,versionCode
必须是一个大于以前版本的整数,而versionName
是可以向用户显示的人类可读版本。
【讨论】:
我在您指向的文件中找到了解决方案,但实际上它稍微低了一点。有一个以 applicationVariants 开头的部分,并且在那里设置了 output.versionCodeOverride,它按照名称建议的方式执行并覆盖了文件顶部的部分。 @Noitidart 如果您使用 Android Studio 和 Gradle 进行构建,在此处更改就足够了。它将覆盖您放入 AndroidManifest.xml 的任何内容 如果我希望我的版本为“2.2”,我应该将 versionCode 设置为2.2
吗?我不明白versionCode
:(
@Noitidart versionCode
是适用于 Google/您的值。当您上传到 Google Play 时,它期望 versionCode
大于之前的 versionCode
,并且对于每个上传的文件也是唯一的。就个人而言,每次我准备上传到 Google Play 时,我都会手动将 versionCode
加一。其他人根据 git commit 或其他因素自动增加它。 versionName
是您将更改为“2.2”的内容,以便您的用户在更新/下载您的应用程序时会看到该版本号。
@KTWorks 是的,versionCode 必须是整数。 versionName 可以设置为 1.0.1
并将该值显示给用户。【参考方案2】:
@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
【讨论】:
Andrew Jack 在他的 Medium 文章:medium.com/@andr3wjack/… 中讨论了一种非常相似的方法,以及一种适用于 ios 的方法。对于希望保持他们的版本与他们的构建匹配的人来说,这是一本很好的读物。 是否意味着每次我使用 git commit 版本都会增量变化?哪种更新类型会增加?我的意思是,它会从补丁号开始吗? @EdisonPebojot 是的,虽然只有一个版本会改变。有两种版本类型 - versionCode 必须是增量的并且基于提交的数量。并且从您的 package.json 中获取的 versionName 可以是一个字符串,并且对用户可见。您可能想阅读此答案:***.com/a/10269683/1760776 了解更多详情 Andrew Jack 在 Medium 上的文章已被删除。不过,这是他关于该主题的博客文章:blog.andrewjack.uk/versioning-react-native-apps。【参考方案3】:对于那些想要自动执行此操作并同时拥有 iOS 的用户,您可以使用 react-native-version 设置版本号。
您需要做的就是在 package.json 文件中更新您的 version 编号并运行以下命令:
$ npx react-native-version --never-amend
[RNV] Versioning Android...
[RNV] Android updated
[RNV] Versioning iOS...
[RNV] iOS updated
[RNV] Done
✨ Done in 0.39s.
我希望这可以帮助其他人。
【讨论】:
如果您已退出expo,请确保删除app.json,否则android和ios文件将无法更新。 @bjorn-reppen 在 Bare Workflow Expo 项目中删除 app.json 并不是最好的解决方案,因为 Expo 仍在使用 App.json(例如更新)这里正在讨论这个问题:@987654322 @ 我修补了 react-native-version 4.0.0 作为临时解决方法,直到它得到修复。【参考方案4】:在app.json中android
下设置versionCode
:
"expo":
"name": "App Name",
...
"android":
"package": "com.app.name",
"permissions": [],
"versionCode": 2
参考:https://docs.expo.io/versions/latest/workflow/configuration/#versioncodeversion-number-required-by-google-play-increment-by-one-for-each-release-must-be-an-integer-httpsdeveloperandroidcomstudiopublishversioninghtml
【讨论】:
【参考方案5】:如果有人面对
错误的版本代码,例如 - 31284
然后确保不要在android/app/build.gradle
中使用SeparateBuildPerCPUArchitecture
def enableSeparateBuildPerCPUArchitecture = false
和
更新android/app/build.gradle
中的版本代码和名称更改:
android
defaultConfig
versionCode 1
versionName "1.0"
...
...
【讨论】:
【参考方案6】:我遇到了同样的问题,我检查了上述所有答案,我犯了一个愚蠢的错误,因为这对我没有任何用处。以防万一你们犯了和我一样的错误,试试这个。
-
版本可以是十进制数,如 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.
...
...
【讨论】:
以上是关于如何更新本机应用程序的版本号的主要内容,如果未能解决你的问题,请参考以下文章