React native uygulamasının sürüm numarası nasıl güncellenir?


97

React native'i Android ile kullanıyorum. Uygulamadaki sürüm numarasını nasıl güncelleyebilirim? Ben bu hatayı alıyorum.

Bu url'ye göre dosya oluşturuyorum https://facebook.github.io/react-native/docs/signed-apk-android.html

AndroidManifest.xml dosyasını değiştirmeyi denedim, ancak onu oluşturduktan sonra bu dosya otomatik olarak değiştiriliyor.

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

Burada XML'i değiştirdim:

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

Ardından, derleme dosyası otomatik olarak eski haline döner.

görüntü açıklamasını buraya girin


1
android: versionCode = "2" oyun mağazasına apk yüklemek istediğinizde, sürüm kodunu ve sürüm kodunu artırmak için gerekli olan her şeyi etkilemeyecek
olanı tutabileceğiniz

çalışmıyor, zaten yaptım. Sorumu düzelttim.
Praveen Prasad

Yanıtlar:


189

versionCodeVe versionNameiçinde değiştirmelisiniz android/app/build.gradle:

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"

        {...}
    }

    {...}
}

Teşekkürler, o dosyayı defalarca gördüm ama o kısmı kaçırdım.
Praveen Prasad

3
Çözümü işaret ettiğiniz dosyada buldum, ancak aslında biraz daha aşağıdaydı. ApplicationVariants ile başlayan bir bölüm vardı ve orada output.versionCodeOverride ayarlanıyordu, bu da adın önerdiği gibi yaptı ve dosyanın tepesindekini geçersiz kıldı.
AidenMontgomery

1
@Noitidart, Android Studio ve Gradle ile oluşturuyorsanız, burada değiştirmek yeterli olacaktır. AndroidManifest.xml'ye koyduğunuz her şeyi geçersiz kılar
Joseph Roque

13
@Noitidart versionCode, Google / size yönelik bir değerdir. Google Play'e yüklediğinizde versionCode, bir öncekinden daha büyük versionCodeve yüklenen her dosya için benzersiz olmasını bekler . Kişisel olarak, versionCodeGoogle Play'e her yükleme hazırladığımda manuel olarak artırıyorum . Diğer insanlar, git commit veya başka bir faktöre göre artacak şekilde otomatikleştirir. versionNamekullanıcılarınızın uygulamanızı güncellediklerinde / indirdiklerinde bu sürüm numarasını görebilmeleri için "2.2" olarak değiştireceğiniz şeydir.
Joseph Roque

2
@KTWorks evet, versionCode bir tam sayı olmalıdır. versionName olarak ayarlanabilir 1.0.1ve bu değeri kullanıcılara gösterir.
Joseph Roque

90

@Joseph Roque doğru, içindeki sürüm numaralarını güncellemeniz gerekiyor android/app/build.gradle.

Bunu nasıl otomatikleştirdiğimi ve paketin sürümüne package.jsonve git commits'e bağladığımı buradan öğrenebilirsiniz .

İçinde 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"
        }
    }

Notlar:

  • Bunun versionCodebir tamsayı olması önemlidir - bu yüzden burada anlamsal versiyonlamayı kullanamayız. Bu, oyun mağazasında hangi sürümlerin diğerlerinden sonra geldiğini söylemek için kullanılır - bu yüzden git commit'leri ile bağlantılıdır.getGitVersion

  • versionNameancak kullanıcılara gösteriliyor - burada anlamsal sürümleme kullanıyorum ve gerçek değeri package.json. Https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661'e teşekkürler


6
Andrew Jack, Medium makalesinde çok benzer bir yöntemi ve iOS için bir yöntemi tartışıyor : medium.com/@andr3wjack/… . Sürümlerini yapılarıyla uyumlu tutmak isteyenler için harika bir okuma.
DBrown

17

Bunu otomatikleştirmek ve aynı zamanda iOS'a sahip olmak isteyenler için sürüm numaralarını ayarlamak için react-native-version'u kullanabilirsiniz.

Tek yapmanız gereken , package.json dosyasının içindeki sürüm numaranızı güncellemek ve aşağıdakileri çalıştırmaktır:

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

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

Umarım bu başkalarına yardımcı olabilir.



0

Biri karşı karşıya geliyorsa

yanlış sürüm kodu, örneğin - 31284

Ardından, SeparateBuildPerCPUArchitecture'ı kullanmadığınızdan emin olun. android/app/build.gradle

def enableSeparateBuildPerCPUArchitecture = false

ve

sürüm kodunu ve ad değişikliğini güncellemek için android/app/build.gradle:

android {

defaultConfig {

    versionCode 1
    versionName "1.0"

    {...}
}

{...}
}

0

Aynı sorunu yaşadım ve yukarıdaki yanıtların hepsini kontrol ettim, aptalca bir hata yaptım çünkü benim için hiçbir şey işe yaramadı. Herhangi biriniz benimkiyle aynı hatayı yaparsa, bunu deneyin.

  1. Sürüm, 1.0 veya 1.0.1 gibi ondalık bir sayı olabilir.
  2. Ancak VersionCode ondalık sayı olamaz 1,2,3 vb. Olmalı 1.1 veya 2.2 olmamalıdır.

Yani project / app / build.gradle içinde

android {
defaultConfig {
    versionCode 1 // do not use decimal number here
    versionName "1.0" // you can use decimal number here.
    {...}
}
{...}
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.