如何在Android上的react native应用程序中获取版本名?

如何在Android上的react native应用程序中获取版本名?,android,react-native,Android,React Native,我在build.gradle中创建了一个时间戳版本名,比如20150707.1125。我想在“关于”窗口中的react native app中显示包的版本。如何在代码中获取versionName?我已成功使用该组件获取Gradle配置中指定的构建详细信息 安装后,您可以使用: DeviceInfo.getVersion() 要输出版本,请执行以下操作: DeviceInfo.getBuildNumber() 获取内部版本号。如果您想在package.json中获得版本号,还可以执行以下操作:

我在build.gradle中创建了一个时间戳版本名,比如20150707.1125。我想在“关于”窗口中的react native app中显示包的版本。如何在代码中获取versionName?

我已成功使用该组件获取Gradle配置中指定的构建详细信息

安装后,您可以使用:

DeviceInfo.getVersion()
要输出版本,请执行以下操作:

DeviceInfo.getBuildNumber()

获取内部版本号。

如果您想在package.json中获得版本号,还可以执行以下操作:

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

我无法使程序包
react native device info
正常工作。运行时可能需要一些gradle和java更改才能正常运行

无论如何,我得到了我所需要的。我对此感到高兴

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

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

哦,因为它涉及到从
package.json
收集版本。我觉得不对。我的意思是我必须尝试一下,看看它是否有效。我没有意识到设备上的资源在运行时是可用的。它确实可以工作,但我也在build.gradle中使用了一些buildTypes debug foo。因此,从马嘴里直接获得
versionName
就像
0.1.7-debug

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

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

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

希望有帮助。

我用

但我用的是expo,所以我做了这个:

import {expo} from '../../app.json'
在组件中:

<Label>{expo.version}</Label>          
{expo.version}

无需安装软件包。

我尽了最大努力,很好地解决了这个问题,我很高兴看到详细的描述,说明我所需要的一切

你可以用

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

const version = DeviceInfo.getVersion();

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

希望这会有所帮助。

react本机版本号库适用于Android和iOS。您可以在这里找到安装说明。请记住,在当前版本的ReactNative中,不再需要本机链接库(在安装时省略链接-它未写入说明中)

从'react native version number'导入版本号;
...
render(){
var versionNumber=`${versionNumber.appVersion}.${versionNumber.buildVersion}`;
返回(
v、 {versionNumber}
)
}
...

如果您正在使用expo,并且希望使用更轻的lib,请使用:

import*作为“世博会申请”的申请;
Application.nativeApplicationVersion//返回一个字符串
//或
Application.nativeBuildVersion//返回一个字符串

它可以工作吗?这是最简单的解决方案,无需安装任何moduleFYI“package is reserved word in strict mode”,然后使用npm版本自动进行版本控制,如下所示:我得到“package is reserved word in strict mode”。怎么办?使用
const-appJson=require('../app.json')
version:{appJson.expo.version}在我的应用程序中。使用了一个符咒。这是一个大包裹,里面有无用的
gcm
need!我把它从我的项目中删除了。我也会否决deviceInfo。我的故事是我集成了react原生firebase,并在android中运行。在那之后,我安装了这个react本机设备信息,它在android中似乎运行良好。除了AlirezaXX所说的以外,它是一个真正的大软件包,安装时间很长。梦魇降临到了IOS部分。我使用podfile安装firebase,不管怎样,它总是无法构建。我用谷歌搜索错误代码,找到了很多对我不起作用的“解决方案”。最糟糕的是,我甚至不知道deviceInfo链接是罪魁祸首。直到今天凌晨5:30,我才发现它工作正常,但我很生气地发现react native device info是罪魁祸首。我在其他地方找到的适合我的解决方案也是这里有一个方法DeviceInfo.getReadableVersion(),它将为您提供一个包含版本号和内部版本号的字符串。也许这在最初写答案时并不存在。来源:声明“获取应用程序的可读版本(与getVersion()+”。+getBuildNumber())”这不适用于iOS,它仅适用于Android。对我来说,适用于Android+iOS。在Android中显示空值不要认为这是一个好主意,因为您将公开您的包。json文件HA!非常聪明。尽管仅供参考,世博会推荐的方法是使用常量api。我的Android版本名为“2.0.1”。不过,它显示,“2.0”@KushalDesai第三个数字是buildNumber,而不是app版本:)这种方法在生产中有效吗?
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.
    }
  });
const version = DeviceInfo.getVersion();

// iOS: "1.0"
// Android: "1.0"
import VersionNumber from 'react-native-version-number';

...

    render() {
        var versionNumber = `${VersionNumber.appVersion}.${VersionNumber.buildVersion}`;

        return (
            <Text style={ styles.versionText }>v. {versionNumber}</Text>
        )
    }
...