Як оновити номер версії рідного додатка для реагування


98

Я використовую React native з Android. Як я можу оновити номер версії в програмі? Оскільки я отримую цю помилку.

Я генерую файл за цією URL-адресою https://facebook.github.io/react-native/docs/signed-apk-android.html

Я спробував змінити файл AndroidManifest.xml, але після його створення цей файл автоматично змінюється назад.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.facebook.react"
    android:versionCode="1"
    android:versionName="1.0" >

Тут я змінив XML:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.facebook.react"
    android:versionCode="2"
    android:versionName="1.1" >

Після цього файл збірки автоматично змінюється назад.

введіть тут опис зображення


1
android: versionCode = "2" означає, що коли ви хочете завантажити apk у play store, що необхідно для збільшення коду версії та коду версії, ви можете зберігати все, що хочете, не впливає
Ajinkya

не працює, я це вже зробив. Я виправив своє запитання.
Praveen Prasad

Відповіді:


190

Ви повинні змінити свій versionCodeі versionNameв android/app/build.gradle:

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"

        {...}
    }

    {...}
}

Дякую, я сам бачив цей файл кілька разів, але просто пропустив цю частину.
Правен Прасад

3
Я знайшов рішення у файлі, на який ви вказали, але насправді воно було трохи нижче. Був розділ, який починався з applicationVariants, і там встановлювався output.versionCodeOverride , який робив, як було запропоновано ім'я, і ​​замінював той, що знаходиться у верхній частині файлу.
AidenMontgomery

1
@Noitidart, якщо ви будуєте за допомогою Android Studio та Gradle, зміни його тут буде достатньо. Це замінить все, що ви вкладете в AndroidManifest.xml
Джозеф Роке,

14
@Noitidart versionCode- значення, призначене для Google / вас. Коли ви завантажуєте в Google Play, він очікується versionCodeбільшим, ніж попередній versionCode, а також унікальним для кожного завантаженого файлу. Особисто я просто вручну збільшую versionCodeодиницю кожного разу, коли готую завантаження в Google Play. Інші люди автоматизують його для збільшення на основі git-коміту або іншого фактора. versionNameце те, що ви б змінили на "2.2", щоб ваші користувачі бачили цей номер версії під час оновлення / завантаження вашого додатка.
Джозеф Роке,

2
@KTWorks так, versionCode має бути цілим числом. versionName можна встановити 1.0.1і відображатиме це значення для користувачів.
Джозеф Роке,

90

@Joseph Roque правильний, вам потрібно оновити номери версій у android/app/build.gradle.

Ось як я автоматизую це і пов’язую його з версією пакету в package.jsonі git комітах.

В android/app/build.gradle:

/* Near the top */

import groovy.json.JsonSlurper

def getNpmVersion() {
    def inputFile = new File("../package.json")
    def packageJson = new JsonSlurper().parseText(inputFile.text)
    return packageJson["version"]
}
/* calculated from git commits to give sequential integers */
def getGitVersion() {
    def process = "git rev-list master --first-parent --count".execute()
    return process.text.toInteger()
}


......


def userVer = getNpmVersion()
def googleVer = getGitVersion()

android {
...
    defaultConfig {
        .....
        versionCode googleVer
        versionName userVer

        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }

Примітки:

  • Важливо, що versionCodeце ціле число - тому ми не можемо тут використовувати семантичну версію. Це використовується в магазині ігор, щоб визначити, які версії йдуть за іншими - ось чому це прив'язано до комітів gitgetGitVersion

  • versionNameоднак показано користувачам - я використовую тут семантичну версію і зберігаю справжнє значення у своєму package.json. Завдяки https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661


6
Ендрю Джек обговорює дуже подібний метод та метод для iOS у своїй статті про Medium: medium.com/@andr3wjack/… . Це чудове читання для людей, які хочуть підтримувати свої версії у відповідності зі своїми збірками.
DBrown

17

Для тих, хто хоче автоматизувати це і одночасно мати iOS, ви можете скористатись реакцією-рідною-версією, щоб встановити номери версій.

Все, що вам потрібно зробити, це оновити номер версії всередині файлу package.json і запустити наступне:

$ npx react-native-version --never-amend

[RNV] Versioning Android...
[RNV] Android updated
[RNV] Versioning iOS...
[RNV] iOS updated
[RNV] Done
✨  Done in 0.39s.

Сподіваюсь, це може допомогти іншим.



0

Якщо хтось стикається

неправильний код версії, наприклад - 31284

Тоді переконайтеся, що не використовуєте SeparateBuildPerCPUArchitecture у android/app/build.gradle

def enableSeparateBuildPerCPUArchitecture = false

і

для оновлення коду версії та зміни імені у android/app/build.gradle:

android {

defaultConfig {

    versionCode 1
    versionName "1.0"

    {...}
}

{...}
}

0

У мене була та сама проблема, і я перевірив усі вищезазначені відповіді, я допустив безглузду помилку, через яку у мене нічого не вийшло. На всякий випадок, якщо хтось із вас зробить таку ж помилку, як моя, спробуйте це.

  1. Версія може бути десятковим числом, таким як 1.0 або 1.0.1 тощо
  2. Але VersionCode не може бути десятковим числом. Він повинен бути 1,2,3 тощо, а не 1.1 або 2.2

Тож у project / app / build.gradle

android {
defaultConfig {
    versionCode 1 // do not use decimal number here
    versionName "1.0" // you can use decimal number here.
    {...}
}
{...}
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.