Android-Codesignatursetup im 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 sie vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie die Migration in Betracht ziehen können.
Erfahren Sie mehr über die Fristen für den Support sowie über mögliche Alternativen.
Tipp
Bei Xamarin.Android-Benutzern unterscheidet sich der Prozess geringfügig. Weitere Informationen finden Sie in unserem Xamarin.Android Code Signing Guide .
Das Signieren einer App ist eine Anforderung zum Ausführen einer App auf realen Geräten während des Entwicklungsprozesses oder zum Verteilen über ein Betaprogramm oder im Play Store. Ohne Codesignierung 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 bereitgestellten Releasebuild einen Keystore in App Center hoch.
Generieren eines Keystores
Wenn Sie derzeit keinen Keystore haben, können Sie einen 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 Codesignierung für Android-Apps. Für alle drei Methoden müssen Sie zuerst zur Buildkonfiguration wechseln und die Codesignatur aktivieren:
- Wechseln Sie im App Center zu Ihrer App.
- Wechseln Sie zu Build.
- Wechseln Sie zu der Verzweigung, die Sie konfigurieren möchten, indem Sie ihn aus der Liste auswählen.
- Verwenden Sie entweder das Menü "Einstellungen" in der oberen rechten Ecke, oder wählen Sie " Konfigurieren " aus, wenn Ihre Verzweigung noch nicht für den Build konfiguriert ist.
- Signieren von Builds aktivieren.
- Wählen Sie Speichern.
Verwenden Sie dann je nach Szenario die am besten geeigneten 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 stattdessen zu verarbeiten.
Ab Android 11 ist es obligatorisch, den APK-Signierer (wenn Sie API-Ebene 30 verwenden) zu verwenden, da es einige zusätzliche Schemas "APK-Signaturschema v2 jetzt erforderlich" festlegen wird. App Center signiert jetzt (seit dem 17. Dezember 2020) Android-Anwendungen intern mit APK-Signierer anstelle von JAR-Signierer, der zuvor verwendet wurde. Im Rahmen des Features zum Aktivieren des APK-Signierers im App Center wurde die Android-Signaturaufgabe V3 implementiert, und die Anforderungen für die neue Signaturaufgabe wurden geändert, wie die Keystoredatei gespeichert wird - um die Keystoredatei in einer sicheren AzDO-Datei zu speichern (Android-Signierungs- und Freigabeaufgabe - Azure Pipelines | Microsoft-Dokumentation).
Warnung
Alle Buildkonfigurationen, für die ihre Keystoredateien vor dem 17. Dezember 2020 hochgeladen wurden, verwenden weiterhin die SIGN-Methode des APK-Signaturschemas v2 (jarsigner). Um den SIGN-Fluss des APK-Signaturschemas v3 zu verwenden, müssen Benutzer einfach ihre Keystoredateien erneut hochladen und ihre Verzweigungskonfiguration speichern .
Hinweis
Die Verwendung von Android Gradle Plugin 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 Anmeldedetails in der build.gradle
Datei (App-Ebene) angeben. Die Signaturdetails werden zusammen mit allen Anmeldeinformationen und den Schlüsselspeicherinformationen im Repository angezeigt. Fügen Sie zunächst alle Elemente hinzu, die Sie zum Code benötigen, und checken Sie sie in Ihr Repository ein. Aktivieren Sie dann in der Buildkonfiguration im App Center "Meine Gradle"-Einstellungen vollständig, um die Signatur automatisch zu behandeln.
B. Alles in App Center hochladen
Sie können den Keystore hochladen und die Anmeldeinformationen über das App Center konfigurieren. In diesem Fall erstellt App Center zuerst Ihre Android-App und führt dann einen Signaturschritt nach dem erfolgreichen Build aus.
Hinweis
Ein Build kann nur einmal signiert werden. Stellen Sie sicher, dass sie keine Konflikte mit der Signierungskonfiguration in Ihrer Gradle-Konfiguration für die ausgewählte Buildvariante haben. Wenn sowohl im App Center als auch in der Gradle-Datei Signatureinstellungen vorhanden sind, wird der Build möglicherweise zweimal registriert, und dies führt zu Konflikten.
Richten Sie Ihre Buildkonfiguration im App Center wie folgt ein:
- "Meine Gradle-Einstellungen deaktivieren " sind vollständig so eingestellt, dass die Signatur automatisch behandelt wird.
- Laden Sie Ihre Keystoredatei in den Dateiupload der Keystore-Datei hoch. Sie können die Datei auf das Feld ziehen oder darauf klicken und nach der Datei suchen. Keystore-Dateien haben die Erweiterung
.keystore
oder.jks
. - 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, wenn Sie einen Build signieren.
C. Speichern von Anmeldedetails im Repository mit Umgebungsvariablen
Verwenden Sie diese Methode, wenn Ihr Repository bereits den Schlüsselspeicher enthält, sie aber nicht dort speichern möchten. Zur Erstellungszeit werden die Anmeldeinformationen als Systemeigenschaften für den Gradle-Build bereitgestellt. Im folgenden Codebeispiel erfahren Sie, wie Sie diese verwenden 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, dafür, dass Ihre Anmeldeinformationen sicher sind – die Werte sind verschlüsselt und nur zur Erstellungszeit für die Build-Agents verfügbar. Sie können die Werte über das App Center bereitstellen. Sie können auch jeden der Werte hart codieren und in Ihr Repository einchecken. So schützen Sie die Werte mithilfe von App Center:
- Wechseln Sie zu Ihrer Buildkonfiguration.
- Stellen Sie sicher, dass das Kontrollkästchen " Meine Gradle-Einstellungen" vollständig so festgelegt ist, dass die Signatur automatisch nicht aktiviert ist.
- 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, wenn Sie einen Build signieren.
Wenn Sie Produktaromen verwenden, müssen Sie möglicherweise den Code oben anpassen, damit alle Ihre Releasekonfigurationen die richtige Signaturkonfiguration verwenden.
Hinweis
Wenn Sie die signingConfig
Option innerhalb des Abschnitts in Ihrer build.gradle
Datei (App-Ebene) verwenden, können Während des buildTypes
App Center-Builds Codesignierungsfehler 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 richtigen Keystore zum Signieren in Ihr Repository übertragen und die Einstellungen für "Meine Gradle" aktivieren, um die Automatische Anmeldung in Ihrer Buildkonfiguration im App Center-Portal zu behandeln.
Wenn Sie einen Keystore in die Buildkonfiguration im App Center-Portal hochgeladen haben, berücksichtigen Sie, dass dieser Ansatz die signingConfig
Option aus dem buildTypes
Abschnitt Ihrer build.gradle
Datei (App-Ebene) löschen muss, wenn Sie sie nicht aus dem Standardzustand der React Native-Projektvorlage aktualisiert haben.