התאמה אישית של מרכז הבטיחות

הפעלה או השבתה של מרכז הבטיחות

כדי להפעיל או להשבית את מרכז הבטיחות, משתמשים בשדה הבווליאני config_enableSafetyCenter שאפשר להציג כשכבה-על בקובץ frameworks/base/core/res/res/values/config.xml.

רוב המכשירים, כמו טלפונים וטאבלטים, תומכים במרכז הבטיחות כברירת מחדל. בחלק מגורמי הצורה, מרכז הבטיחות מושבת כברירת מחדל, למשל ב-Auto, ב-TV וב-Wear.

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- ... -->
   <!-- Determines whether SafetyCenter feature is enabled. -->
    <bool name="config_enableSafetyCenter">true</bool>
    <!-- ... -->
</resources>

כדי לתמוך במרכז הבטיחות, צריך להגדיר את config_enableSafetyCenter כ-true. אם אתם לא רוצים לתמוך במרכז הבטיחות, צריך להגדיר את הערך הזה כ-false כדי להשבית אותו.

כשמרכז הבטיחות מושבת, כל ניסיון להפנות לדף 'אבטחה ופרטיות' יגרום לפתיחת אפליקציית ההגדרות במקום זאת. כל ניסיון לאינטראקציה עם ממשקי ה-API יתעלם או יחזיר ערך ברירת מחדל. גם המשבצת של ההגדרות המהירות והרשומה בהגדרות יהיו גלויות או מוסתרות, בהתאם לסטטוס ההפעלה של מרכז הבטיחות.

הדגל DeviceConfig

בנוסף להפעלה של מרכז הבטיחות באמצעות ההגדרה config_enableSafetyCenter, אפשר להשתמש בדגל DeviceConfig (safety_center_is_enabled) כדי להפעיל או להשבית את מרכז הבטיחות מרחוק.

ב-Android 14 ואילך, אין צורך לבצע פעולה נוספת כי הדגל הזה מוגדר כברירת מחדל כ-true.

ב-Android 13, מרכז הבטיחות מושבת כברירת מחדל בצד השרת ומופעל באמצעות רשימת ההיתרים באמצעות הדגל הזה. שולחים את טביעות האצבע של המכשיר ומקשרים עם מנהל החשבון הטכני כדי להיכלל ברשימת ההיתרים. הערה: צריך להוסיף לרשימת ההיתרים גרסה M-2022-11 ואילך של המקור הראשי. לפיתוח ובדיקות מקומיים, אפשר להפעיל או להשבית את הדגל באופן מקומי (עד להפעלה מחדש) באמצעות הפקודה adb. לדוגמה, כדי להפעיל את הדגל:

adb root
adb shell device_config set_sync_disabled_for_tests until_reboot
adb shell device_config put privacy safety_center_is_enabled true

כדי לוודא ש-Safety Center מופעל:

adb root
adb shell cmd safety_center enabled

הפלט יציג אם מרכז הבטיחות מופעל כראוי במכשיר.

עדכון קובץ התצורה

משתמשים בקובץ התצורה safety_center_config.xml כדי לשנות את התוכן של המסך של מרכז הבטיחות. אפשר להוסיף שכבה לקובץ הזה, בתנאי שעומדים בדרישות ההתאמה האישית.

שכבת-על של קובץ התצורה

כדי להוסיף שכבת-על לקובץ safety_center_config.xml, אפשר לעיין במאמר שינוי הערך של משאבי האפליקציה בזמן הריצה כדי לקבל מידע על שינוי שכבות-על של משאבים בסביבת זמן הריצה (RRO).

ב-Android 14, חשוב להוסיף שכבת-על לקובץ res/raw-v34/safety_center_config.xml ולא לקובץ res/raw/safety_center_config.xml, כי לקודם יש עדיפות (הכלל הזה חל גם על קבצים אחרים ברמת ההיקף v34, למשל res/values-v34/strings.xml). חבילת השכבה העליונה צריכה לכלול גרסה מינימלית של SDK נמוכה מ-34, אחרת יכול להיות שהמסנן v34 יוסר במהלך האופטימיזציה. כמו כן, חשוב להשתמש בשכבת-על סטטית, כי הערך הזה נטען בסביבות זמן האתחול.

במכשירי Android Open Source Project‏ (AOSP), מטרגטים את החבילה com.android.safetycenter.resources. אין הגדרה של שכבת-על לטרגוט. אפשר להציג שכבות של כל המשאבים ללא הגבלה על התוכן.

במכשירי GMS שהוגדרו לקבלת עדכוני Mainline, מטרגטים את החבילה com.google.android.safetycenter.resources. מטרגטים את ההגדרה SafetyCenterConfig. כדי להשתמש בהגדרה הזו, חבילת שכבת-העל צריכה להיות במחיצה product, ‏ system או vendor. יצרני ציוד מקורי (OEM) של GMS צריכים להעתיק את הקובץ safety_center_config.xml ש-Google מספקת ולהגביל את השינויים רק לאלה שמותרים לפי הבדיקות של GTS. ההגדרה של שכבת-העל אמורה להיות דומה לזו:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.overlay.package"
    android:versionCode="1"
    android:versionName="1.0">
    <application android:hasCode="false" />
    <overlay
      android:targetPackage="com.google.android.safetycenter.resources"
      android:targetName="SafetyCenterConfig"
      android:isStatic="true"
      android:priority="0"/>
</manifest>

במכשירי GMS שלא מוגדרים לקבלת עדכוני Mainline, צריך לטרגט את החבילה com.android.safetycenter.resources. אין הגדרת שכבת-על לטרגוט. שם החבילה של שכבת-העל חייב להיות com.google.android.safetycenter.resources.

יצרני ציוד מקורי ל-GMS צריכים להעתיק את הקובץ safety_center_config.xml ש-Google מספקת ולהגביל את השינויים לשינויים שמותר לבצע לפי בדיקות GTS. יצרני ציוד מקורי (OEM) של GMS חייבים גם להגדיר את המחרוזות שבהן נעשה שימוש בהגדרת ה-XML.

מבנה הקובץ

