Udostępnij za pośrednictwem


Konfiguracja podpisywania kodu systemu Android w centrum aplikacji

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Chociaż możesz nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Porada

W przypadku użytkowników platformy Xamarin.Android proces jest nieco inny. Aby uzyskać szczegółowe informacje, zobacz nasz przewodnik podpisywania kodu platformy Xamarin.Android .

Podpisywanie aplikacji jest wymagane do uruchamiania aplikacji na rzeczywistych urządzeniach podczas procesu programowania lub rozpowszechniania jej za pośrednictwem programu beta lub w Sklepie Play. Bez podpisywania kodu aplikacja może działać tylko w emulatorze.

Gdy usługa App Center skompiluje aplikację systemu Android z typem kompilacji debugowania, magazyn kluczy dla dewelopera nie jest wymagany, ale można go przekazać. Te kompilacje zostaną automatycznie podpisane przy użyciu klucza debugowania. W przypadku kompilacji wydania, która zostanie wdrożona, przekaż magazyn kluczy do centrum aplikacji.

Generowanie magazynu kluczy

Jeśli nie masz obecnie magazynu kluczy, możesz wygenerować go w programie Android Studio. Instrukcje dotyczące generowania magazynu kluczy umożliwiającego podpisywanie zestawów API można znaleźć w oficjalnym podręczniku użytkownika programu Android Studio.

Konfigurowanie podpisywania kodu

Usługa App Center obsługuje trzy różne sposoby konfigurowania podpisywania kodu dla aplikacji systemu Android. Dla wszystkich trzech metod należy najpierw przejść do konfiguracji kompilacji i włączyć podpisywanie kodu:

  1. Przejdź do aplikacji w Centrum aplikacji.
  2. Przejdź do pozycji Kompilacja.
  3. Przejdź do gałęzi, którą chcesz skonfigurować, wybierając ją z listy.
  4. Użyj menu "Ustawienia" w prawym górnym rogu lub wybierz pozycję Konfiguruj , jeśli gałąź nie została jeszcze skonfigurowana do kompilacji.
  5. Włącz kompilacje podpisywania.
  6. Wybierz polecenie Zapisz.

Następnie, w zależności od scenariusza, należy użyć najbardziej odpowiednich trzech opcji w poniższych sekcjach. Pierwsza opcja obejmuje zaewidencjonowanie poświadczeń w repozytorium, podczas gdy pozostałe dwa używają Centrum aplikacji do obsługi poświadczeń.

Od systemu Android 11 obowiązkowe jest użycie osoby podpisającego APK (jeśli używasz interfejsu API poziomu 30), ponieważ ustawi kilka dodatkowych schematów "APK Signature Scheme v2 now required". App Center teraz (od 17 grudnia 2020 r.) podpisuje aplikacje dla systemu Android wewnętrznie przy użyciu narzędzia podpisywania APK, zamiast logowania JAR, który był wcześniej używany. W ramach funkcji włączania logowania APK w Centrum aplikacji zaimplementowano zadanie podpisywania systemu Android w wersji 3, a wymagania dotyczące nowego zadania podpisywania miały na celu zmianę sposobu zapisywania pliku magazynu kluczy — w celu przechowywania pliku magazynu kluczy w bezpiecznym pliku AzDO (zadanie kompilacji i wydania podpisywania systemu Android — Azure Pipelines | Microsoft Docs).

Ostrzeżenie

Wszystkie konfiguracje kompilacji, które miały pliki magazynu kluczy przekazane przed 17 grudnia 2020 r., nadal używają metody podpisywania schematu podpisu APK w wersji 2 (jarsigner). Aby użyć przepływu podpisywania schematu podpisu APK w wersji 3, użytkownicy muszą po prostu ponownie przekazać swoje pliki magazynu kluczy i zapisać konfigurację gałęzi.

Uwaga

Użycie wtyczki Android Gradle w wersji 4.1.x nie jest w pełni obsługiwane. Aby użyć tej wersji, należy dodać następne ustawienie opcji w gradle.properties pliku:

 android.useNewApkCreator = false

A. Przechowywanie wszystkich elementów w konfiguracji narzędzia Gradle

Szczegóły logowania można określić w build.gradle pliku (na poziomie aplikacji). Szczegóły podpisywania wraz ze wszystkimi poświadczeniami i informacjami o magazynie kluczy będą widoczne w repozytorium. Najpierw dodaj wszystkie elementy potrzebne do kodu i zaewidencjonuj je w repozytorium. Następnie w konfiguracji kompilacji w usłudze App Center włącz opcję Moje ustawienia narzędzia Gradle są całkowicie ustawione do automatycznego obsługi podpisywania.

