Как получить версиюName в интерактивном приложении на Android?

Я создал timestamped versionName в build.gradle, как 20150707.1125. Я хочу показать версию пакета в интерактивном приложении в окне. Как я могу получить versionName в коде?

Ответ 1

Я успешно использовал компонент React Native Device Info, чтобы получить детали сборки, как указано в конфигурации Gradle.

После установки вы можете использовать:

DeviceInfo.getVersion()

Для вывода версии и:

DeviceInfo.getBuildNumber()

Получить номер сборки.

Ответ 2

Если вам нужен номер версии в вашем package.json, вы также можете сделать:

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

Ответ 3

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

Ответ 4

Я не мог заставить пакет react-native-device-info работать. Столкнулся с этой проблемой. Возможно, понадобятся изменения в gradle и java, чтобы он заработал.

В любом случае, я получил то, что мне нужно, номер react-native-version-number. И я счастлив с этим.

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

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

Да, и поскольку это касается получения версии из package.json. Мне кажется, что это неправильно. Я имею в виду, я должен был попробовать это, просто чтобы посмотреть, сработает ли это. Я не понимал, что ресурс будет доступен во время выполнения на устройстве. Это работает, но у меня также есть кое-какая отладка foo buildTypes в моем build.gradle, который я узнал здесь. Таким образом, ее приятно получать в versionName как 0.1.7-debug прямо из уст лошадей.

Ответ 5

Я использовал следующий фрагмент для извлечения информации о версии, используя package.json:

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

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

Надеюсь, поможет.

Ответ 6

Я использовал в качестве ссылки ответ @Marcos Demetrio

Но я использовал выставку, поэтому я сделал это:

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

И в компоненте:

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

Не требуется установка пакета.

Ответ 7

К сожалению, я пока не могу комментировать, поэтому поместил это в собственный ответ:

Ответ от Snowman больше не работает для RN> = 0.60 (Android). При создании приложения вы получите следующую ошибку:

Error: package is not a valid resource name (reserved Java keyword)

→ см. https://github.com/facebook/react-native/issues/23482

Я сейчас использую ответную нативную информацию об устройстве (см. Ответ Тома Уолтерса), поскольку она уже включена в наш проект:

DeviceInfo.getVersion()

Если у кого-то есть другой вариант без использования response-native-device-info, пожалуйста, дайте мне знать.

Ответ 8

Я старался изо всех сил, чтобы это исправить, и я рад видеть подробное описание для того, чтобы сделать все, что мне было нужно. Reaction-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.
    }
  });

Ответ 9

Вы можете использовать response-native-device-info

И вы можете получить версию приложения для iOS и Android, вызвав следующий метод.

const version = DeviceInfo.getVersion();

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

Надеюсь, это поможет.