באופן כללי, הקובץ safety_center_config.xml הוא רשימה של מקורות בטיחות. מקורות הבטיחות האלה מאורגנים בקבוצות כדי לנהל את האותות במסך של מרכז הבטיחות, למשל 'אבטחת אפליקציות' או 'נעילת מסך'. סדר הרשימה קובע את סדר ההצגה:

<safety-center-config> <!-- Wrapper for the Safety Center configuration -->
    <safety-sources-config>< !-- Wrapper for the safety sources groups -->
        <safety-sources-group> <!-- Contains information about a safety sources group -->
            <dynamic-safety-source /> <!-- Contains information about a safety source -->
            <!-- More safety sources in the group -->
        </safety-sources-group> <!-- More safety sources groups -->
    </safety-sources-config>
</safety-center-config>

קובץ תצורה של Google

קובץ התצורה של AOSP נמצא ב-packages/modules/Permission/SafetyCenter/Resources/res/raw/safety_center_config.xml.

ב-Android 13, קובץ התצורה של Google הוא:

<safety-center-config>
    <safety-sources-config>
        <safety-sources-group
            id="GoogleAppSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
            <dynamic-safety-source
                id="GooglePlayProtect"
                packageName="com.android.vending"
                profile="all_profiles"
                intentAction="com.google.android.finsky.PLAY_PROTECT"
                title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GoogleAppProtectionService"
                packageName="com.google.android.odad"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                loggingAllowed="false"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidLockScreenSources"
            title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
            <dynamic-safety-source
                id="AndroidLockScreen"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
                summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
                initialDisplayState="disabled"
                maxSeverityLevel="300"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="AndroidBiometrics"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
                summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
                initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
                maxSeverityLevel="0"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleAccountsSources"
            title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
            <dynamic-safety-source
                id="GoogleSecurityCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
                title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleDeviceFinderSources"
            title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
            <dynamic-safety-source
                id="GoogleFindMyDevice"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
                summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GoogleRogueTag"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleUpdateSources"
            title="@com.google.android.safetycenter.resources:string/google_updates_title"
            summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
            <dynamic-safety-source
                id="GoogleSecurityUpdates"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
                title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
                summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GooglePlaySystemUpdate"
                packageName="com.android.vending"
                profile="primary_profile_only"
                intentAction="android.settings.MODULE_UPDATE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
                summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySources"
            title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
            statelessIconType="privacy">
            <static-safety-source
                id="AndroidPermissionUsage"
                profile="primary_profile_only"
                intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
                title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
            <static-safety-source
                id="AndroidPermissionManager"
                profile="primary_profile_only"
                intentAction="android.intent.action.MANAGE_PERMISSIONS"
                title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
            <static-safety-source
                id="AndroidPrivacyControls"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
                summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
            <issue-only-safety-source
                id="AndroidAccessibility"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidNotificationListener"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidBackgroundLocation"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidPermissionAutoRevoke"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidAdvancedSources"
            title="@com.google.android.safetycenter.resources:string/google_advanced_title">
            <dynamic-safety-source
                id="AndroidWorkPolicyInfo"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
            <static-safety-source
                id="AndroidAdvancedSecurity"
                profile="primary_profile_only"
                intentAction="com.android.settings.security.SECURITY_ADVANCED_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_advanced_security_title"
                summary="@com.google.android.safetycenter.resources:string/google_advanced_security_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_security_search_terms"/>
            <static-safety-source
                id="AndroidAdvancedPrivacy"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_ADVANCED_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_advanced_privacy_title"
                summary="@com.google.android.safetycenter.resources:string/google_advanced_privacy_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_privacy_search_terms"/>
        </safety-sources-group>
    </safety-sources-config>
</safety-center-config>

ב-Android 14, קובץ התצורה של Google הוא:

<safety-center-config>
    <safety-sources-config>
        <safety-sources-group
            id="GoogleAppSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
            <dynamic-safety-source
                id="GooglePlayProtect"
                packageName="com.android.vending"
                profile="all_profiles"
                intentAction="com.google.android.finsky.PLAY_PROTECT"
                title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                deduplicationGroup="AppSecurity"/>
            <issue-only-safety-source
                id="GoogleAppProtectionService"
                packageName="com.google.android.odad"
                profile="primary_profile_only"
                loggingAllowed="false"
                deduplicationGroup="AppSecurity"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidLockScreenSources"
            title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
            <dynamic-safety-source
                id="AndroidLockScreen"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
                summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
                initialDisplayState="disabled"
                notificationsAllowed="true"
                maxSeverityLevel="300"/>
            <dynamic-safety-source
                id="AndroidBiometrics"
                packageName="com.android.settings"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
                initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
                maxSeverityLevel="0"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleAccountsSources"
            title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
            <dynamic-safety-source
                id="GoogleSecurityCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
                title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GooglePasswordCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_password_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_work"
                searchTerms="@com.google.android.safetycenter.resources:string/google_password_checkup_search_terms"
                initialDisplayState="hidden"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="false"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleDeviceFinderSources"
            title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
            <dynamic-safety-source
                id="GoogleFindMyDevice"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
                summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"/>
            <dynamic-safety-source
                id="GoogleRogueTag"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                initialDisplayState="hidden"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleUpdateSources"
            title="@com.google.android.safetycenter.resources:string/google_updates_title"
            summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
            <dynamic-safety-source
                id="GoogleSecurityUpdates"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
                title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
                summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"/>
            <dynamic-safety-source
                id="GooglePlaySystemUpdate"
                packageName="com.android.vending"
                profile="primary_profile_only"
                intentAction="android.settings.MODULE_UPDATE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
                summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"/>
            <dynamic-safety-source
                id="GoogleBackupAndRestore"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                title="@com.google.android.safetycenter.resources:string/google_backup_title"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_backup_search_terms"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySources"
            title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
            statelessIconType="privacy">
            <static-safety-source
                id="AndroidPermissionManager"
                profile="primary_profile_only"
                intentAction="android.intent.action.MANAGE_PERMISSIONS"
                title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
            <static-safety-source
                id="AndroidPermissionUsage"
                profile="primary_profile_only"
                intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
                title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
            <static-safety-source
                id="GoogleAdsIdentity"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.adsidentity.ACTION_ADS_IDENTITY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_ads_identity_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_ads_identity_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_ads_identity_search_terms"/>
            <dynamic-safety-source
                id="AndroidHealthConnect"
                profile="primary_profile_only"
                packageName="com.google.android.healthconnect.controller"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="false"
                title="@com.google.android.safetycenter.resources:string/google_health_connect_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_health_connect_search_terms"/>
            <dynamic-safety-source
                id="AndroidPrivacyAppDataSharingUpdates"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"
                title="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_search_terms"/>
            <static-safety-source
                id="AndroidPrivacyControls"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
                summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
            <static-safety-source
                id="GoogleActivityControls"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.accountsettings.action.ACTIVITY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_activity_controls_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_work"
                summary="@com.google.android.safetycenter.resources:string/google_activity_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_activity_controls_search_terms"/>
            <issue-only-safety-source
                id="AndroidAccessibility"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidNotificationListener"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidBackgroundLocation"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidPermissionAutoRevoke"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidAdvancedSources"
            title="@com.google.android.safetycenter.resources:string/google_advanced_title">
            <dynamic-safety-source
                id="AndroidWorkPolicyInfo"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_work_policy_title"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
            <static-safety-source
                id="AndroidMoreSettings"
                profile="primary_profile_only"
                intentAction="com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_more_settings_title"
                summary="@com.google.android.safetycenter.resources:string/google_more_settings_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_more_settings_search_terms"/>
        </safety-sources-group>
    </safety-sources-config>
