Freigeben über


Signieren einer mobilen App

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Um eine mobile App für Android- oder Apple-Betriebssysteme zu signieren und bereitzustellen, müssen Sie Signaturzertifikate und Apple-Bereitstellungsprofile verwalten. In diesem Artikel wird beschrieben, wie Sie Zertifikate und Profile sicher verwalten, um Ihre App in Azure Pipelines zu signieren und bereitzustellen.

Hinweis

Sie benötigen mindestens einen Agent, um einen Build oder eine Version auszuführen. Sie können einen von Microsoft gehosteten Linux-, macOS- oder Windows-Build-Agent verwenden oder Ihren eigenen Agent einrichten. Weitere Informationen finden Sie unter Build- und Release-Agents.

Signieren Ihrer Android-App

Führen Sie die folgenden Schritte aus, um Ihre Android-App zu signieren, während Ihr Signaturzertifikat sicher bleibt.

Hochladen der Keystoredatei

  1. Rufen Sie eine Keystoredatei ab, die Ihr Signaturzertifikat enthält. In der Android-Dokumentation wird der Prozess zum Generieren einer Keystore-Datei und des entsprechenden Schlüssels beschrieben.

  2. Wechseln Sie in Azure Pipelines zu "Libraries>Secure files". Wählen Sie +Datei sichern und laden Sie Ihre Keystoredatei in die sichere Dateienbibliothek hoch. Während des Uploads wird Ihr Keystore verschlüsselt und sicher gespeichert.

Hinzufügen der Signieraufgabe zur Pipeline

Fügen Sie die aufgabe AndroidSigning@3 ihrer YAML-Pipeline nach dem Schritt hinzu, in dem Ihre App erstellt wird. In der AndroidSigning@3 Aufgabe:

  • <apkFiles> ist erforderlich und ist der Pfad und die Namen der APK-Dateien, die signiert werden sollen. Der Standardwert ist **/*.apk.
  • <apksign> muss die Standardeinstellung sein true.
  • <keystore-file> ist der Name Ihrer hochgeladenen Keystoredatei in der Bibliothek für sichere Dateien.
  • <apksignerKeystorePassword> ist das Kennwort für die unverschlüsselte Keystore-Datei.
  • <apksignerKeystoreAlias> ist der Schlüsselalias für das Signaturzertifikat.
  • <apksignerKeyPassword> ist das Kennwort für den Schlüssel, der dem angegebenen Alias zugeordnet ist.

Sie können Variablen im YAML festlegen und verwenden, oder Sie können die Variablen mithilfe der Registerkarte "Variablen" in der Benutzeroberfläche von Azure Pipelines festlegen und darauf verweisen.

variables:
  keystore-password: <keystore file password>
  key-alias: <key alias for the signing certificater>
  key-password: <password for the key associated with the alias>

steps:
- task: AndroidSigning@3
  displayName: 'Signing and aligning APK file(s) **/*.apk'
  inputs:
    apkFiles: '**/*.apk'
    apksign: true
    apksignerKeystoreFile: <keystore-filename.keystore>
    apksignerKeystorePassword: $(keystore-password)
    apksignerKeystoreAlias: $(key-alias)
    apksignerKeyPassword: $(key-password)

Jeder Build-Agent kann Ihre App jetzt ohne Zertifikatverwaltung auf dem Buildcomputer selbst sicher signieren.

Signieren Ihrer Apple iOS-, macOS-, tvOS- oder watchOS-App

Um Ihre App zu signieren und bereitzustellen, benötigt Ihr Xcode- oder Xamarin.iOS-Build Zugriff auf Ihr P12-Signaturzertifikat und ein oder mehrere Bereitstellungsprofile. In den folgenden Schritten wird erläutert, wie Sie diese Dateien abrufen.

