Einrichtung der Android-Codesignatur in App Center

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie eine Migration in Betracht ziehen können.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

Tipp

Für Xamarin.Android-Benutzer ist der Prozess etwas anders. Weitere Informationen finden Sie in unserem Leitfaden zur Xamarin.Android-Codesignatur .

Das Signieren einer App ist eine Voraussetzung, um eine App während des Entwicklungsprozesses auf echten Geräten auszuführen oder über ein Beta-Programm oder im Play Store zu verteilen. Ohne Codesignatur kann die App nur auf einem Emulator ausgeführt werden.

Wenn App Center eine Android-Anwendung mit einem Debugbuildtyp erstellt, ist kein Keystore für einen Entwickler erforderlich, kann aber hochgeladen werden. Diese Builds werden automatisch mit einem Debugschlüssel signiert. Laden Sie für einen Releasebuild, der bereitgestellt wird, einen Keystore in App Center hoch.

Generieren eines Keystores

Wenn Sie derzeit keinen Keystore besitzen, können Sie einen Keystore in Android Studio generieren. Anweisungen zum Generieren eines Keystores zum Signieren von APKs finden Sie im offiziellen Benutzerhandbuch von Android Studio.

Einrichten der Codesignatur

App Center unterstützt drei verschiedene Möglichkeiten zum Einrichten der Codesignatur für Android-Apps. Für alle drei Methoden müssen Sie zunächst zur Buildkonfiguration wechseln und die Codesignatur aktivieren:

  1. Wechseln Sie im App Center zu Ihrer App.
  2. Wechseln Sie zu Erstellen.
  3. Wechseln Sie zu dem Branch, den Sie konfigurieren möchten, indem Sie ihn aus der Liste auswählen.
  4. Verwenden Sie entweder das Menü "Einstellungen" in der oberen rechten Ecke, oder wählen Sie Konfigurieren aus, wenn Ihr Branch noch nicht für den Build konfiguriert ist.
  5. Aktivieren Sie Signbuilds.
  6. Wählen Sie Speichern aus.

Verwenden Sie dann je nach Szenario die am besten geeignete der drei Optionen in den folgenden Abschnitten. Die erste Option umfasst das Einchecken von Anmeldeinformationen für Ihr Repository, während die anderen beiden App Center verwenden, um Ihre Anmeldeinformationen zu verarbeiten.

Ab Android 11 ist es obligatorisch, den APK-Signierer zu verwenden (wenn Sie API-Ebene 30 verwenden), da es einige zusätzliche Schemas "APK Signature Scheme v2 now required" (APK-Signaturschema v2 jetzt erforderlich) festgelegt wird. App Center signiert jetzt (seit dem 17. Dezember 2020) Android-Anwendungen mithilfe des APK-Signierers intern anstelle der zuvor verwendeten JAR-Signierer. Als Teil des Features zum Aktivieren des APK-Signierers in App Center wurde der Android-Signaturtask V3 implementiert, und die Anforderungen für die neue Signaturaufgabe waren, um die Speicherung der Keystoredatei in einer sicheren AzDO-Datei zu ändern (Build- und Freigabetask für Android-Signierung – Azure Pipelines | Microsoft-Dokumentation).

Warnung

Alle Buildkonfigurationen, für die ihre Keystoredateien vor dem 17. Dezember 2020 hochgeladen wurden, verwenden weiterhin die Signaturmethode APK Signature Scheme v2 (JARSIGNER). Um den Signaturflow des APK-Signaturschemas v3 zu verwenden, müssen Benutzer nur ihre Keystoredateien erneut hochladen und ihre Branchkonfiguration speichern .

Hinweis

Die Verwendung von Android Gradle Plug-In Version 4.1.x wird nicht vollständig unterstützt. Um diese Version verwenden zu können, müssen Sie die nächste Optionseinstellung in der gradle.properties Datei hinzufügen:

 android.useNewApkCreator = false

A. Speichern aller Elemente in der Gradle-Konfiguration

Sie können die Signaturdetails in der build.gradle Datei (Auf App-Ebene) angeben. Die Signaturdetails sowie alle Anmeldeinformationen und keystore-Informationen werden im Repository angezeigt. Fügen Sie zunächst alle elemente, die Sie benötigen, ihrem Code hinzu, und checken Sie sie in Ihr Repository ein. Aktivieren Sie dann in der Buildkonfiguration in App Center Die Einstellungen für Mein Gradle sind vollständig so festgelegt, dass die Signatur automatisch verarbeitet wird.