</safety-center-config>

ב-Android 15, קובץ התצורה של Google הוא:

<safety-center-config>
    <safety-sources-config>
        <safety-sources-group
            id="GoogleAppSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
            <dynamic-safety-source
                id="GooglePlayProtect"
                packageName="com.android.vending"
                profile="all_profiles"
                intentAction="com.google.android.finsky.PLAY_PROTECT"
                title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                deduplicationGroup="AppSecurity"/>
            <issue-only-safety-source
                id="GoogleAppProtectionService"
                packageName="com.google.android.odad"
                profile="primary_profile_only"
                loggingAllowed="false"
                deduplicationGroup="AppSecurity"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidLockScreenSources"
            title="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_lock_screen_sources_summary">
            <dynamic-safety-source
                id="AndroidLockScreen"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
                summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
                initialDisplayState="disabled"
                notificationsAllowed="true"
                maxSeverityLevel="300"/>
            <dynamic-safety-source
                id="AndroidBiometrics"
                packageName="com.android.settings"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_biometrics_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_biometrics_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_biometrics_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_biometrics_search_terms"
                initialDisplayState="@com.google.android.safetycenter.resources:string/google_biometrics_initial_display_state"
                maxSeverityLevel="0"/>
            <dynamic-safety-source
                id="GoogleAutoLock"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                maxSeverityLevel="0"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleAccountsSources"
            title="@com.google.android.safetycenter.resources:string/google_accounts_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_accounts_sources_summary">
            <dynamic-safety-source
                id="GoogleSecurityCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                intentAction="com.google.android.gms.accountsettings.action.SAFETY_CENTER_SECURITY_CHECKUP"
                title="@com.google.android.safetycenter.resources:string/google_security_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_security_checkup_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_security_checkup_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_checkup_search_terms"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="true"/>
            <dynamic-safety-source
                id="GooglePasswordCheckup"
                packageName="com.google.android.gms"
                profile="all_profiles"
                title="@com.google.android.safetycenter.resources:string/google_password_checkup_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_password_checkup_title_for_private_profile"
                searchTerms="@com.google.android.safetycenter.resources:string/google_password_checkup_search_terms"
                initialDisplayState="hidden"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                refreshOnPageOpenAllowed="false"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleDeviceFinderSources"
            title="@com.google.android.safetycenter.resources:string/google_device_finder_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_device_finder_sources_summary">
            <dynamic-safety-source
                id="GoogleFindMyDevice"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="com.google.android.gms.settings.FIND_MY_DEVICE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_find_my_device_title"
                summary="@com.google.android.safetycenter.resources:string/google_find_my_device_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_find_my_device_search_terms"/>
            <dynamic-safety-source
                id="GoogleRogueTag"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                initialDisplayState="hidden"/>
        </safety-sources-group>
        <safety-sources-group
            id="GoogleUpdateSources"
            title="@com.google.android.safetycenter.resources:string/google_updates_title"
            summary="@com.google.android.safetycenter.resources:string/google_updates_summary">
            <dynamic-safety-source
                id="GoogleSecurityUpdates"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                intentAction="@com.google.android.safetycenter.resources:string/google_security_updates_intent"
                title="@com.google.android.safetycenter.resources:string/google_security_updates_title"
                summary="@com.google.android.safetycenter.resources:string/google_security_updates_summary"
                notificationsAllowed="true"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_security_updates_search_terms"/>
            <dynamic-safety-source
                id="GooglePlaySystemUpdate"
                packageName="com.android.vending"
                profile="primary_profile_only"
                intentAction="android.settings.MODULE_UPDATE_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_play_system_update_title"
                summary="@com.google.android.safetycenter.resources:string/google_play_system_update_summary"
                notificationsAllowed="true"
                deduplicationGroup="AccountRequired"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_play_system_update_search_terms"/>
            <dynamic-safety-source
                id="GoogleBackupAndRestore"
                packageName="com.google.android.gms"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                title="@com.google.android.safetycenter.resources:string/google_backup_title"
                packageCertificateHashes="1975b2f17177bc89a5dff31f9e64a6cae281a53dc1d1d59b1d147fe1c82afa00,f0fd6c5b410f25cb25c3b53346c8972fae30f8ee7411df910480ad6b2d60db83,d22cc500299fb22873a01a010de1c82fbe4d061119b94814dd301dab50cb7678,7ce83c1b71f3d572fed04c8d40c5cb10ff75e6d87d9df6fbd53f0468c2905053"
                searchTerms="@com.google.android.safetycenter.resources:string/google_backup_search_terms"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidCellularNetworkSecuritySources"
            title="@com.google.android.safetycenter.resources:string/google_cellular_network_security_title"
            summary="@com.google.android.safetycenter.resources:string/google_cellular_network_security_summary">
            <dynamic-safety-source
                id="AndroidCellularNetworkSecurity"
                packageName="com.android.phone"
                profile="primary_profile_only"
                notificationsAllowed="true"
                initialDisplayState="hidden"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySources"
            title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
            summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary">
            <static-safety-source
                id="AndroidPermissionManager"
                profile="primary_profile_only"
                intentAction="android.intent.action.MANAGE_PERMISSIONS"
                title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
            <static-safety-source
                id="GoogleAdsIdentity"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.adsidentity.ACTION_ADS_IDENTITY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_ads_identity_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_ads_identity_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_ads_identity_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_ads_identity_search_terms"/>
            <dynamic-safety-source
                id="AndroidHealthConnect"
                profile="primary_profile_only"
                packageName="com.google.android.healthconnect.controller"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="false"
                title="@com.google.android.safetycenter.resources:string/google_health_connect_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_health_connect_search_terms"/>
            <dynamic-safety-source
                id="AndroidPrivacyAppDataSharingUpdates"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"
                title="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_title"
                searchTerms="@com.google.android.safetycenter.resources:string/google_app_data_sharing_updates_search_terms"/>
            <static-safety-source
                id="AndroidPrivacyControls"
                profile="primary_profile_only"
                intentAction="android.settings.PRIVACY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
                summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
            <static-safety-source
                id="GoogleActivityControls"
                profile="all_profiles"
                packageName="com.google.android.gms"
                intentAction="com.google.android.gms.accountsettings.action.ACTIVITY_CONTROLS"
                title="@com.google.android.safetycenter.resources:string/google_activity_controls_title"
                titleForWork="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_work"
                titleForPrivateProfile="@com.google.android.safetycenter.resources:string/google_activity_controls_title_for_private_profile"
                summary="@com.google.android.safetycenter.resources:string/google_activity_controls_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_activity_controls_search_terms"/>
            <issue-only-safety-source
                id="AndroidAccessibility"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidNotificationListener"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidBackgroundLocation"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
            <issue-only-safety-source
                id="AndroidPermissionAutoRevoke"
                packageName="com.google.android.permissioncontroller"
                profile="all_profiles"
                notificationsAllowed="true"
                refreshOnPageOpenAllowed="true"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidPrivacySourcesAdditional"
            title="@com.google.android.safetycenter.resources:string/google_privacy_additional_title">
            <static-safety-source
                id="AndroidPermissionUsage"
                profile="primary_profile_only"
                intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
                title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
                summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
            <dynamic-safety-source
                id="AndroidPrivateSpace"
                packageName="com.android.settings"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_private_space_title"
                summary="@com.google.android.safetycenter.resources:string/google_private_space_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_private_space_search_terms"
                initialDisplayState="hidden"
                maxSeverityLevel="0"/>
        </safety-sources-group>
        <safety-sources-group
            id="AndroidAdvancedSources"
            title="@com.google.android.safetycenter.resources:string/google_advanced_title">
            <dynamic-safety-source
                id="AndroidWorkPolicyInfo"
                packageName="com.google.android.permissioncontroller"
                profile="primary_profile_only"
                title="@com.google.android.safetycenter.resources:string/google_work_policy_title"
                initialDisplayState="hidden"
                refreshOnPageOpenAllowed="true"/>
            <static-safety-source
                id="AndroidMoreSettings"
                profile="primary_profile_only"
                intentAction="com.android.settings.MORE_SECURITY_PRIVACY_SETTINGS"
                title="@com.google.android.safetycenter.resources:string/google_more_settings_title"
                summary="@com.google.android.safetycenter.resources:string/google_more_settings_summary"
                searchTerms="@com.google.android.safetycenter.resources:string/google_more_settings_search_terms"/>
        </safety-sources-group>
    </safety-sources-config>