Abrufen Ihres P12-Signaturzertifikats

  1. Exportieren Sie Ihr Entwicklungs- oder Verteilungssignaturzertifikat mithilfe von Xcode oder der Schlüsselbund-Access-App unter macOS in eine P12-Datei .

    • So exportieren Sie Xcode:

      1. Wechseln Sie zu "Xcode-Einstellungen>>"-Konten.

      2. Wählen Sie in der linken Spalte Ihre Apple-ID aus.

      3. Wählen Sie auf der rechten Seite Ihr persönliches oder Teamkonto aus, und wählen Sie "Zertifikate verwalten" aus.

      4. STRG+Wählen Sie das Zertifikat aus, das Sie exportieren möchten, und wählen Sie im Menü "Zertifikat exportieren" aus.

        Screenshot des Exportierens eines Zertifikats mit Xcode.

      5. Geben Sie im Dialogfeld den Zertifikatnamen, den Speicherort zum Speichern der Datei und ein Kennwort ein, um das Zertifikat zu sichern.

    • Oder verwenden Sie das unter iOS-Signieren beschriebene Verfahren, um einem ähnlichen Prozess mithilfe der Schlüsselbund-Access-App unter macOS zu folgen oder ein Signaturzertifikat unter Windows zu generieren.

  2. Laden Sie Ihre P12-Datei in die sichere Dateienbibliothek von Azure Pipelines hoch. Während des Uploads wird Ihr Zertifikat verschlüsselt und sicher gespeichert.

  3. Wechseln Sie in Ihrer Pipeline zur Registerkarte "Variablen ", und fügen Sie eine Variable mit dem Namen "P12password " mit Ihrem Zertifikatkennwort als Wert hinzu. Achten Sie darauf, das Sperrsymbol auszuwählen, um Ihr Kennwort zu sichern und in Protokollen zu verdecken.

Abrufen Ihres Bereitstellungsprofils

Wenn Ihre App keine automatische Signatur verwendet, können Sie Ihr App-Bereitstellungsprofil aus dem Apple Developer-Portal herunterladen. Weitere Informationen finden Sie unter Bearbeiten, Herunterladen oder Löschen von Bereitstellungsprofilen.

Sie können Xcode auch verwenden, um auf Bereitstellungsprofile zuzugreifen, die auf Ihrem Mac installiert sind. Wechseln Sie in Xcode zu "Xcode-Einstellungen>>"-Konten. Wählen Sie Ihre Apple-ID und Ihr Team und dann " Manuelle Profile herunterladen" aus.

Laden Sie in Azure Pipelines Ihr Bereitstellungsprofil in die bibliothek für sichere Dateien hoch. Während des Uploads wird Ihre Datei verschlüsselt und sicher gespeichert.

Hinzufügen der Signier- und Bereitstellungsaufgaben zur Pipeline

Um Ihre App zu signieren und bereitzustellen, können Sie entweder das Zertifikat und das Profil während jedes Builds installieren oder die Dateien auf einem macOS-Build-Agent vorinstallieren.

Installieren des Zertifikats und des Profils während der einzelnen Builds

Installieren Sie das Zertifikat und das Profil während jedes Builds, wenn Sie keinen dauerhaften Zugriff auf den Build-Agent haben, z. B. wenn Sie gehostete macOS-Agents verwenden. Das P12-Zertifikat und das Bereitstellungsprofil werden am Anfang des Buildprozesses installiert und nach Abschluss des Buildprozesses entfernt.

  • Fügen Sie die aufgabe InstallAppleCertificate@2 ihrer YAML-Pipeline vor der Aufgabe Xcode oder Xamarin.iOS hinzu. Ersetzen Sie <secure-file.p12> im Code den Namen der hochgeladenen P12-Datei . Verwenden Sie die Variable für die sichere P12password.

    - task: InstallAppleCertificate@2
        inputs:
          certSecureFile: '<secure-file.p12>'
          certPwd: '$(P12password)'
    

    Hinweis

    In der InstallAppleCertificate@2 Aufgabe wird standardmäßig der deleteCert Parameter verwendet true, der das Zertifikat nach dem Build entfernt.

  • Fügen Sie die InstallAppleProvisioningProfile@1 Aufgabe vor der Xcode- oder Xamarin.iOS-Aufgabe zu Ihrem YAML hinzu. Ersetzen Sie den <secure-file.mobileprovision> Namen Ihrer Bereitstellungsprofildatei.

    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: '<secure-file.mobileprovision>'
    

    Hinweis

    In der InstallAppleProvisioningProfile@1 Aufgabe wird standardmäßig der removeProfile Parameter verwendet true, der das Profil nach dem Build entfernt.

Jeder Build-Agent kann Ihre App jetzt ohne Zertifikat- oder Profilverwaltung auf dem Buildcomputer selbst sicher signieren.

Vorabinstallation des Zertifikats und des Profils auf einem macOS-Build-Agent

Anstatt das Signaturzertifikat und die Bereitstellungsprofile während des Builds zu installieren, können Sie sie auf einem macOS-Build-Agent vorab installieren. Die Dateien stehen dann für die fortgesetzte Verwendung durch Builds zur Verfügung. Verwenden Sie diese Methode nur, wenn Sie den Personen und Prozessen vertrauen, die Zugriff auf die macOS-Schlüsselkette auf dem Agentcomputer haben.

