Как обновить номер версии приложения React Native

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 в игровой магазин, это необходимо для увеличения кода версии и кода версии, вы можете оставить все, что захотите, не влияет
Ajinkya
не работает, я уже это сделал. Я исправил свой вопрос.
Praveen Prasad

Ответы:

189

Вы должны изменить свой versionCodeи versionNameв android/app/build.gradle:

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"

        {...}
    }

    {...}
}
Джозеф Роке
источник
Спасибо, я сам видел этот файл несколько раз, но просто пропустил эту часть.
Praveen Prasad
3
Я нашел решение в указанном вами файле, но на самом деле оно было немного ниже. Был раздел, который начинался с applicationVariants, и в нем устанавливался output.versionCodeOverride , который соответствовал предложенному имени и перекрывал имя в верхней части файла.
AidenMontgomery
1
@Noitidart, если вы создаете с Android Studio и Gradle, достаточно изменить его здесь. Он переопределит все, что вы добавили в AndroidManifest.xml
Джозеф Рок,
13
@Noitidart versionCode- это ценность, предназначенная для Google / вас. Когда вы загружаете в Google Play, ожидается, что он versionCodeбудет больше, чем предыдущий versionCode, а также будет уникальным для каждого загруженного файла. Лично я просто вручную увеличиваю versionCodeна единицу каждый раз, когда готовлю загрузку в Google Play. Другие люди автоматизируют его для увеличения на основе фиксации git или другого фактора. versionNameэто то, что вы бы изменили на "2.2", чтобы ваши пользователи видели этот номер версии при обновлении / загрузке вашего приложения.
Joseph Roque
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это было целое число, поэтому мы не можем использовать здесь семантическое управление версиями. Это используется в игровом магазине, чтобы определить, какие версии идут после других - поэтому он привязан к коммитам git вgetGitVersion

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

tgf
источник
6
Эндрю Джек обсуждает очень похожий метод и метод для iOS в своей статье на Medium: medium.com/@andr3wjack/… . Это отличное чтение для людей, которые хотят, чтобы их версии совпадали со своими сборками.
DBrown
17

Для тех, кто хочет автоматизировать это и одновременно иметь iOS, вы можете использовать response-native-version для установки номеров версий.

Все, что вам нужно сделать, это обновить номер своей версии внутри файла 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.
    {...}
}
{...}
}
Васант
источник