استفاده از «بررسی برنامه» با ارائه‌دهنده اشکال‌زدایی در Android

پس‌از اینکه 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:35.0.2"))
    
        // 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:20.0.0")
    }

  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، به برگه امنیت > بررسی برنامه > برنامه‌ها بروید.

    2. برنامه‌تان را پیدا کنید، روی منوِ سه‌نقطه‌ای سرریز () کلیک کنید، و سپس مدیریت کردن کدهای اشکال‌زدایی را انتخاب کنید.

    3. دستورالعمل‌های روی صفحه را برای ثبت کردن کد اشکال‌زدایی دنبال کنید.

    نماگرفت از گزینه منو «مدیریت کردن کدهای اشکال‌زدایی» در کنسول Firebase

پس‌از اینکه کد را با App Check ثبت کردید، سرویس‌های پسین شما آن را به‌عنوان کد معتبر می‌پذیرند.

این کد امکان دسترسی به سرویس‌های پسین شما را بدون دستگاه معتبر فراهم می‌کند، بنابراین بسیار مهم است که آن را خصوصی نگه دارید. آن را به مخزن عمومی ارسال نکنید یا در نسخه‌های تولیدی برنامه‌تان قرار ندهید. اگر یک توکن ثبت‌شده به خطر افتاد، فوراً آن را بااستفاده از مدیریت توکن‌های اشکال‌زدایی در کنسول Firebase حذف کنید.

استفاده از ارائه‌دهنده اشکال‌زدایی برای آزمایش واحد در محیط CI

نحوه استفاده از ارائه‌کننده اشکال‌زدایی برای آزمایش واحد در محیط ادغام مداوم (CI) در زیر آمده است:

  1. در کنسول Firebase، یک کد اشکال‌زدایی ایجاد کنید:

    1. در کنسول Firebase، به برگه امنیت > بررسی برنامه > برنامه‌ها بروید.

    2. برنامه‌تان را پیدا کنید، روی منوِ سه‌نقطه‌ای سرریز () کلیک کنید، و سپس مدیریت کردن کدهای اشکال‌زدایی را انتخاب کنید.

    3. دستورالعمل‌های روی صفحه را برای ایجاد کردن یک کد اشکال‌زدایی جدید دنبال کنید.

    این کد امکان دسترسی به سرویس‌های پسین شما را بدون دستگاه معتبر فراهم می‌کند، بنابراین بسیار مهم است که آن را خصوصی نگه دارید. آن را به مخزن عمومی ارسال نکنید یا در نسخه‌های تولیدی برنامه‌تان قرار ندهید. اگر یک توکن ثبت‌شده به خطر افتاد، فوراً آن را بااستفاده از مدیریت توکن‌های اشکال‌زدایی در کنسول Firebase حذف کنید.

    نماگرفت گزینه منو «مدیریت کردن کدهای اشکال‌زدایی»

  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)، وابستگی کتابخانه App Check را برای Android اضافه کنید. توصیه می‌کنیم از Firebase Android BoM برای کنترل نسخه‌بندی کتابخانه استفاده کنید.

    Kotlin

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

    Java

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

  5. موارد زیر را به پیکربندی تنوع ساخت CI خود اضافه کنید:

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

وقتی برنامه‌تان در محیط CI اجرا می‌شود، سرویس‌های پسای شما ژتونی را که ارسال می‌کند به‌عنوان ژتون معتبر می‌پذیرد.