</safety-center-config>

התאמה אישית של המקורות במרכז הבטיחות

סוגי מקורות במרכז הבטיחות

המקורות יכולים להיות דינמיים, רק לדיווח על בעיות או סטטיים, בהתאם לסוג הנתונים שהם מספקים למרכז הבטיחות.

מקורות דינמיים

מסמנים את מקור המידע בנושא בטיחות בתור dynamic-safety-source אם הוא יכול לספק ל'מרכז הבטיחות' נתונים דינמיים גם לגבי הכניסה שלו וגם לגבי כרטיסי האזהרה הפוטנציאליים:

<dynamic-safety-source
    id="AndroidLockScreen"
    packageName="com.android.settings"
    profile="primary_profile_only"
    title="@com.google.android.safetycenter.resources:string/google_lock_screen_title"
    summary="@com.google.android.safetycenter.resources:string/google_lock_screen_summary"
    searchTerms="@com.google.android.safetycenter.resources:string/google_lock_screen_search_terms"
    initialDisplayState="disabled"
    maxSeverityLevel="300"
    refreshOnPageOpenAllowed="true"/>

מקורות של בעיות בלבד

מסמנים את המקור כ-issue-only-safety-source אם אין רשומה מוגדרת של הגדרות אבל עדיין מופיעות אזהרות. אפשר לספק רק אזהרות. אם תספקו רשומה של הגדרות, תופיע שגיאה:

<issue-only-safety-source
    id="AndroidAccessibility"
    packageName="com.google.android.permissioncontroller"
    profile="all_profiles"
    refreshOnPageOpenAllowed="true"/>

מקורות סטטיים

מסמנים את המקור כ-static-safety-source אם מדובר ברשומה להפניה אוטומטית ללא נתונים דינמיים:

<static-safety-source
    id="AndroidAdvancedSecurity"
    profile="primary_profile_only"
    intentAction="com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS"
    title="@com.google.android.safetycenter.resources:string/google_advanced_security_title"
    summary="@com.google.android.safetycenter.resources:string/google_advanced_security_summary"
    searchTerms="@com.google.android.safetycenter.resources:string/google_advanced_security_search_terms"/>

הגדרת המקור של מרכז הבטיחות

