Catch up on highlights from Firebase at Google I/O 2023. Learn more

Użyj sprawdzania aplikacji u dostawcy debugowania w systemie Android

Jeśli po zarejestrowaniu aplikacji do sprawdzania aplikacji chcesz uruchomić aplikację w środowisku, którego kontrola aplikacji normalnie nie sklasyfikowałaby jako ważne, na przykład emulator podczas opracowywania 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 prawdziwego dostawcy zaświadczeń.

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:

  1. W pliku Gradle modułu (na poziomie aplikacji) (zazwyczaj app/build.gradle ) zadeklaruj zależność dla biblioteki App Check Android:

    Kotlin+KTX

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:17.0.1'
    }
    

    Java

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:17.0.1'
    }
    
  2. W kompilacji do debugowania skonfiguruj Sprawdzanie aplikacji tak, aby korzystała z fabryki dostawcy debugowania:

    Kotlin+KTX

    Firebase.initialize(context = this)
    val firebaseAppCheck = FirebaseAppCheck.getInstance()
    firebaseAppCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Uruchom aplikację i wywołaj połączenie z usługą zaplecza Firebase. Lokalny token debugowania zostanie zarejestrowany, gdy zestaw 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
  4. W sekcji Sprawdzanie aplikacji w konsoli Firebase wybierz Zarządzaj tokenami debugowania z przepełnionego menu aplikacji. Następnie zarejestruj token debugowania, który zarejestrowałeś w poprzednim kroku.

    Zrzut ekranu przedstawiający element menu Zarządzaj tokenami debugowania

Po zarejestrowaniu tokena usługi zaplecza Firebase zaakceptują go jako ważny.

Ponieważ ten token umożliwia dostęp do zasobów Firebase bez ważnego urządzenia, ważne jest, aby zachować go jako prywatny. Nie przesyłaj go do publicznego 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 testów jednostkowych w środowisku ciągłej integracji (CI), wykonaj następujące czynności:

  1. W sekcji Sprawdzanie aplikacji w konsoli Firebase wybierz Zarządzaj tokenami debugowania z przepełnionego menu aplikacji. Następnie utwórz nowy token debugowania. W następnym kroku będziesz potrzebować tokena.

    Ponieważ ten token umożliwia dostęp do zasobów Firebase bez ważnego urządzenia, ważne jest, aby zachować go jako prywatny. Nie przesyłaj go do publicznego repozytorium, a jeśli zarejestrowany token zostanie kiedykolwiek naruszony, natychmiast odwołaj go w konsoli Firebase.

    Zrzut ekranu przedstawiający element menu Zarządzaj tokenami debugowania

  2. Dodaj właśnie utworzony token debugowania do bezpiecznego magazynu kluczy systemu CI (na przykład zaszyfrowane tajne wpisy GitHub Actions lub zaszyfrowane zmienne Travis CI).

  3. W razie potrzeby skonfiguruj swój system CI, aby token debugowania był dostępny w środowisku CI jako zmienna środowiskowa. Nazwij zmienną na przykład APP_CHECK_DEBUG_TOKEN_FROM_CI .

  4. W twoim module (na poziomie aplikacji) plik Gradle (zwykle app/build.gradle ):

    1. Zadeklaruj zależność testową dla biblioteki debugowania App Check Android:

      Kotlin+KTX

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:17.0.1'
      }
      

      Java

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:17.0.1'
      }
      
    2. Dodaj następujące elementy do konfiguracji wariantu kompilacji CI:

      testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
      
  5. W swoich klasach testowych użyj DebugAppCheckTestHelper , aby opakować dowolny kod, który wymaga tokena sprawdzania aplikacji:

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

    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.
                    });
        }
    }
    

Gdy Twoja aplikacja działa w środowisku CI, usługi zaplecza Firebase zaakceptują wysłany token jako ważny.