استخدام ميزة "فحص التطبيقات" مع موفِّر تصحيح الأخطاء على نظام Android

بعد تسجيل تطبيقك في App Check، إذا أردت تشغيل تطبيقك في بيئة لا تصنّفها App Check عادةً على أنّها صالحة، مثل المحاكي أثناء التطوير أو من بيئة التكامل المستمر (CI)، يمكنك إنشاء إصدار تصحيح أخطاء من تطبيقك يستخدم مزوّد تصحيح أخطاء App Check بدلاً من مزوّد إثبات الهوية الحقيقي.

استخدام مقدّم تصحيح الأخطاء في المحاكي

لاستخدام موفِّر تصحيح الأخطاء أثناء تشغيل تطبيقك في المحاكي بشكل تفاعلي (أثناء التطوير مثلاً)، اتّبِع الخطوات التالية:

  1. في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة App Check لنظام التشغيل Android. ننصحك باستخدام الرمز Firebase Android BoM للتحكّم في إصدارات المكتبة.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
    
        // Add the dependencies for the App Check libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }
    

    باستخدام Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase لنظام التشغيل Android.

    (بديل)  إضافة تبعيات مكتبة Firebase بدون استخدام BoM

    إذا اخترت عدم استخدام Firebase BoM، يجب تحديد كل إصدار من مكتبة Firebase في سطر التبعية الخاص به.

    يُرجى العلم أنّه في حال استخدام مكتبات Firebase متعدّدة في تطبيقك، ننصحك بشدة باستخدام BoM لإدارة إصدارات المكتبة، ما يضمن توافق جميع الإصدارات.

    dependencies {
        // Add the dependencies for the App Check libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:18.0.0")
    }
    
    هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ اعتبارًا من تشرين الأول (أكتوبر) 2023 (Firebase BoM 32.5.0)، يمكن لمطوّري Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (للاطّلاع على التفاصيل، راجِع الأسئلة الشائعة حول هذه المبادرة).

  2. في إصدار تصحيح الأخطاء، اضبط App Check لاستخدام موفِّر تصحيح الأخطاء المصنع:

    Kotlin+KTX

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. افتح التطبيق وأدخِل طلبًا إلى خدمة خلفية Firebase. سيتم تسجيل رمز مفتاح تمييز debugging محلي عند محاولة حزمة SDK إرسال طلب إلى الخلفي. على سبيل المثال:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. في قسم App Check من وحدة تحكّم Firebase، اختَر إدارة الرموز المميّزة لتصحيح الأخطاء من قائمةoverflow (العناصر الإضافية) في تطبيقك. بعد ذلك، سجِّل الرمز المميّز لتصحيح الأخطاء الذي سجّلت الدخول باستخدامه في الخطوة السابقة.

    لقطة شاشة لعنصر قائمة &quot;إدارة الرموز المميّزة لتصحيح الأخطاء&quot;

بعد تسجيل الرمز المميّز، ستقبل خدمات الخلفية في Firebase هذا الرمز على أنّه صالح.

بما أنّ هذا الرمز المميّز يسمح بالوصول إلى موارد Firebase بدون استخدام جهاز صالح، من المهم الحفاظ على سريته. لا تُرسِله إلى مستودع علني، وإذا تم اختراق رمز مميّز مسجَّل، عليك إبطاله على الفور في وحدة تحكّم Firebase.

استخدام موفِّر تصحيح الأخطاء لاختبار الوحدة في بيئة التطوير المتكامل

لاستخدام موفِّر تصحيح الأخطاء لاختبار الوحدة في بيئة التكامل المستمر (CI)، عليك اتّباع الخطوات التالية:

  1. في قسم App Check من وحدة تحكّم Firebase، اختَر إدارة الرموز المميّزة لتصحيح الأخطاء من قائمةoverflow (العناصر الإضافية) في تطبيقك. بعد ذلك، أنشئ رمزًا مميّزًا جديدًا لتصحيح الأخطاء. ستحتاج إلى الرمز المميّز في الخطوة التالية.

    بما أنّ هذا الرمز المميّز يسمح بالوصول إلى موارد Firebase بدون جهاز صالح، من المهم الحفاظ على سريته. لا تُرسِله إلى مستودع علني، وإذا تم اختراق رمز مميّز مسجَّل، عليك إبطاله على الفور في وحدة تحكّم Firebase.

    لقطة شاشة لعنصر قائمة &quot;إدارة الرموز المميّزة لتصحيح الأخطاء&quot;

  2. أضِف رمز التفعيل الخاص بتصحيح الأخطاء الذي أنشأته للتو إلى متجر المفاتيح الآمن لنظام التطوير المتكامل (CI) (على سبيل المثال، السمات المشفَّرة في GitHub Actions أو المتغيّرات المشفَّرة في Travis CI).

  3. إذا لزم الأمر، اضبط نظام التطوير المتكامل (CI) لإتاحة رمز التفعيل لتصحيح الأخطاء داخل بيئة التطوير المتكامل كمتغيّر بيئة. أدخِل اسمًا للمتغيّر، مثل APP_CHECK_DEBUG_TOKEN_FROM_CI.

  4. في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة App Check لنظام التشغيل Android. ننصحك باستخدام الرمز Firebase Android BoM للتحكّم في إصدارات المكتبة.

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }
    

    باستخدام Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase لنظام التشغيل Android.

    (بديل)  إضافة تبعيات مكتبة Firebase بدون استخدام BoM

    إذا اخترت عدم استخدام Firebase BoM، يجب تحديد كل إصدار من مكتبة Firebase في سطر التبعية الخاص به.

    يُرجى العلم أنّه في حال استخدام مكتبات Firebase متعدّدة في تطبيقك، ننصحك بشدة باستخدام BoM لإدارة إصدارات المكتبة، ما يضمن توافق جميع الإصدارات.

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:18.0.0")
    }
    
    هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ اعتبارًا من تشرين الأول (أكتوبر) 2023 (Firebase BoM 32.5.0)، يمكن لمطوّري Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (للاطّلاع على التفاصيل، راجِع الأسئلة الشائعة حول هذه المبادرة).

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }
    

    باستخدام Firebase Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Firebase لنظام التشغيل Android.

    (بديل)  إضافة تبعيات مكتبة Firebase بدون استخدام BoM

    إذا اخترت عدم استخدام Firebase BoM، يجب تحديد كل إصدار من مكتبة Firebase في سطر التبعية الخاص به.

    يُرجى العلم أنّه في حال استخدام مكتبات Firebase متعدّدة في تطبيقك، ننصحك بشدة باستخدام BoM لإدارة إصدارات المكتبة، ما يضمن توافق جميع الإصدارات.

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:18.0.0")
    }
    
    هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ اعتبارًا من تشرين الأول (أكتوبر) 2023 (Firebase BoM 32.5.0)، يمكن لمطوّري Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (للاطّلاع على التفاصيل، راجِع الأسئلة الشائعة حول هذه المبادرة).

  5. أضِف ما يلي إلى إعدادات الصيغة في عملية الإنشاء في عملية التكامل المستمر:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. في فئات الاختبار، استخدِم DebugAppCheckTestHelper لتغليف أي رمز يحتاج إلى رمز App Check المميّز:

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

عند تشغيل تطبيقك في بيئة CI، ستوافق خدمات الخلفية في Firebase على الرمز المميّز الذي يرسله كرمز صالح.