「Generate sigined APK」がうまく行かない場合の build.gradle

Google Play Store にアップすると拒否られる.

なんかうまくいかないので小一時間.

その際, こんなダイアログメッセージが表示される.

For Gradle-based projects, the signing configuration should be specified in the Gradle build scripts. Configure your signing configurations as described in the user guide: http://tools.android.com/ tech-docs/new-build-system/ user-guide #TOC-Signing-Configurations

Gradleのベースのプロジェクトは、署名の設定は、Gradleのビルドスクリプトで指定する必要があります。ユーザーガイドに記載されているように、あなたの署名の設定を構成しましょう。

調べてみると, buiid.gradle にパスワードを記述したり, コンソールからのビルドでそれらを入力させたりの方法がたくさん見つかるのだが, できれば, プレーンなテキストでキーストアのパスワードを build.gradle にも書きたくない.

キーストアのパスワードマネージャが, せっかく Androis Studio についてるのでそれを使いたい.

以下で, それを満たせる.

コメントアウトは場合によってコメントイン.

build.gradle

android {
  ...
  signingConfigs {
    release {
      final Console console = System.console();
      if (console != null) {

        // for console (./gradlew assembleRelease)
        storeFile file(System.console().readLine("\nEnter keystore path: "))
        storePassword System.console().readLine("Enter keystore password: ")
        keyAlias System.console().readLine("Enter key alias: ")
        keyPassword System.console().readLine("Enter key password: ")

      } else {

        // for Android Studio use user environment values
        // storeFile file(System.getenv("KEYSTORE"))
        // storePassword System.getenv("KEYSTORE_PASSWORD")
        // keyAlias System.getenv("KEY_ALIAS")
        // keyPassword System.getenv("KEY_PASSWORD")

      }
    }
  }
}

コンソールからのビルドでの情報手入力と, 環境変数を利用するパターン使いまわせるように記述しているが, Android Studio から実行する場合は実質以下で, 「Generate Kestore Wizard(パスワードマネージャ)」が表示されてそれでケリがつく.

android {
    ...
    signingConfigs {
        release {
        }
    }
}

signingConfigs「release」で署名設定を空にしておく.

忘れてはならないのは, 「Build Variants」で 「release」を選択してから, 「Generate signed APK」で.

build_gradle


関連ワード:  AndroidAndroidStudioGradleアプリツール今さら聞けない開発