בהתאם לסוג המקור של מרכז הבטיחות ולערכי קבועים אחרים, השדות בקובץ התצורה יכולים להיות אופציונליים, נדרשים או אסורים, ואפשר להתאים אותם אישית:

  • id
    • מזהה ייחודי של מקור הבטיחות. המזהה חייב להיות ייחודי בכל הקובץ, מורכב רק מאותיות אלפביתיות (a-z, ‏ A-Z) ורגיש לאותיות רישיות.
    • טיפוס מחרוזת
    • חובה לכל סוגי המקורות של מידע בנושאי בטיחות
  • packageName
    • שם החבילה שבבעלותה מקור הבטיחות הזה, לדוגמה, com.google.android.permissioncontroller
    • טיפוס מחרוזת
    • חובה למקורות בטיחות דינמיים ומקורות בטיחות שמכילים רק בעיות
    • אסור במקורות בטיחות סטטיים ב-Android 13. ב-Android 14 אפשר להגדיר את האפשרות הזו כך שתתמקד ב-intentAction של המקור באופן מפורש ולא משתמע (פרטים נוספים זמינים במסמכי התיעוד בנושא פתרון כוונות).
  • initialDisplayState
    • איך הרשומה בממשק המשתמש מוצגת כשאין נתונים שמתקבלים ממקור הבטיחות
    • סוג Enum שמוצג כמחרוזת, חייב להיות אחד מהערכים הבאים:
      • enabled (ברירת המחדל, מוצגת באופן רגיל)
      • disabled (מוצג באפור, אי אפשר ללחוץ עליו)
      • hidden (לא מוצג)
    • אופציונלי למקורות בטיחות דינמיים (ברירת המחדל היא enabled)
    • אסור להשתמש בהם במקורות בטיחות סטטיים ובמקורות בטיחות שמציגים רק בעיות
  • profile
    • אם מקור הבטיחות הזה יוצר אינטראקציה עם הפרופיל המנוהל של המשתמש
    • סוג Enum שמוצג כמחרוזת, חייב להיות אחד מהערכים הבאים:
      • primary_profile_only (מתקשר רק עם הורה הפרופיל)
      • all_profiles (אפשר גם לקיים אינטראקציה עם הפרופילים המנוהלים, ועם גרסת Android 15 גם עם הפרופיל הפרטי)
    • ב-all_profiles נוצרות כמה רשומות בממשק המשתמש (אחת להורה של הפרופיל ואחת לכל פרופיל מנוהל). מקור הבטיחות יכול לספק נתונים שונים לכל פרופיל
    • חובה לכל מקורות המידע בנושאי בטיחות
  • searchTerms
    • רשימה של מונחי חיפוש שממופים לרשומה של מרכז הבטיחות כשמשתמשים בחיפוש באפליקציית ההגדרות
    • מזהה המשאב מיוצג בתור שם משאב מלא, לדוגמה, @package:string/my_search_terms
    • אופציונלי למקורות בטיחות דינמיים וסטטיים (ברירת המחדל היא ללא מונחי חיפוש)
    • אסור להשתמש בהם במקורות אבטחה שמכילים בעיות בלבד
  • title
    • כותרת ברירת המחדל של הרשומה בממשק המשתמש, שמשמשת כשהמקור לא מספק נתונים באופן דינמי
    • מזהה המשאב מיוצג בתור שם משאב מלא, לדוגמה, @package:string/my_title
    • חובה למקורות בטיחות דינמיים וסטטיים (אלא אם initialDisplayState="hidden" ללא searchTerms)
    • אסור להשתמש בהם במקורות אבטחה שמכילים בעיות בלבד
  • titleForWork
    • כותרת ברירת המחדל של הרשומה בממשק המשתמש של הפרופיל המנוהל, שמשמשת כשהמקור לא מספק נתונים באופן דינמי
    • מזהה המשאב מיוצג בתור שם משאב מלא, לדוגמה, @package:string/my_title_for_work
    • נדרש למקורות בטיחות דינמיים וסטטיים שצוין בהם profile="all_profiles" (אלא אם initialDisplayState="hidden" ללא searchTerms)
    • אסור להשתמש בהם במקורות בטיחות שמפרסמים רק בעיות או במקורות עם profile="primary_profile_only"
  • summary
    • סיכום ברירת המחדל של הרשומה בממשק המשתמש (תיאור טקסט ארוך יותר שמוצג מתחת לשם), שמשמש כשהמקור לא מספק נתונים באופן דינמי
    • מזהה המשאב מיוצג בתור שם משאב מלא, לדוגמה, @package:string/my_summary
    • אופציונלי למקורות בטיחות סטטיים (ברירת המחדל היא ללא סיכום)
    • חובה למקורות דינמיים של תוכן בטוח (אלא אם הערך של initialDisplayState הוא hidden)
    • אסור להשתמש בהם במקורות אבטחה שמציגים בעיות בלבד
  • intentAction
    • הפעולה שתופעל כשלוחצים על הערך בממשק המשתמש
    • סוג מחרוזת, לדוגמה com.google.android.settings.security.SECURITY_ADVANCED_SETTINGS, או מזהה משאב שמוצג בתור שם משאב מלא, לדוגמה @package:string/my_intent_action
    • אם פעולת הכוונה הזו לא נפתרת עבור packageName (אם יש כזה), הרשומה בממשק המשתמש מתנהגת באותו אופן כמו אם יש initialDisplayState="disabled"
    • נדרש למקורות בטיחות סטטיים ולמקורות בטיחות מסוג dynamic שיש להם initialDisplayState="enabled"
    • אסור להשתמש בהם במקורות אבטחה שמכילים בעיות בלבד
  • maxSeverityLevel
    • רמת החומרה המקסימלית שהמקור הזה של מרכז הבטיחות יכול לספק
    • מספר שלם שמוצג כמחרוזת, לדוגמה, 300
    • אופציונלי למקורות דינמיים ולמקורות אבטחה של בעיות בלבד (ברירת המחדל היא ללא מקסימום)
    • אסור להשתמש בהם במקורות בטיחות סטטיים
  • loggingAllowed
    • אם מרכז הבטיחות יכול לתעד אינטראקציות או נתונים שקשורים למקור הזה
    • ערך בוליאני שמוצג כמחרוזת, לדוגמה false
    • אופציונלי למקורות דינמיים ולמקורות אבטחה של בעיות בלבד (ברירת המחדל היא true)
    • אסור להשתמש בהם במקורות בטיחות סטטיים
  • refreshOnPageOpenAllowed
    • האם צריך לשלוח אות למקור המידע בנושא בטיחות כדי לרענן את הנתונים שלו כשמסך מרכז הבטיחות נפתח
    • ערך בוליאני שמוצג כמחרוזת, לדוגמה, true
    • אופציונלי למקורות דינמיים ולמקורות אבטחה של בעיות בלבד (ברירת המחדל היא false)
    • אסור להשתמש בהם במקורות בטיחות סטטיים
  • notificationsAllowed (החל מ-Android 14)
    • האם מקור הבטיחות יכול לשלוח התראה על דיווח על בעיה
    • ערך בוליאני שמוצג כמחרוזת, לדוגמה, true
    • אופציונלי למקורות דינמיים ולמקורות אבטחה של בעיות בלבד (ברירת המחדל היא false)
    • אסור להשתמש בהם במקורות בטיחות סטטיים
  • deduplicationGroup (החל מ-Android 14)
    • מזהה ייחודי פוטנציאלי שאפשר להשתמש בו כדי לבטל כפילויות של בעיות שמגיעות ממקורות שונים. מקורות באותה קבוצה של ביטול כפילויות יכולים לשלוח בעיות עם מזהה ביטול כפילויות אופציונלי. בעיות עם אותו מזהה לבטלת כפילויות יוצגו בממשק המשתמש רק פעם אחת, גם אם הן נשלחות מכמה מקורות.
    • טיפוס מחרוזת
    • אופציונלי למקורות בטיחות דינמיים ומקורות בטיחות של בעיות בלבד (ברירת המחדל היא ללא ביטול כפילויות)
    • אסור להשתמש בהם במקורות בטיחות סטטיים
  • packageCertificateHashes (החל מ-Android 14)
    • רשימה מופרדת בפסיקים של קודי גיבוב של אישורים עבור packageName הנתון. אם ההגדרה הזו מוגדרת, בדיקת אישורים תתבצע מול packageCertificateHashes שצוין עבור packageName שצוין במהלך האינטראקציה עם מקור הבטיחות, למטרות אבטחה.
    • טיפוס מחרוזת
    • אופציונלי למקורות אבטחה דינמיים ומקורות אבטחה שמתבססים על בעיות בלבד (ברירת המחדל היא ללא בדיקות אישורים)
    • אסור להשתמש בהם במקורות בטיחות סטטיים
  • titleForPrivateProfile (החל מ-Android 15)
    • כותרת ברירת המחדל של הרשומה בממשק המשתמש לפרופיל הפרטי, שמשמשת כשהמקור לא מספק נתונים באופן דינמי
    • מזהה המשאב מיוצג בתור שם משאב מלא, לדוגמה, @package:string/my_title_for_private_profile
    • נדרש למקורות בטיחות דינמיים וסטטיים שצוין בהם profile="all_profiles" (אלא אם initialDisplayState="hidden" ללא searchTerms)
    • אסור להשתמש בהם במקורות בטיחות שמכילים רק בעיות, או במקורות עם profile="primary_profile_only"

