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

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

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

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

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

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

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

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

    إذا اخترت عدم استخدام قائمة العناصر في Firebase، يجب تحديد كل إصدار من مكتبة 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 (الإصدار 32.5.0 من Firebase)، أصبح بإمكان مطوّري لغة Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمعرفة التفاصيل، يُرجى الاطّلاع على الأسئلة الشائعة حول هذه المبادرة).

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

    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. سيتم تسجيل رمز مميّز محلي لتصحيح الأخطاء عندما تحاول حزمة تطوير البرامج (SDK) إرسال طلب إلى الواجهة الخلفية. على سبيل المثال:

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

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

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

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

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

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

  1. في قسم فحص التطبيق ضمن وحدة تحكُّم Firebase، اختَر إدارة الرموز المميّزة لتصحيح الأخطاء من القائمة الكاملة لتطبيقك. ثم أنشئ رمزًا مميزًا جديدًا لتصحيح الأخطاء. ستحتاج إلى الرمز المميز في الخطوة التالية.

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

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

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

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

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

    Kotlin+KTX

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

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

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

    إذا اخترت عدم استخدام قائمة العناصر في Firebase، يجب تحديد كل إصدار من مكتبة 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 (الإصدار 32.5.0 من Firebase)، أصبح بإمكان مطوّري لغة Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمعرفة التفاصيل، يُرجى الاطّلاع على الأسئلة الشائعة حول هذه المبادرة).

    Java

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

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

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

    إذا اخترت عدم استخدام قائمة العناصر في Firebase، يجب تحديد كل إصدار من مكتبة 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 (الإصدار 32.5.0 من Firebase)، أصبح بإمكان مطوّري لغة Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمعرفة التفاصيل، يُرجى الاطّلاع على الأسئلة الشائعة حول هذه المبادرة).

  5. أضِف ما يلي إلى إعدادات صيغة إصدار CI:

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

    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 الخلفية الرمز المميّز الذي ترسله على أنّه صالح.