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

use*_*ego 42 android react-native

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

Tom*_*ers 56

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

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

DeviceInfo.getVersion()
Run Code Online (Sandbox Code Playgroud)

输出版本,并:

DeviceInfo.getBuildNumber()
Run Code Online (Sandbox Code Playgroud)

获取内部版本号.

  • 这是一个大包,无用的`gcm` 需求!我从我的项目中删除了它。 (4认同)

Sno*_*man 29

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

var pkg = require('./package.json');
console.log(pkg.version);
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考“包是严格模式下的保留字” (2认同)
  • 显然,这存在一点安全风险,因为您暴露了所有依赖项。同样,您加载整个“package.json”只是为了获取“版本”。如果您的项目允许,我建议您使用类似 `import { version } from "./package.json"` 的内容。 (2认同)

Mar*_*rio 20

import { version } from './package.json';
Run Code Online (Sandbox Code Playgroud)


nav*_*njr 11

我无法让包裹react-native-device-info工作.进入这个问题可能需要一些gradle和java更改才能使它飞行.

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

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

console.log('appVersion:', VersionNumber.appVersion)
Run Code Online (Sandbox Code Playgroud)

哦,因为它与收集版本有关package.json.我感觉不对.我的意思是我必须尝试它,看看它是否会起作用.我没有意识到资源将在运行时在设备上可用.它确实有效,但我在build.gradle中也有一些buildTypes debug foo,我在这里学到.因此,它很高兴地得到versionName0.1.7-debug从马口直.


San*_*tos 9

我使用@Marcos Demetrio的答案作为参考

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

import {expo} from '../../app.json'
Run Code Online (Sandbox Code Playgroud)

在组件中:

<Label>{expo.version}</Label>          
Run Code Online (Sandbox Code Playgroud)

无需安装包。


Ani*_*ive 9

您可以使用反应本机设备信息

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

const version = DeviceInfo.getVersion();

// iOS: "1.0"
// Android: "1.0"
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助。


eya*_*oli 5

如果您正在使用 expo 并且想要更轻的库,请使用expo-application

import * as Application from 'expo-application';

Application.nativeApplicationVersion //returns a string
// or
Application.nativeBuildVersion //returns a string
Run Code Online (Sandbox Code Playgroud)