התאמה אישית של קבוצות מקורות ב-Safety Center

מקורות של מרכז הבטיחות חייבים להיכלל בקבוצת מקורות של מרכז הבטיחות. כל קבוצת מקורות מוצגת בממשק המשתמש לפי הסדר שבו קבוצות המקורות מפורטות בקובץ. כל מקור מוצג בקבוצה לפי הסדר שבו המקורות מפורטים בקובץ. אם הקבוצה מכילה מקור בטיחות אחד, הוא יוצג כרשומה אחת ולא כקבוצה.

הגדרת קבוצת המקורות של מרכז הבטיחות

אפשר להשתמש במשתנים הבאים כדי להתאים אישית את קבוצות המקור של מרכז הבטיחות:

  • id
    • מזהה ייחודי של קבוצת מקורות המידע בנושא בטיחות. המזהה חייב להיות ייחודי בכל הקובץ.
    • טיפוס מחרוזת
    • חובה
  • title
    • שם הקבוצה בממשק המשתמש
    • מזהה המשאב מיוצג בתור שם משאב מלא, לדוגמה, @package:string/my_title
    • חובה אם יש לפחות מקור אחד של אבטחה דינמית או סטטית בקבוצה (כלומר, הקבוצה לא היא type="hidden")
  • summary
    • תיאור קצר של הקבוצה בממשק המשתמש, שמופיע מתחת לשם. מוצג בתנאים ספציפיים, בדרך כלל כשלא צוינו נתונים. במקרים אחרים, הסיכום מחושב על סמך הנתונים שסופקו על ידי המקורות בקבוצה.
    • מזהה המשאב מיוצג בתור שם משאב מלא, לדוגמה, @package:string/my_summary
    • אופציונלי (ברירת המחדל היא ללא סיכום)
  • statelessIconType
    • סוג הסמל שמוצג לקבוצה כשמקורות הבטיחות לא מספקים מצב, למשל רשומות סטטיות
    • סוג Enum שמוצג כמחרוזת, והוא חייב להיות none או privacy (סוג סמל הפרטיות)
    • אופציונלי (ברירת המחדל היא none)
  • type (החל מ-Android 14)
    • סוג מפורש שמציין את אופן האינטראקציה של הקבוצה הזו עם מרכז הבטיחות
    • סוג Enum שמוצג כמחרוזת, חייב להיות אחד מהערכים הבאים:
      • stateful (הסטטוס מוצג ומשויך לסטטוס הכללי של מרכז הבטיחות)
      • stateless (מוצג ולא משפיע על הסטטוס הכולל של מרכז הבטיחות)
      • hidden (לא מוצג, כל המקורות חייבים להיות בעיות בלבד)
    • אופציונלי, נגזר כברירת מחדל באמצעות מקורות הבטיחות שמכילים את הקבוצה, וגם את summary ו-statelessIconType. אם type מצוין, נאכפים כמה תנאים Invariants נוספים כדי לוודא שהוא תואם למקורות שנמצאו בקבוצה (לדוגמה, הקבוצה לא יכולה להיות hidden אם היא מכילה רשומות שגלויות למשתמשים).

סוגי הקבוצות של מקורות המידע במרכז הבטיחות

קבוצות המקור של מרכז הבטיחות מסווגות כקבוצות עם מצב, ללא מצב או מוסתרות, בהתאם למצב של שדות מסוימים.

