如何更新本机应用程序的版本号

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 中更改您的versionCodeversionName

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.
    ...

...

【讨论】:

以上是关于如何更新本机应用程序的版本号的主要内容,如果未能解决你的问题,请参考以下文章

如何通过cmd命令查看本机是否安装了Git或Git的版本号

如何查看苹果手机safari版本

delphi 自动更新cs客户端的问题

如何在反应原生 ios 应用程序中更新应用程序版本?

如何设置 Flutter 应用的构建和版本号

vmos更新游戏出错