反応ネイティブアプリのバージョン番号を更新する方法


103

私はAndroidでReactNativeを使用しています。アプリでバージョン番号を更新するにはどうすればよいですか?このエラーが発生しているので。

この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ストアにアップロードするときはいつでも、影響を与えないようにすることができることを
意味

動作しません、私はすでにそれをしました。質問を修正しました。
Praveen Prasad 2016

回答:


198

あなたはあなたversionCodeversionNameを変えるべきですandroid/app/build.gradle

android {

    defaultConfig {

        versionCode 1
        versionName "1.0"

        {...}
    }

    {...}
}

おかげで、私自身もそのファイルを何度も見ましたが、その部分を見逃しました。
Praveen Prasad 2016

3
あなたが指摘したファイルで解決策を見つけましたが、実際には少し下にありました。applicationVariantsで始まるセクションがあり、そこでoutput.versionCodeOverrideが設定されていました。これは、名前が示すとおりに行われ、ファイルの先頭にあるセクションを上書きしました。
AidenMontgomery 2016年

1
@NoitidartをAndroidStudioとGradleでビルドしている場合は、ここで変更するだけで十分です。AndroidManifest.xmlに入力したものはすべて上書きされます
Joseph Roque

14
@NoitidartversionCodeは、Google /あなたのための値です。Google PlayにアップロードするとversionCode、以前よりも大きくなり、versionCodeアップロードされたすべてのファイルに固有であることが期待されます。個人的には、versionCodeGooglePlayへのアップロードを準備するたびに手動で1つずつインクリメントします。他の人々はそれを自動化して、gitcommitまたは他の要因に基づいてインクリメントします。versionNameこれは、ユーザーがアプリを更新/ダウンロードしたときにそのバージョン番号が表示されるように、「2.2」に変更するものです。
ジョセフロケ2017年

2
@KTWorksはい、versionCodeは整数でなければなりません。versionNameはに設定でき1.0.1、その値をユーザーに表示します。
ジョセフロケ

91

@Joseph Roqueは正しいので、のバージョン番号を更新する必要がありますandroid/app/build.gradle

これを自動化し、パッケージのバージョンpackage.jsonとgitcommitに関連付ける方法は次のとおりです。

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ストアで使用され、どのバージョンが他のバージョンの後に来るかを示します-そのため、でgitcommitsに関連付けられていますgetGitVersion

  • versionNameただし、ユーザーに表示されます-ここではセマンティックバージョニングを使用しており、実際の値をに格納していpackage.jsonます。https://medium.com/@andr3wjack/versioning-react-native-apps-407469707661に感謝します


6
Andrew Jackは、非常によく似た方法とiOSの方法についてMediumの記事medium.com/@andr3wjack/…で説明しています。バージョンをビルドと一致させたい人にとっては素晴らしい読み物です。
DBrown 2017年

21

これを自動化し、同時に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.

これが他の人の助けになることを願っています。



1

私も同じ問題を抱えていて、上記のすべての答えを確認しました。愚かな間違いを犯したため、何もうまくいきませんでした。誰かが私のと同じ間違いをした場合に備えて、これを試してください。

  1. バージョンは、1.0や1.0.1などの10進数にすることができます
  2. ただし、VersionCodeを10進数にすることはできません。1.1または2.2ではなく、1、2、3などにする必要があります。

したがって、project / app /build.gradleで

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

0

誰かが直面している場合

間違ったバージョンコード例-31284

次に、SeparateBuildPerCPUArchitectureを使用しないようにしてください android/app/build.gradle

def enableSeparateBuildPerCPUArchitecture = false

そして

でバージョンコードと名前の変更を更新するにはandroid/app/build.gradle

android {

defaultConfig {

    versionCode 1
    versionName "1.0"

    {...}
}

{...}
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.