web-dev-qa-db-ja.com

React署名付きAPKを生成するネイティブ "構成リリースに署名するためのキーストアファイルが設定されていません"

署名済みAPKを生成しようとしています。 password.keystoreファイルが\ Dictionary\Android\appにあり、cmdで_gradlew assembleRelease_を実行したときにエラーが発生しました:

タスク ':app:validateSigningRelease'の実行に失敗しました。

構成リリースに署名するためのキーストアファイルが設定されていません

Password.keystoreファイルはどこに保存すればよいですか? if (project.hasProperty("password.keystore") {をコメントアウトしたとき、動作しているように見えますが、代わりに次のエラーが発生するためです。

着信イベント 'ProgressComplete'を処理できません(ProgressCompleteEvent)

If条件を書き込むにはどうすればよいですか、password.keystoreファイルをどこに保存すればよいですか?

ソースコードは次のとおりです。

_signingConfigs {
  release {
    if (project.hasProperty("password.keystore")) {
      storeFile file("password.keystore")
      storePassword "password"
      keyAlias "username"
      keyPassword "password"
    }
  }
}
_
13
Benjamin

keystoreファイルはAndroid/appフォルダーにある必要があります。

メッセージ「設定リリースに署名するためのキーストアファイルが設定されていません」は、Android/app/build.gradleファイルにsigningConfigがないことを行う必要があります。

buildTypes {
    release {
        // other settings
        signingConfig signingConfigs.release
    }
}

テストのために、Android/app/build.gradleの設定をハードコーディングするだけで、代わりにgradle.propertiesで設定をオフにできます。これにより、「キーストアが改ざんされたか、パスワードが正しくありませんでした」という問題が修正されました=

  signingConfigs {
    release {
        //if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
            storeFile file("key.keystore")
            storePassword "****"
            keyAlias "myKey"
            keyPassword "****"
       // }
    }
}
22
Yoruba

私は解決策を見つけました!

React Nativeの公式指示 に従っている場合、私のように、次をgradle.propertiesに追加します

MYAPP_RELEASE_STORE_FILE=<your-app>.keystore
MYAPP_RELEASE_KEY_ALIAS=<keystore-alias>
MYAPP_RELEASE_STORE_PASSWORD=<password>
MYAPP_RELEASE_KEY_PASSWORD=<password>

そして、私が完全に誤解した部分が来る

app/build.gradle-ファイルでは、文字列を置換するnotことになっています。 gradle.propertiesが私が貼り付けたようなものである場合、app/build.gradleは次のようになります。

signingConfigs {
    release {
        if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }
}

私が最初にしたことは、文字列を置き換えることでした(つまり、 'MYAPP_RELEASE_STORE_FILE'をキーストアファイルへのパスで)が、あなたはnotすべての変数。 gradle.propertiesで作成した文字列とapp/build.gradleで作成したrelease-configの間の接続を確認できると思います。

.keystore-ファイルもAndroid/app内にも忘れずに置いてください。

7
Ola Alsaker

私の場合、プロジェクトはRNバージョン0.59で、0.60 RCドキュメントを使用していました。だから_app/build.gradle_の中

バージョン0.59の場合:

if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {

バージョン0.60の場合:

if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {

違いはRELEASEからUPLOADへの変更です

6
Scar Coder

私はまったく同じ問題を抱えていました。 gradle.propertiesファイルを編集するのを忘れていました。次のようになります。

Android.useDeprecatedNdk=true

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
4
Ankymtan

project.hasPropertyは、gradle.propertiesファイルでpassword.keystoreという名前の変数を探します。

~/.gradleに移動し、gradle.propertiesファイルがあるかどうかを確認します。ある場合は、変数password.keystoreが存在することを確認してください。キーストアファイルpassword.keystore=password.keystoreを指している必要があります。

MYAPP_RELEASE_STORE_FILE=password.keystoreなど、別の名前を付ける必要があります。その後、./gradlew assembleReleaseを実行すると、プロジェクトに目的のプロパティが設定され、次のようにtrueが解決され、gradlewがすべてのsigningConfigs.releaseプロパティを設定できるようになります。

if (project.hasProperty(MYAPP_RELEASE_STORE_FILE)) {
    storeFile file(...)
    storePassword your_password_property
    ...
}
3
JmJ

この問題に関するすべての回答を調査した後、どの回答も役に立たなかった!

だから、以下の実験を試してみて、助けました!!!!

my-release-key.keystoreファイルは、プロジェクトフォルダーのAndroidディレクトリの下にあります。

1
Kishore Jethava

実際には、パスワードなどの機密情報が含まれているため、これらのパラメーターを環境変数を使用してアプリリポジトリの外部に保存することを好みます。

signingConfigs {
    release {
        if (System.env.MYAPP_RELEASE_STORE_FILE != null) {
            storeFile       file(System.env.MYAPP_RELEASE_STORE_FILE)
            storePassword   System.env.MYAPP_RELEASE_STORE_PASSWORD
            keyAlias        System.env.MYAPP_RELEASE_KEY_ALIAS
            keyPassword     System.env.MYAPP_RELEASE_KEY_PASSWORD
        }
    }
}

これが完了したら、次のような詳細を持つbashスクリプトを読み込むことができます。

# path to my keystore
export MYAPP_RELEASE_STORE_FILE=/path/to/key.file
# ...

このようにして、署名構成はレポジトリから完全に分離されます。これにより、秘密を誤ってコミットすることを防ぎます。

1
EFreak

。keystoreファイルをアプリフォルダー内に配置し、次のような段階的な変更を行ったことを確認します。

    signingConfigs {
    release {
        storeFile file(RELEASE_STORE_FILE)
        storePassword RELEASE_STORE_PASSWORD
        keyAlias RELEASE_KEY_ALIAS
        keyPassword RELEASE_KEY_PASSWORD
    }
}
0
Sanjay Mallur

gradle.propertiesで使用されるエイリアス名が、keystoreを作成するときに使用されるものと同じであることを確認します(keytoolを使用)

0
Yuvraj Patil