วิธีอัปเดตหมายเลขเวอร์ชันของแอป react native


97

ฉันใช้ 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

ไม่ได้ผลฉันทำไปแล้ว ฉันได้แก้ไขคำถามของฉันแล้ว
ประวีณ

คำตอบ:


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
Joseph Roque

13
@Noitidart versionCodeคือคุณค่าที่มีไว้สำหรับ Google / คุณ เมื่อคุณอัปโหลดไปยัง Google Play คาดว่าversionCodeจะมากกว่าก่อนหน้านี้versionCodeและยังไม่ซ้ำกันสำหรับทุกไฟล์ที่อัปโหลด โดยส่วนตัวแล้วฉันจะเพิ่มทีละครั้งด้วยตนเองversionCodeทุกครั้งที่เตรียมการอัปโหลดไปยัง Google Play คนอื่นทำให้มันเพิ่มขึ้นโดยอัตโนมัติตามคอมมิตคอมมิตหรือปัจจัยอื่น ๆ versionNameคือสิ่งที่คุณจะเปลี่ยนเป็น "2.2" เพื่อให้ผู้ใช้ของคุณเห็นหมายเลขเวอร์ชันนั้นเมื่อพวกเขาอัปเดต / ดาวน์โหลดแอปของคุณ
Joseph Roque

2
@KTWorks ใช่ versionCode ต้องเป็นจำนวนเต็ม versionName สามารถตั้งค่าเป็น1.0.1และจะแสดงค่านั้นแก่ผู้ใช้
Joseph Roque

90

@Joseph Roque ถูกต้องคุณต้องอัปเดตหมายเลขเวอร์ชันในรูปแบบandroid/app/build.gradle.

นี่คือวิธีที่ฉันทำสิ่งนี้โดยอัตโนมัติและผูกเข้ากับเวอร์ชันของแพ็คเกจในpackage.jsonและคอมไพล์

ใน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คือจำนวนเต็ม - ดังนั้นเราจึงไม่สามารถใช้การกำหนดเวอร์ชันความหมายได้ที่นี่ สิ่งนี้ใช้ใน play store เพื่อบอกว่าเวอร์ชันใดมาทีหลังคนอื่นนั่นเป็นเหตุผลว่าทำไมมันถึงเชื่อมโยงกับคอมไพล์คอมมิตgetGitVersion

  • versionNameอย่างไรก็ตามจะแสดงให้ผู้ใช้เห็น - ฉันใช้การกำหนดเวอร์ชันเชิงความหมายที่นี่และจัดเก็บค่าจริงในpackage.jsonไฟล์. ขอบคุณข้อมูลhttps://medium.com/@andr3wjack/versioning-react-native-apps-407469707661


6
แอนดรูแจ็คกล่าวถึงวิธีการที่คล้ายกันมากและวิธีการสำหรับ iOS ในบทความขนาดกลางของเขา: medium.com/@andr3wjack/... เป็นการอ่านที่ยอดเยี่ยมสำหรับผู้ที่ต้องการให้เวอร์ชันตรงกับงานสร้างของตน
DBrown

17

สำหรับผู้ที่ต้องการทำสิ่งนี้โดยอัตโนมัติและมี iOS ในเวลาเดียวกันคุณสามารถใช้react-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.
    {...}
}
{...}
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.