קבוצה עם שמירת מצב

קבוצה שיש לה גם כותרת וגם סיכום, או ש-stateLessIconType="privacy" נחשבת לקבוצה עם מצב, תורמת לסטטוס הכולל של מרכז הבטיחות:

<safety-sources-group
    id="GoogleAppSecuritySources"
    title="@com.google.android.safetycenter.resources:string/google_app_security_sources_title"
    summary="@com.google.android.safetycenter.resources:string/google_app_security_sources_summary">
    <dynamic-safety-source
        id="GooglePlayProtect"
        packageName="com.android.vending"
        profile="all_profiles"
        intentAction="com.google.android.finsky.PLAY_PROTECT"
        title="@com.google.android.safetycenter.resources:string/google_play_protect_title"
        titleForWork="@com.google.android.safetycenter.resources:string/google_play_protect_title_for_work"
        summary="@com.google.android.safetycenter.resources:string/google_play_protect_summary"
        searchTerms="@com.google.android.safetycenter.resources:string/google_play_protect_search_terms"
        refreshOnPageOpenAllowed="true"/>
    <dynamic-safety-source
        id="GoogleAppProtectionService"
        packageName="com.google.android.odad"
        profile="primary_profile_only"
        initialDisplayState="hidden"
        loggingAllowed="false"/>
</safety-sources-group>

ב-Android 13, קבוצה כזו תוצג כרשומה שניתן לכווץ בממשק המשתמש. ב-Android 14, הוא יוצג כרשומה עם סטטוס משלו שמפנה לדף המשנה.

קבוצה ללא מצב

קבוצה שיש לה שם אבל אין לה סיכום, ו-stateLessIconType="none" נחשבת ללא מצב ולא תורמת לסטטוס הכולל של מרכז הבטיחות:

<safety-sources-group
    id="AndroidPrivacySources"
    title="@com.google.android.safetycenter.resources:string/google_privacy_sources_title"
    summary="@com.google.android.safetycenter.resources:string/google_privacy_sources_summary"
    statelessIconType="privacy">
    <static-safety-source
        id="AndroidPermissionUsage"
        profile="primary_profile_only"
        intentAction="android.intent.action.REVIEW_PERMISSION_USAGE"
        title="@com.google.android.safetycenter.resources:string/google_permission_usage_title"
        summary="@com.google.android.safetycenter.resources:string/google_permission_usage_summary"
        searchTerms="@com.google.android.safetycenter.resources:string/google_permission_usage_search_terms"/>
    <static-safety-source
        id="AndroidPermissionManager"
        profile="primary_profile_only"
        intentAction="android.intent.action.MANAGE_PERMISSIONS"
        title="@com.google.android.safetycenter.resources:string/google_permission_manager_title"
        summary="@com.google.android.safetycenter.resources:string/google_permission_manager_summary"
        searchTerms="@com.google.android.safetycenter.resources:string/google_permission_manager_search_terms"/>
    <static-safety-source
        id="AndroidPrivacyControls"
        profile="primary_profile_only"
        intentAction="android.settings.PRIVACY_CONTROLS"
        title="@com.google.android.safetycenter.resources:string/google_privacy_controls_title"
        summary="@com.google.android.safetycenter.resources:string/google_privacy_controls_summary"
        searchTerms="@com.google.android.safetycenter.resources:string/google_privacy_controls_search_terms"/>
    <issue-only-safety-source
        id="AndroidAccessibility"
        packageName="com.google.android.permissioncontroller"
        profile="all_profiles"
        refreshOnPageOpenAllowed="true"/>
    <issue-only-safety-source
        id="AndroidNotificationListener"
        packageName="com.google.android.permissioncontroller"
        profile="primary_profile_only"
        refreshOnPageOpenAllowed="true"/>
    <issue-only-safety-source
        id="AndroidBackgroundLocation"
        packageName="com.google.android.permissioncontroller"
        profile="all_profiles"
        refreshOnPageOpenAllowed="true"/>
    <issue-only-safety-source
        id="AndroidPermissionAutoRevoke"
        packageName="com.google.android.permissioncontroller"
        profile="all_profiles"
        refreshOnPageOpenAllowed="true"/>
</safety-sources-group>

קבוצה כזו תוצג כרשימה נוקשה של רשומות בממשק המשתמש.

קבוצה מוסתרת

קבוצה מוסתרת מכילה רק מקורות בטיחות שכוללים בעיות בלבד, ואין לה שם. קבוצות מוסתרות לא מופיעות בממשק המשתמש:

<safety-sources-group
    id="HiddenGroup">
    <issue-only-safety-source
        id="AndroidAccessibility"
        packageName="com.google.android.permissioncontroller"
        profile="all_profiles"
        refreshOnPageOpenAllowed="true"/>
</safety-sources-group>

נתונים דינמיים של רשומה סטטית

אפשר להציג את המקור הדינמי של מרכז הבטיחות כרשומה סטטית, שמאפשרת לדחוף רשומות של הפניות אוטומטיות בהתאם לתנאים מסוימים, ולהתאים אישית את התוכן שלה בזמן הריצה. מגדירים את המקור הדינמי בקבוצה ללא מצב (stateless), למשל, בהתאם לרשומה של פרטי המדיניות של מקום העבודה.

בדוגמה הזו מוצג מקור בטיחות דינמי שלא מספק אות בטיחות, כי הוא נמצא בקבוצה ללא מצב:

<safety-sources-group
    id="AndroidAdvancedSources"
    title="@com.google.android.safetycenter.resources:string/google_advanced_title">
    <dynamic-safety-source
        id="AndroidWorkPolicyInfo"
        packageName="com.google.android.permissioncontroller"
        profile="primary_profile_only"
        initialDisplayState="hidden"
        refreshOnPageOpenAllowed="true"/>
            <!--  -->
</safety-sources-group>

בדוגמה הזו, המקור יכול לדחוף רק כרטיסי אזהרה ירוקים ולספק סטטוס לא מוגדר. כדי לספק נתונים אחרים, המקור צריך להיות בקבוצה עם שמירת מצב.

התאמה אישית של מחרוזות ושדות שכבת-על