Vorabinstallation des P12-Zertifikats

  1. Führen Sie zum Installieren des P12-Zertifikats im Standardschlüsselbund den folgenden Befehl aus einem macOS-Terminalfenster auf dem Build-Agent aus. Ersetzen Sie den <certificate.p12> Pfad und den Namen Ihrer P12-Datei. Ersetzen Sie <password> durch das Verschlüsselungskennwort der P12-Datei.

    sudo security import <certificate.p12> -P <password>
    
  2. Fügen Sie ihrer Pipeline mit dem Namen KEYCHAIN_PWD eine neue Variable hinzu. Legen Sie den Wert als Kennwort auf den Standardschlüsselbund fest, bei dem es sich normalerweise um das Kennwort für den Benutzer handelt, der den Agent startet. Achten Sie darauf, das Sperrsymbol auszuwählen, um dieses Kennwort zu sichern.

Vorabinstallation des Bereitstellungsprofils

  1. Suchen Sie den vollständigen Namen Ihrer Signaturidentität, indem Sie ein macOS-Terminalfenster öffnen und eingeben security find-identity -v -p codesigning. Im Formular iPhone Developer/Distribution: Developer Name (ID)wird eine Liste der Signaturidentitäten angezeigt. Wenn eine Identität ungültig ist, wird etwas wie (CSSMERR_TP_CERT_REVOKED) nach der Identität angezeigt.

  2. Um das Bereitstellungsprofil auf dem Agentcomputer zu installieren, führen Sie den folgenden Befehl aus einem macOS-Terminalfenster aus. Ersetzen Sie den Pfad zu Ihrer Bereitstellungsprofildatei, und ersetzen Sie <profile> <UUID> durch die UUID des Bereitstellungsprofils, bei dem es sich um den Dateinamen des Bereitstellungsprofils ohne die .mobileprovision Erweiterung handelt.

    sudo cp <profile> ~/Library/MobileDevice/Provisioning Profiles/<UUID>.mobileprovision
    

Hinzufügen von Signatur- und Bereitstellungsaufgaben, die den Standardschlüsselbund verwenden

  • Fügen Sie die aufgabe InstallAppleCertificate@2 ihrer YAML-Pipeline vor der Aufgabe Xcode oder Xamarin.iOS hinzu. Legen Sie im Code die folgenden Werte fest:

    • certSecureFile: Der Name der hochgeladenen P12-Datei .
    • certPwd: Die Variable für das sichere P12password.
    • signingIdentity: Der vollständige Name Ihrer Signaturidentität.
    • keychain: default, um den Zugriff auf den Standardschlüsselbund zuzulassen.
    • keychainPassword: Die KEYCHAIN_PWD Variable.
    • deleteCert: false, um das Zertifikat zwischen Builds beizubehalten.
    - task: InstallAppleCertificate@2
      inputs:
        certSecureFile: '<secure-file.p12>'
        certPwd: '$(P12password)'
        signingIdentity: <full-signing-identity>
        keychain: default
        keychainPassword: `$(KEYCHAIN_PWD)
        deleteCert: false
    
  • Fügen Sie die InstallAppleProvisioningProfile@1 Aufgabe hinzu. Im Code:

    • Legen Sie provProfileSecureFile den Namen der Bereitstellungsprofildatei fest.
    • Legen Sie diese Einstellung removeProfile fest false , sodass das Profil zwischen Builds beibehalten wird.
    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: '<secure-file.mobileprovision>'
          removeProfile: false
    

Der macOS-Build-Agent kann ihre App jetzt sicher signieren und für alle Builds ohne weiteres Zertifikat oder Profilverwaltung bereitstellen.

Verweisen Auf die sicheren Dateien in der Xcode- oder Xamarin.iOS-Buildaufgabe

Um das sichere Zertifikat und das Profil in Ihren Pipelines zu verwenden, konfigurieren Sie die folgenden Einstellungen in Ihren Xcode- oder Xamarin.iOS-Buildaufgaben.

Die Verweise auf sichere Dateien in den Buildaufgaben verwenden Variablen für die signingIdentity und die provisioningProfileUuid. Diese Variablen werden automatisch durch die Aufgaben "Apple-Zertifikat installieren" und "Apple Provisioning Profile installieren" für das ausgewählte Zertifikat und das von Ihnen ausgewählte Bereitstellungsprofil festgelegt.

Für Xcode:

- task: Xcode@5
  inputs:
    signingOption: 'manual'
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

Für Xamarin.iOS:

- task: XamariniOS@2
    inputs:
      solutionFile: '**/*.iOS.csproj'
      signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
      signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'

Der Pipelinebuild-Agent signiert und stellt Ihre App jetzt ohne weiteres Zertifikat oder Profilverwaltung auf dem Buildcomputer selbst bereit.

Weitere Informationen: