我在build.gradle中创建了一个带时间戳的versionName,如20150707.1125。我想在about窗口中的react-native app中显示该软件包的版本。我如何在代码中获取versionName?
答案 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)
通过调用以下方法,您可以获得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"
每次构建都这样做