במכשירי GMS שלא מוגדרים לקבלת עדכוני Mainline, במקום להוסיף שכבה לקובץ התצורה כולו, אפשר להוסיף שכבה לשישה משאבי מחרוזות כדי לענות על כל הצרכים של ההתאמה האישית. משאבי המחרוזות שמשמשים כשכבת-על מפורטים בטבלה.

משאב מחרוזת תיאור
google_lock_screen_sources_summary אפשר להוסיף שכבה על הערך הזה כדי להגדיר סיכום סטטי שיוצג לקבוצה AndroidLockScreenSources כשכל המקורות בקבוצה נמצאים במצב תקין (מידע או רמת חומרה לא צוינה). כברירת מחדל, ב-Safety Center מוצג כתקציר של הקבוצה הכותרת של כל המקורות בקבוצה, שמקושרת יחד.
google_biometrics_title אפשר להוסיף שכבה על הערך הזה כדי להגדיר כותרת סטטית למקור הביומטרי שבבעלות החבילה com.android.settings, שתופעל כשהמקור לא מספק נתונים דינמיים. מוסיפים את שכבת-העל הזו כשמוסיפים גם את השם שמסופק באופן דינמי על ידי המקור בחבילה com.android.settings. המערכת מתעלמת מהערך הזה כברירת מחדל כי מצב התצוגה הראשוני של המקור הוא hidden.
google_biometrics_summary אפשר להוסיף שכבה על הערך הזה כדי להגדיר סיכום סטטי של המקור הביומטרי שבבעלות החבילה com.android.settings, שמשומש כשהמקור לא מספק נתונים דינמיים. המערכת מתעלמת מהערך הזה כברירת מחדל כי מצב התצוגה הראשוני של המקור הוא hidden.
google_biometrics_search_terms אפשר להוסיף שכבה על הערך הזה כדי להגדיר רשימת מונחי חיפוש למקור הביומטרי שבבעלות החבילה com.android.settings.
google_biometrics_initial_display_state אפשר להוסיף שכבה על הערך הזה כדי להציג רשומה בממשק המשתמש של המקור הביומטרי שבבעלות החבילה com.android.settings, כשהמקור לא מספק נתונים דינמיים. ערך ברירת המחדל הוא hidden.
google_security_updates_intent אפשר להוסיף שכבה על הערך הזה כדי לשנות את הכוונה שנדרשת כדי לפתוח את הפעילות שמאפשרת למשתמש לבדוק ולהתקין עדכוני אבטחה. פעולת הכוונה הזו צריכה להיות משויכת לפעילות שיוצאו. ערך ברירת המחדל הוא android.settings.SYSTEM_UPDATE_SETTINGS.

אי אפשר להוסיף שכבת-על למחרוזות אחרות בחבילה com.google.android.safetycenter.resources.

במכשירי AOSP, אפשר להוסיף שכבה לכל המשאבים בחבילה com.android.safetycenter.resources ללא הגבלה על התוכן.

במכשירי GMS שלא מוגדרים לקבלת עדכוני Mainline, יוצרים חבילת com.google.android.safetycenter.resources שמחליפת את com.android.safetycenter.resources או מוטמעת מעל com.android.safetycenter.resources ומגדירה את כל המחרוזות שצפויות בבדיקות GTS.

המחרוזות האלה הן:

  • google_app_security_sources_title
  • google_app_security_sources_summary
  • google_play_protect_title
  • google_play_protect_title_for_work
  • google_play_protect_summary
  • google_play_protect_search_terms
  • google_lock_screen_sources_title
  • google_lock_screen_sources_summary
  • google_lock_screen_title
  • google_lock_screen_summary
  • google_lock_screen_search_terms
  • google_biometrics_title
  • google_biometrics_summary
  • google_biometrics_search_terms
  • google_biometrics_initial_display_state
  • google_accounts_sources_title
  • google_accounts_sources_summary
  • google_security_checkup_title
  • google_security_checkup_title_for_work
  • google_security_checkup_summary
  • google_security_checkup_search_terms
  • google_device_finder_sources_title
  • google_device_finder_sources_summary
  • google_find_my_device_title
  • google_find_my_device_summary
  • google_find_my_device_search_terms
  • google_updates_title
  • google_updates_summary
  • google_security_updates_title
  • google_security_updates_summary
  • google_security_updates_search_terms
  • google_security_updates_intent
  • google_play_system_update_title
  • google_play_system_update_summary
  • google_play_system_update_search_terms
  • google_privacy_sources_title
  • google_privacy_sources_summary
  • google_permission_usage_title
  • google_permission_usage_summary
  • google_permission_usage_search_terms
  • google_permission_manager_title
  • google_permission_manager_summary
  • google_permission_manager_search_terms
  • google_privacy_controls_title
  • google_privacy_controls_summary
  • google_privacy_controls_search_terms
  • google_advanced_title
  • google_advanced_security_title
  • google_advanced_security_summary
  • google_advanced_security_search_terms
  • google_advanced_privacy_title
  • google_advanced_privacy_summary
  • google_advanced_privacy_search_terms

דרישות להתאמה אישית

הדרישות לגבי פורמט הקובץ

קובץ התצורה צריך להיות קובץ XML ותואם לפורמט שמתואר בקטע עדכון קובץ התצורה. הקובץ צריך להיות בתיקייה raw. הוא צריך לעמוד בתנאי הבלתי משתנים שמפורטים במאמרים התאמה אישית של מקורות מידע במרכז הבטיחות והתאמה אישית של קבוצות מקורות מידע במרכז הבטיחות. אם קובץ התצורה לא תקין בהתאם לדרישות שלמעלה, התכונה תושבת לחלוטין. ניתוח הקובץ הזה נתמך גם בבדיקות CTS ו-GTS, שיכולות לספק הקשר נוסף במקרה שהקובץ לא בפורמט תקין (בנוסף ליומני המכשיר של logcat).

מכשירים עם שירותי Google

במכשירי GMS, יש מגבלות מסוימות על הקובץ הזה. אפשר לעשות זאת באמצעות בדיקות GTS.

מכשירי AOSP

במכשירי AOSP, קובץ התצורה צריך להיות תקין ולעבור את הבדיקות של CTS ל-Safety Center. הבדיקות מוודאות שהקובץ תקין. גם מכשירים עם GMS חייבים לעבור את הבדיקות האלה.