Jeśli po zarejestrowaniu aplikacji do sprawdzania aplikacji chcesz uruchomić aplikację w środowisku, którego Sprawdzanie aplikacji normalnie nie klasyfikuje jako prawidłowe, takim jak emulator podczas tworzenia lub ze środowiska ciągłej integracji (CI), możesz utwórz kompilację debugowania swojej aplikacji, która używa dostawcy debugowania sprawdzania aplikacji zamiast rzeczywistego dostawcy poświadczania.
Użyj dostawcy debugowania w emulatorze
Aby użyć dostawcy debugowania podczas interaktywnego uruchamiania aplikacji w emulatorze (na przykład podczas programowania), wykonaj następujące czynności:
W swoim module (app-level) pliku Gradle (zazwyczaj
app/build.gradle
) zadeklaruj zależność dla biblioteki App Check Android:Java
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0' }
Kotlin+KTX
dependencies { implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0' }
W kompilacji debugowania skonfiguruj funkcję App Check, aby korzystała z fabryki dostawcy debugowania:
Java
FirebaseApp.initializeApp(/*context=*/ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance());
Kotlin+KTX
FirebaseApp.initializeApp(/*context=*/this) val firebaseAppCheck = FirebaseAppCheck.getInstance() firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() )
Uruchom aplikację i nawiąż połączenie z usługą backendu Firebase. Lokalny token debugowania zostanie zarejestrowany, gdy SDK spróbuje wysłać żądanie do zaplecza. Na przykład:
D DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
W sekcji Sprawdzanie aplikacji w konsoli Firebase wybierz Zarządzaj tokenami debugowania z rozszerzonego menu aplikacji. Następnie zarejestruj token debugowania, który zalogowałeś w poprzednim kroku.
Gdy zarejestrujesz token, usługi backendu Firebase zaakceptują go jako prawidłowy.
Ponieważ token ten umożliwia dostęp do zasobów Firebase bez ważnego urządzenia, ważne jest, aby zachować jego prywatność. Nie umieszczaj go w publicznym repozytorium, a jeśli zarejestrowany token zostanie kiedykolwiek naruszony, natychmiast odwołaj go w konsoli Firebase.
Użyj dostawcy debugowania do testów jednostkowych w środowisku CI
Aby użyć dostawcy debugowania do testowania jednostkowego w środowisku ciągłej integracji (CI), wykonaj następujące czynności:
W sekcji Sprawdzanie aplikacji w konsoli Firebase wybierz Zarządzaj tokenami debugowania z rozszerzonego menu aplikacji. Następnie utwórz nowy token debugowania. W następnym kroku będziesz potrzebować tokena.
Ponieważ token ten umożliwia dostęp do zasobów Firebase bez ważnego urządzenia, ważne jest, aby zachować jego prywatność. Nie umieszczaj go w publicznym repozytorium, a jeśli zarejestrowany token zostanie kiedykolwiek naruszony, natychmiast odwołaj go w konsoli Firebase.
Dodaj właśnie utworzony token debugowania do bezpiecznego magazynu kluczy systemu CI (na przykład zaszyfrowane klucze tajne GitHub Actions lub zaszyfrowane zmienne Travis CI ).
W razie potrzeby skonfiguruj system CI tak, aby token debugowania był dostępny w środowisku CI jako zmienna środowiskowa. Nazwij zmienną
APP_CHECK_DEBUG_TOKEN_FROM_CI
.W twoim module (na poziomie aplikacji) plik Gradle (zwykle
app/build.gradle
):Zadeklaruj zależność testową dla biblioteki debugowania App Check Android:
Java
dependencies { androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.0' }
Kotlin+KTX
dependencies { androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.0' }
Dodaj następujące elementy do konfiguracji wariantu kompilacji CI:
testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
W klasach testowych użyj
DebugAppCheckTestHelper
, aby otoczyć dowolny kod, który wymaga tokenu App Check:Java
@RunWith(AndroidJunit4.class) public class YourTests { private final DebugAppCheckTestHelper debugAppCheckTestHelper = DebugAppCheckTestHelper.fromInstrumentationArgs(); @Test public void testWithDefaultApp() { debugAppCheckTestHelper.withDebugProvider(() -> { // Test code that requires a debug AppCheckToken. }); } @Test public void testWithNonDefaultApp() { debugAppCheckTestHelper.withDebugProvider( FirebaseApp.getInstance("nonDefaultApp"), () -> { // Test code that requires a debug AppCheckToken. }); } }
Kotlin+KTX
@RunWith(AndroidJunit4::class) class MyTests { private val debugAppCheckTestHelper = DebugAppCheckTestHelper.fromInstrumentationArgs() @Test fun testWithDefaultApp() { debugAppCheckTestHelper.withDebugProvider { // Test code that requires a debug AppCheckToken. } } @Test fun testWithNonDefaultApp() { debugAppCheckTestHelper.withDebugProvider( FirebaseApp.getInstance("nonDefaultApp") ) { // Test code that requires a debug AppCheckToken. } } }
Gdy Twoja aplikacja działa w środowisku CI, usługi backendu Firebase zaakceptują wysyłany przez nią token jako prawidłowy.