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. Mimo że można 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.

Napiwek

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 obecnie nie masz 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 najpierw należy przejść do konfiguracji kompilacji i włączyć podpisywanie kodu:

  1. Przejdź do aplikacji w Centrum aplikacji.
  2. Przejdź do obszaru 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 pozycję Zapisz.

Następnie, w zależności od scenariusza, użyj najbardziej odpowiednich trzech opcji w poniższych sekcjach. Pierwsza opcja polega na zaewidencjonowaniu 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 korzystanie z osoby podpisającego APK (jeśli używasz poziomu 30 interfejsu API), 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 polegały na zmianie 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 sygnatur APK w wersji 3, użytkownicy muszą po prostu ponownie przekazać 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

Odp. 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 obsługi podpisywania automatycznie.

B. Przekazywanie wszystkiego do Centrum aplikacji

Magazyn kluczy można przekazać i skonfigurować poświadczenia podpisywania za pośrednictwem Centrum aplikacji. W takim przypadku centrum aplikacji najpierw skompiluje aplikację 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 i prowadzi to 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 tam przechowywać poświadczeń. W czasie kompilacji poświadczenia zostaną podane jako właściwości systemu 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 wstrzykiwanymi 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 pośrednictwem 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 kodu powyżej, aby wszystkie konfiguracje wersji 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 oprogramowania React Native dla systemu Android w wersji 0.60.x i nowszej:

 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 tak, aby obsługiwały automatyczne podpisywanie 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 z domyślnego stanu szablonu projektu React Native.