【问题标题】:How to display current version number from build.gradle in app?如何在应用程序中显示 build.gradle 的当前版本号?
【发布时间】:2019-11-19 17:15:32
【问题描述】:

在应用中显示当前应用版本号的最佳方法是什么?具体来说,android\app\build.gradle 有一个带有“versionCode”和“versionName”属性的“defaultConfig”对象。因此,假设当前的 build.gradle 配置如下所示:

defaultConfig {
  versionCode 9
  versionName "0.1.9"
}

为了从 build.gradle 中提取此信息并将其显示在父组件的 Text 组件中,代码/实现会是什么样子?我知道我可以简单地从 build.gradle 配置中复制这些信息并将其直接粘贴到 Text 组件中。但我想要做的重点是通过直接从 build.gradle 将该信息传播到应用程序视图中来 100% 确定当前安装的应用程序版本。

【问题讨论】:

    标签: react-native


    【解决方案1】:

    尝试安装 React Native Device Info Link 组件以获取 Gradle 配置中指定的构建详细信息。

    安装后即可使用:

    DeviceInfo.getVersion()
    

    输出版本,并且:

    DeviceInfo.getBuildNumber()
    

    获取内部版本号。

    【讨论】:

      【解决方案2】:

      首先,这可能是一个重复的问题。你可以查看这个How to get a versionName in react-native app on Android?

      其次,如果您使用 CodePush 更新您的代码,上述解决方案将无法正常工作,因为它只能获取原生构建的应用程序的版本。

      如果这不是您所需要的,请提供有关您的问题的更多详细信息。

      【讨论】:

        【解决方案3】:

        我使用 package.json 版本作为应用程序版本。所以我们从 package.json 中获取应用版本。当我们更改 package.json 时,应用程序版本也会发生变化。

        const PackageInfo = require("../../../package.json");
        localVersion : PackageInfo.version
        

        但我们必须先修改原生Android,使其使用package.version作为版本名称和代码。

        //in android project.build.gradle
        def getNpmVersion() {
            def inputFile = new File("../package.json")
            def packageJson = new JsonSlurper().parseText(inputFile.text)
            return packageJson["version"]
        }
        def getNpmVersionArray() { 
        // major [0], minor [1], patch [2]
            def (major, minor, patch) = getNpmVersion().tokenize('.')
            return [Integer.parseInt(major), Integer.parseInt(minor), Integer.parseInt(patch)] as int[]
        }
        subprojects {
            ext {
                def npmVersion = getNpmVersionArray()
                versionMajor = npmVersion[0]
                versionMinor = npmVersion[1]
                versionPatch = npmVersion[2]
        
            }
        }
        // then in app.gradle use it
        defalultConfig{
        ...
        versionCode versionMajor * 10000 + versionMinor * 100 + versionPatch
        versionName "${versionMajor}.${versionMinor}.${versionPatch}"
        ...
        }
        

        【讨论】:

          【解决方案4】:

          还要确保在您的 build.gradle 文件而不是 AndroidManifest.xml 中指定它们:

          defaultConfig {
              versionCode 1
              versionName "1.0"
          }
          

          【讨论】:

            猜你喜欢
            • 2021-08-29
            • 2017-02-12
            • 1970-01-01
            • 1970-01-01
            • 2010-12-02
            • 1970-01-01
            • 2015-01-26
            • 2011-03-02
            • 2011-03-12
            相关资源
            最近更新 更多