Cara memperbarui nomor versi aplikasi react native

98

Saya menggunakan React native dengan Android. Bagaimana saya bisa memperbarui nomor versi di aplikasi? Saat saya mendapatkan kesalahan ini.

Saya membuat file sesuai url ini https://facebook.github.io/react-native/docs/signed-apk-android.html

Saya telah mencoba memodifikasi file AndroidManifest.xml, tetapi setelah saya membuatnya, file tersebut secara otomatis diubah kembali.

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

Di sini, saya memodifikasi XML:

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

Setelah itu, file build secara otomatis berubah kembali.

masukkan deskripsi gambar di sini

Praveen Prasad
sumber
1
android: versionCode = "2" berarti kapan pun Anda ingin mengunggah apk di play store yang diperlukan untuk meningkatkan kode versi & kode versi, Anda dapat menyimpan apa pun yang Anda inginkan tidak berdampak
Ajinkya
tidak berhasil, saya sudah melakukannya. Saya telah mengoreksi pertanyaan saya.
Praveen Prasad

Jawaban:

190

Anda harus mengubah Anda versionCodedan versionNamedi android/app/build.gradle:

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"

        {...}
    }

    {...}
}
Joseph Roque
sumber
Terima kasih, saya sendiri melihat file itu beberapa kali, tetapi saya melewatkan bagian itu.
Praveen Prasad
3
Saya menemukan solusi di file yang Anda tunjuk, tetapi sebenarnya sedikit lebih jauh ke bawah. Ada bagian yang dimulai dengan applicationVariants dan di sana output.versionCodeOverride sedang disetel, yang melakukan seperti yang disarankan namanya dan menimpa yang ada di bagian atas file.
AidenMontgomery
1
@Noitidart jika Anda membangun dengan Android Studio dan Gradle, mengubahnya di sini sudah cukup. Ini akan menimpa apa pun yang Anda masukkan ke AndroidManifest.xml
Joseph Roque
14
@Noitidart versionCodeadalah nilai yang ditujukan untuk Google / Anda. Saat Anda mengunggah ke Google Play, ini diharapkan versionCodemenjadi lebih besar dari sebelumnya versionCode, dan juga unik untuk setiap file yang diunggah. Secara pribadi, saya hanya menambah versionCodesatu per satu secara manual setiap kali saya menyiapkan unggahan ke Google Play. Orang lain mengotomatiskannya menjadi kenaikan berdasarkan git commit, atau faktor lainnya. versionNameadalah apa yang ingin Anda ubah menjadi "2.2" sehingga pengguna Anda akan melihat nomor versi itu ketika mereka memperbarui / mengunduh aplikasi Anda.
Joseph Roque
2
@KTWorks ya, versionCode harus berupa bilangan bulat. versionName dapat diatur ke 1.0.1dan akan menampilkan nilai itu kepada pengguna.
Joseph Roque
90

@Joseph Roque benar, Anda perlu memperbarui nomor versi di android/app/build.gradle.

Inilah cara saya mengotomatiskan ini dan mengikatnya ke dalam versi paket package.jsondan git melakukan.

Masuk 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"
        }
    }

Catatan:

  • Itu penting bahwa itu versionCodeadalah bilangan bulat - jadi kita tidak dapat menggunakan pembuatan versi semantik di sini. Ini digunakan di play store untuk mengetahui versi mana yang muncul setelah yang lain - itulah mengapa ini terkait dengan git commit ingetGitVersion

  • versionNamenamun ditampilkan kepada pengguna - Saya menggunakan versi semantik di sini dan menyimpan nilai sebenarnya di file package.json. Terima kasih untuk https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661

tgf
sumber
6
Andrew Jack membahas metode yang sangat mirip, dan metode untuk iOS dalam artikel Medium-nya: medium.com/@andr3wjack/… . Ini adalah bacaan yang bagus untuk orang-orang yang ingin menjaga versinya tetap cocok dengan build mereka.
DBrown
17

Bagi mereka yang ingin mengotomatiskan ini, dan memiliki iOS pada saat yang sama, Anda dapat menggunakan react-native-version untuk mengatur nomor versi.

Yang perlu Anda lakukan adalah memperbarui nomor versi Anda di dalam file package.json dan menjalankan perintah berikut:

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

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

Saya harap ini bisa membantu orang lain.

Francois Nadeau
sumber
0

Jika seseorang menghadap

kode versi salah misalnya - 31284

Kemudian pastikan untuk tidak menggunakan SeparateBuildPerCPUArchitecture di android/app/build.gradle

def enableSeparateBuildPerCPUArchitecture = false

dan

untuk memperbarui kode versi dan perubahan nama di android/app/build.gradle:

android {

defaultConfig {

    versionCode 1
    versionName "1.0"

    {...}
}

{...}
}
kvadityaaz
sumber
0

Saya memiliki masalah yang sama dan saya memeriksa semua jawaban di atas, saya melakukan kesalahan konyol karena tidak ada yang berhasil untuk saya. Kalau-kalau ada di antara Anda yang melakukan kesalahan yang sama seperti saya, coba ini.

  1. Versi dapat berupa angka desimal seperti 1.0 atau 1.0.1 dll
  2. Tapi VersionCode tidak bisa berupa angka desimal. Seharusnya 1,2,3 dll dan bukan 1.1 atau 2.2

Jadi di project / app / build.gradle

android {
defaultConfig {
    versionCode 1 // do not use decimal number here
    versionName "1.0" // you can use decimal number here.
    {...}
}
{...}
}
Vasanth
sumber