App Center での Android コード署名のセットアップ
重要
Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。
ヒント
Xamarin.Android ユーザーの場合、プロセスは若干異なります。 詳細については、 Xamarin.Android コード署名ガイド を参照してください。
アプリへの署名は、開発プロセス中に実際のデバイスでアプリを実行するか、ベータ プログラムまたは Play ストアで配布する必要があります。 コード署名がない場合、アプリはエミュレーターでのみ実行できます。
App Center でデバッグ ビルドの種類を使用して Android アプリケーションをビルドする場合、開発者向けのキーストアは必要ありませんが、アップロードできます。 これらのビルドは、デバッグ キーを使用して自動的にコード署名されます。 デプロイされるリリース ビルドの場合は、キーストアを App Center にアップロードします。
キーストアの生成
現在キーストアがない場合は、Android Studio でキーストアを生成できます。 キーストアを生成して API に署名する手順については、Android Studio の公式ユーザー ガイド。
コード署名の設定
App Center では、Android アプリのコード署名を設定する 3 つの異なる方法がサポートされています。 3 つのメソッドすべてについて、まずビルド構成に移動し、コード署名を有効にする必要があります。
- App Center でアプリに移動します。
- Build に移動します。
- 一覧から選択して、構成するブランチに移動します。
- 右上隅にある [設定] メニューを使用するか、ブランチがまだビルド用に構成されていない場合は構成を選択します。
- ビルド 署名を有効にします。
- 保存を選択します。
次に、シナリオに応じて、次のセクションの 3 つのオプションのうち、最適なオプションを使用します。 最初のオプションでは、リポジトリへの資格情報のチェックインが含まれますが、他の 2 つは App Center を使用して代わりに資格情報を処理します。
Android 11 の時点では、APK 署名者 (API レベル 30 を使用する場合) を使用することが必須です。これは、いくつかの追加スキーム "APK Signature Scheme v2 now required" を設定するためです。 (2020 年 12 月 17 日以降) App Center は、以前に使用された JAR 署名者ではなく、APK 署名者を使用して Android アプリケーションに内部署名するようになりました。 App Center で APK 署名者を有効にする機能の一環として、Android 署名タスク V3 が実装され、新しい署名タスクの要件は、キーストア ファイルの保存方法を変更することでした 。AzDO セキュリティで保護されたファイルにキーストア ファイルを格納する (Android 署名ビルドおよびリリース タスク - Azure Pipelines |Microsoft Docs)。
警告
2020 年 12 月 17 日より前にキーストア ファイルがアップロードされていたビルド構成では、引き続き APK Signature Scheme v2 署名方法 (jarsigner) が使用されます。 APK Signature Scheme v3 署名フローを使用するには、キーストア ファイルをアップロードしブランチ構成保存する必要があります。
Note
Android Gradle プラグイン バージョン 4.1.x の使用は完全にはサポートされていません。 このバージョンを使用するには、 gradle.properties
ファイルに次のオプション設定を追加する必要があります。
android.useNewApkCreator = false
A. Gradle 構成にすべてを格納する
署名の詳細は、 build.gradle
(アプリ レベル) ファイルで指定できます。 署名の詳細と、すべての資格情報とキーストア情報がリポジトリに表示されます。 まず、必要なすべての項目をコードに追加し、リポジトリにチェックインします。 その後、App Center のビルド構成で、 My Gradle 設定が完全に設定され、署名が自動的に処理されるように設定されます。
B. App Center へのすべてをアップロードする
キーストアをアップロードし、App Center を使用して署名資格情報を構成できます。 この場合、App Center は最初に Android アプリをビルドし、ビルドが成功した後に署名手順を実行します。
Note
ビルドは 1 回だけ署名できます。 選択したビルド バリアントの Gradle 構成で署名構成と競合がないことを確認します。 App Center と Gradle ファイルの両方に署名設定がある場合、ビルドが 2 回署名され、これにより競合が発生する可能性があります。
App Center で次のようにbuild 構成を設定します。
- Gradle の設定は、署名を自動的に処理するように完全に設定されます。
- キーストア ファイルを Keystore ファイルにアップロード ファイルのドロップをアップロードします。 ファイルをボックスにドラッグするか、クリックしてファイルを参照できます。 キーストア ファイルには、拡張子
.keystore
または.jks
があります。 - 対応するフィールドに、キーストアパスワード、キーエイリアス、およびキーパスワードを入力します。 これらの値は、ビルドに署名するときに Android Studio で入力した値と同じです。
C: 環境変数を使用したリポジトリへの署名の詳細の格納
リポジトリに既にキーストアが含まれているが、資格情報をそこに格納しない場合は、このメソッドを使用します。 ビルド時に、資格情報は Gradle ビルド System プロパティとして提供されます。 それらを利用する方法については、次のコード サンプルを参照してください。
android {
signingConfigs {
releaseSigningConfig {
storeFile rootProject.file("app/testapp.jks")
storePassword System.getProperty("APPCENTER_KEYSTORE_PASSWORD")
keyAlias System.getProperty("APPCENTER_KEY_ALIAS")
keyPassword System.getProperty("APPCENTER_KEY_PASSWORD")
}
}
buildTypes {
release {
signingConfig signingConfigs.releaseSigningConfig
}
}
}
上記のコードでは、ビルドに挿入されたシステム プロパティの背後にある値をセキュリティで保護すると、署名資格情報が安全に維持されます。値は暗号化され、ビルド時にビルド エージェントのみが使用できます。 値は App Center を通じて指定できます。 値をハード コーディングし、リポジトリにチェックインすることもできます。 App Center を使用して値を保護するには:
- build 構成に移動します。
- My Gradle 設定が署名を自動的に処理するように完全に設定されていることを確認しますチェックされません。
- 対応するフィールドに、キーストアパスワード、キーエイリアス、およびキーパスワードを入力します。 これらの値は、ビルドに署名するときに Android Studio で入力した値と同じです。
製品の種類を使用する場合は、上記のコードを調整して、すべてのリリース構成で正しい署名構成が使用されるようにする必要がある場合があります。
Note
build.gradle
(アプリ レベル) ファイルの buildTypes
セクション内で signingConfig
オプションを使用すると、App Center のビルド中にコード署名エラーが発生する可能性があります。 これは、Android バージョン 0.60.x 以降で React Native を使用するアプリに特に関連します。
Execution failed for task ':app:validateSigningRelease'.
Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'
この問題を解決するには、リポジトリへの署名に使用する適切なキーストアをプッシュし、 My Gradle 設定を有効にして、App Center ポータルのビルド構成で 署名を自動的に処理するように設定する必要があります。
App Center ポータルでキーストアをビルド構成にアップロードした場合、React Native プロジェクト テンプレートの既定の状態から更新しなかった場合、この方法ではbuild.gradle
(アプリ レベル) ファイルのbuildTypes
セクションからsigningConfig
オプションを削除する必要があることを考慮してください。