署名済み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"
}
}
}
_
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 "****"
// }
}
}
私は解決策を見つけました!
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
内にも忘れずに置いてください。
私の場合、プロジェクトは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
への変更です
私はまったく同じ問題を抱えていました。 gradle.propertiesファイルを編集するのを忘れていました。次のようになります。
Android.useDeprecatedNdk=true
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
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
...
}
この問題に関するすべての回答を調査した後、どの回答も役に立たなかった!
だから、以下の実験を試してみて、助けました!!!!
my-release-key.keystore
ファイルは、プロジェクトフォルダーのAndroidディレクトリの下にあります。
実際には、パスワードなどの機密情報が含まれているため、これらのパラメーターを環境変数を使用してアプリリポジトリの外部に保存することを好みます。
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
# ...
このようにして、署名構成はレポジトリから完全に分離されます。これにより、秘密を誤ってコミットすることを防ぎます。
。keystoreファイルをアプリフォルダー内に配置し、次のような段階的な変更を行ったことを確認します。
signingConfigs {
release {
storeFile file(RELEASE_STORE_FILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
}
}
gradle.properties
で使用されるエイリアス名が、keystore
を作成するときに使用されるものと同じであることを確認します(keytool
を使用)