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

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

Firebase

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

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

  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:34.18.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:19.4.1")
    }

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

    Kotlin

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

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. احصل على الرمز المميّز لإصلاح الأخطاء:

    1. شغِّل تطبيقك في المحاكي أو على جهاز الاختبار.

    2. ابحث عن الرمز المميّز لإصلاح الأخطاء App Check في سجلّاتك. على سبيل المثال:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. انسخ الرمز المميّز (على سبيل المثال، 123a4567-b89c-12d3-e456-789012345678).

  4. سجِّل الرمز المميّز لإصلاح الأخطاء في App Check:

    1. في Firebase Console، انتقِل إلى علامة التبويب الأمان > فحص التطبيقات > التطبيقات.

    2. ابحث عن تطبيقك، وانقر على القائمة الكاملة ()، ثم على إدارة الرموز المميّزة لإصلاح الأخطاء.

    3. اتّبِع التعليمات الظاهرة على الشاشة لتسجيل الرمز المميّز لإصلاح الأخطاء.

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

بعد تسجيل الرمز المميّز في App Check، ستقبله خدماتك في الخلفية كرمز مميّز صالح.

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

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

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

  1. في Firebase Console، أنشئ رمزًا مميّزًا لإصلاح الأخطاء:

    1. في Firebase Console، انتقِل إلى علامة التبويب الأمان > فحص التطبيقات > التطبيقات.

    2. ابحث عن تطبيقك، وانقر على القائمة الكاملة ()، ثم على إدارة الرموز المميّزة لإصلاح الأخطاء.

    3. اتّبِع التعليمات الظاهرة على الشاشة لإنشاء رمز مميّز جديد لإصلاح الأخطاء.

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

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

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

  3. إذا لزم الأمر، اضبط نظام التكامل المستمر لجعل الرمز المميّز لإصلاح الأخطاء متاحًا في بيئة التكامل المستمر كمتغيّر بيئة. امنح المتغيّر اسمًا مثل 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

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.18.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:19.4.1")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.18.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:19.4.1")
    }

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

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

    Kotlin

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

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