如何在Android上的react-native应用程序中获取versionName?

时间:2016-07-07 08:32:14

标签: android react-native

我在build.gradle中创建了一个带时间戳的versionName,如20150707.1125。我想在about窗口中的react-native app中显示该软件包的版本。我如何在代码中获取versionName?

10 个答案:

答案 0 :(得分:38)

我已成功使用React Native Device Info组件来获取Gradle配置中指定的构建详细信息。

安装完成后,您可以使用:

DeviceInfo.getVersion()

输出版本,并且:

DeviceInfo.getBuildNumber()

获取内部版本号。

答案 1 :(得分:25)

如果你想要package.json中的版本号,你也可以这样做:

var package = require('./package.json');
console.log(package.version);

答案 2 :(得分:10)

import { version } from './package.json';

答案 3 :(得分:8)

我无法让套餐react-native-device-info发挥作用。进入this issue可能需要一些gradle和java更改才能使其飞行。

无论如何我得到了我需要的东西react-native-version-number。我很高兴。

import VersionNumber from 'react-native-version-number';

console.log('appVersion:', VersionNumber.appVersion)

哦,因为它涉及从package.json收集版本。我感觉不对。我的意思是我必须尝试它,看看它是否会起作用。我没有意识到资源在运行时可以在设备上使用。它确实有效,但我在build.gradle中也有一些buildTypes debug foo,我学会了here。所以很高兴从马口直接得到versionName 0.1.7-debug

答案 4 :(得分:0)

我使用以下代码段使用package.json提取版本信息:

import PackageJson from '../../../package'    // where package is the package.json file

console.log('version', PackageJson.version)  

希望有帮助。

答案 5 :(得分:0)

我将@Marcos Demetrio的答案用作参考

但是我正在使用expo,所以我这样做了:

Vec

在组件中:

import {expo} from '../../app.json'

无需安装软件包。

答案 6 :(得分:0)

我尝试了大部分事情来很好地解决此问题,并且很高兴看到详细说明来完成我需要做的所有事情react-native-version-check

import { Linking } from 'react-native';
import VersionCheck from 'react-native-version-check';

VersionCheck.needUpdate()
  .then(async res => {
    console.log(res.isNeeded);    // true
    if (res.isNeeded) {
      Linking.openURL(await VersionCheck.getStoreUrl());  // open store if update is needed.
    }
  });

答案 7 :(得分:0)

您可以使用react-native-device-info

通过调用以下方法,您可以获得iOS和Android的应用版本。

const version = DeviceInfo.getVersion();

// iOS: "1.0"
// Android: "1.0"

希望这会有所帮助。

答案 8 :(得分:0)

如果您使用 expo 并且想要更轻量的 lib,请使用 expo-application

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="#all"
    xmlns="http://www.w3.org/2005/xpath-functions"
    expand-text="yes"
    version="3.0">

  <xsl:output method="text"/>

  <xsl:template match="/">
      <xsl:variable name="json-xml">
          <xsl:apply-templates/>
      </xsl:variable>
      <xsl:value-of select="xml-to-json($json-xml, map { 'indent' : true() })"/>
  </xsl:template>
  
  <xsl:template match="*[not(*)]">
    <string key="{local-name()}">{.}</string>
  </xsl:template>
  
  <xsl:template match="*[not(*) and . castable as xs:double]">
    <number key="{local-name()}">{.}</number>
  </xsl:template>
  
  <xsl:template match="*[*]">
    <xsl:param name="key" as="xs:boolean" select="false()"/>
    <map>
      <xsl:if test="$key">
        <xsl:attribute name="key" select="local-name()"/>
      </xsl:if>
      <xsl:for-each-group select="*" group-by="node-name()">
          <xsl:choose>
              <xsl:when test="current-group()[2]">
                  <array key="{local-name()}">
                      <xsl:apply-templates select="current-group()">
                        <xsl:with-param name="key" select="false()"/>
                      </xsl:apply-templates>
                  </array>
              </xsl:when>
              <xsl:otherwise>
                  <xsl:apply-templates select="current-group()">
                    <xsl:with-param name="key" select="true()"/>
                  </xsl:apply-templates>
              </xsl:otherwise>
          </xsl:choose>
      </xsl:for-each-group>
    </map>
  </xsl:template>

</xsl:stylesheet>

答案 9 :(得分:-1)

我认为最简单的方法是在 App.js 中像变量一样设置版本号,并确保它是全局的(可从整个应用程序中获取)

const version = "1.0.0"

每次构建都这样做