B. Przekazywanie wszystkich elementów do centrum aplikacji

Magazyn kluczy można przekazać i skonfigurować poświadczenia podpisywania za pośrednictwem Centrum aplikacji. W takim przypadku usługa App Center najpierw skompiluje aplikację dla systemu Android, a następnie uruchomi krok podpisywania po pomyślnej kompilacji.

Uwaga

Kompilację można podpisać tylko raz. Upewnij się, że nie masz konfliktów z konfiguracją podpisywania w konfiguracji narzędzia Gradle dla wybranego wariantu kompilacji. Jeśli istnieją ustawienia podpisywania zarówno w usłudze App Center, jak i w pliku Gradle, kompilacja może zostać podpisana dwukrotnie, co prowadzi do konfliktów.

Skonfiguruj konfigurację kompilacji w usłudze App Center w następujący sposób:

  1. Ustawienie Wyłącz moje ustawienia narzędzia Gradle jest całkowicie ustawione w celu automatycznego obsługi podpisywania.
  2. Przekaż plik magazynu kluczy do upuszczania pliku przekazywania pliku magazynu kluczy . Możesz przeciągnąć plik do pola lub kliknąć go i wyszukać plik. Pliki magazynu kluczy mają rozszerzenie .keystore lub .jks.
  3. Wprowadź hasło magazynu kluczy, alias klucza i hasło klucza w odpowiednich polach. Te wartości są takie same, które w przeciwnym razie należy wprowadzić w programie Android Studio podczas podpisywania kompilacji.

C. Przechowywanie szczegółów podpisywania w repozytorium za pomocą zmiennych środowiskowych

Użyj tej metody, jeśli repozytorium zawiera już magazyn kluczy, ale nie chcesz przechowywać tam poświadczeń. W czasie kompilacji poświadczenia zostaną podane jako właściwości systemu do kompilacji narzędzia Gradle. Zapoznaj się z poniższym przykładem kodu, aby dowiedzieć się, jak z nich korzystać:

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

W powyższym kodzie zabezpieczanie wartości za właściwościami systemu wstrzykniętymi do kompilacji zapewnia bezpieczeństwo poświadczeń podpisywania — wartości są szyfrowane i dostępne tylko dla agentów kompilacji w czasie kompilacji. Wartości można podać za pomocą Centrum aplikacji. Możesz również zakodować dowolne wartości i zaewidencjonować je w repozytorium. Aby zabezpieczyć wartości za pomocą centrum aplikacji:

  1. Przejdź do konfiguracji kompilacji.
  2. Upewnij się, że pole wyboru My Gradle settings (Moje ustawienia narzędzia Gradle) jest całkowicie ustawione, aby automatycznie obsługiwać podpisywanie , które nie jest zaznaczone.
  3. Wprowadź hasło magazynu kluczy, alias klucza i hasło klucza w odpowiednich polach. Te wartości są takie same, które w przeciwnym razie należy wprowadzić w programie Android Studio podczas podpisywania kompilacji.

Jeśli używasz smaków produktów, może być konieczne dostosowanie powyższego kodu, aby wszystkie konfiguracje wydania używały prawidłowej konfiguracji podpisywania.

Uwaga

Jeśli używasz signingConfig opcji wewnątrz buildTypes sekcji w build.gradle pliku (na poziomie aplikacji), możesz napotkać błędy podpisywania kodu podczas kompilacji centrum aplikacji. Jest to szczególnie istotne w przypadku aplikacji korzystających z React Native dla systemu Android w wersji 0.60.x i nowszych:

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

Aby rozwiązać ten problem, należy wypchnąć odpowiedni magazyn kluczy używany do podpisywania do repozytorium i włączyć ustawienia Moje narzędzia Gradle są całkowicie ustawione w celu obsługi automatycznego podpisywania w konfiguracji kompilacji w portalu Centrum aplikacji.

W przypadku przekazania magazynu kluczy do konfiguracji kompilacji w portalu Centrum aplikacji należy wziąć pod uwagę, że takie podejście będzie wymagało usunięcia signingConfig opcji z buildTypes sekcji build.gradle pliku (na poziomie aplikacji), jeśli nie zaktualizowano go ze stanu domyślnego szablonu projektu React Native.