B. Alles in App Center hochladen

Sie können den Keystore hochladen und die Anmeldeinformationen für die Signatur über App Center konfigurieren. In diesem Fall erstellt App Center zuerst Ihre Android-App und führt dann nach dem erfolgreichen Build einen Signierungsschritt aus.

Hinweis

Ein Build kann nur einmal signiert werden. Stellen Sie sicher, dass keine Konflikte mit Signaturkonfigurationen in Ihrer Gradle-Konfiguration für die ausgewählte Buildvariante auftreten. Wenn sowohl in App Center als auch in der Gradle-Datei Signatureinstellungen vorhanden sind, wird der Build möglicherweise zweimal registriert, was zu Konflikten führt.

Richten Sie Ihre Buildkonfiguration in App Center wie folgt ein:

  1. Die Einstellungen "Mein Gradle deaktivieren" sind vollständig so festgelegt, dass die Signatur automatisch verarbeitet wird.
  2. Laden Sie Ihre Keystore-Datei in die Datei zum Hochladen der Keystore-Datei hoch. Sie können die Datei auf das Feld ziehen oder darauf klicken und nach der Datei suchen. Keystore-Dateien weisen die Erweiterung .keystore oder .jksauf.
  3. Geben Sie das Schlüsselspeicherkennwort, den Schlüsselalias und das Schlüsselkennwort in die entsprechenden Felder ein. Diese Werte sind dieselben, die Sie andernfalls in Android Studio eingeben würden, wenn Sie einen Build signieren.

C. Speichern von Signaturdetails im Repository mit Umgebungsvariablen

Verwenden Sie diese Methode, wenn Ihr Repository bereits den Keystore enthält, Sie die Anmeldeinformationen jedoch nicht dort speichern möchten. Zur Buildzeit werden die Anmeldeinformationen als Systemeigenschaften für den Gradle-Build bereitgestellt. Im folgenden Codebeispiel erfahren Sie, wie Sie sie nutzen können:

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
        }
    }
}

Im obigen Code sorgt das Sichern von Werten hinter Systemeigenschaften, die in Ihren Build eingefügt wurden, für die Sicherheit Ihrer Anmeldeinformationen. Die Werte sind verschlüsselt und stehen den Build-Agents nur zur Buildzeit zur Verfügung. Sie können die Werte über App Center bereitstellen. Sie können auch alle Werte hart codieren und in Ihr Repository einchecken. So verwenden Sie App Center zum Schützen der Werte:

  1. Wechseln Sie zu Ihrer Buildkonfiguration.
  2. Stellen Sie sicher, dass das Kontrollkästchen "Meine Gradle-Einstellungen" vollständig so eingestellt ist, dass die Signatur automatisch behandelt wird, wenn sie nicht aktiviert ist.
  3. Geben Sie das Schlüsselspeicherkennwort, den Schlüsselalias und das Schlüsselkennwort in die entsprechenden Felder ein. Diese Werte sind dieselben, die Sie andernfalls in Android Studio eingeben würden, wenn Sie einen Build signieren.

Wenn Sie Produktaromen verwenden, müssen Sie möglicherweise den obigen Code anpassen, damit alle Ihre Releasekonfigurationen die richtige Signaturkonfiguration verwenden.

Hinweis

Wenn Sie die signingConfig Option innerhalb des Abschnitts buildTypes in Ihrer build.gradle Datei auf App-Ebene verwenden, können Beim App Center-Build Fehler beim Signieren auftreten. Dies ist insbesondere für Apps relevant, die React Native für Android Version 0.60.x und höher verwenden:

 Execution failed for task ':app:validateSigningRelease'.
 Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'

Um dieses Problem zu beheben, müssen Sie einen ordnungsgemäßen Keystore, der für die Signatur verwendet wird, per Push an Ihr Repository übertragen und die Einstellungen für Mein Gradle aktivieren, die vollständig so festgelegt sind, dass die Anmeldung in Ihrer Buildkonfiguration im App Center-Portal automatisch verarbeitet wird.

Falls Sie einen Keystore in die Buildkonfiguration im App Center-Portal hochgeladen haben, müssen Sie berücksichtigen, dass bei diesem Ansatz die signingConfig Option aus dem buildTypes Abschnitt Ihrer build.gradle Datei (App-Ebene) gelöscht werden muss, wenn Sie sie nicht aus dem Standardzustand der React Native Projektvorlage aktualisiert haben.