اختبار النسخة الاحتياطية
| آخر تحديث | الإصدار المستقر | إصدار محتمل | الإصدار التجريبي | الإصدار الأولي |
|---|---|---|---|---|
| 21 أكتوبر 2026 | - | - | - | 1.0.0-alpha03 |
تحديد الاعتماديات
لإضافة تبعية على النسخة الاحتياطية الاختبارية، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع Maven من Google لمزيد من المعلومات.
أضِف الاعتماديات الخاصة بالعناصر التي تحتاج إليها في ملف build.gradle لتطبيقك أو وحدتك:
Groovy
dependencies { implementation "androidx.test.backup:backup:1.0.0-alpha03" implementation "androidx.test.backup:backup-host:1.0.0-alpha03" }
Kotlin
dependencies { implementation("androidx.test.backup:backup:1.0.0-alpha03") implementation("androidx.test.backup:backup-host:1.0.0-alpha03") }
لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.
الملاحظات
تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة تصويتك إلى مشكلة حالية من خلال النقر على زر النجمة.
يُرجى الاطّلاع على مستندات Issue Tracker لمزيد من المعلومات.
الإصدار 1.0 من اختبار استعادة النسخة الاحتياطية الآلية
الإصدار 1.0.0-alpha03
21 أكتوبر 2026
تم طرح androidx.test.backup:backup:1.0.0-alpha03 وandroidx.test.backup:backup-host:1.0.0-alpha03. يتضمّن الإصدار 1.0.0-alpha03 هذه التعديلات.
الميزات الجديدة
- تم تبسيط إعداد الاختبار في الحزم الاختبارية الاحتياطية للمكوّن الإضافي لنظام Gradle المتوافق مع Android من خلال استهداف التطبيق الذي يتم اختباره تلقائيًا عند حذف
@BackupRestoreConfig. (I1452b) - تمت إضافة إمكانية اكتساب إعدادات
@BackupRestoreConfigو@Isolationمن فئة اختبار خارجية في فئات اختبار@Nested. (Ia45a8) - تمت إضافة إمكانية إدخال
BackupRestoreControllerمباشرةً في دوال إنشاء فئات الاختبار وطرق إعداد@BeforeAll. (I6e822، Ia2ebd) - تمت إضافة إمكانية تثبيت جهاز معيّن لدور
@Deviceفي الاختبارات على أجهزة متعدّدة باستخدام السمةandroidx.test.backup.device.serial.{role}. (I484be)
إصلاح الأخطاء
- تم إصلاح
performBackupوperformRestoreلكي يتعذّر إجراء الاختبارات على الفور بدلاً من اجتيازها بدون إشعار عند تخطّي نسخة احتياطية أو عندما تكون فارغة، أو عند حدوث خطأ في خدمة الاحتفاظ بنسخة احتياطية، أو عندما ينتمي أرشيف نسخة احتياطية على الجهاز إلى تطبيق أو جهاز مختلف. (I7673d، I478ad، I0b989، I9a0ea، I79567) - تم إصلاح مشكلة توقُّف الاختبارات إلى أجل غير مسمى على الأجهزة غير المستجيبة من خلال فرض مهلة على عمليات الاحتفاظ بنسخة احتياطية والاستعادة وإجراءات الجهاز وخطوات التنظيف. (I10661، I9cdee، If5f92)
- تم إصلاح مشكلة حذف
performBackupلملفات النُسخ الاحتياطية التي تم إنشاؤها عند انتهاء عملية الاختبار، لذا يتم الآن الاحتفاظ بأرشيف النُسخ الاحتياطية على القرص بعد الخروج من الاختبارات. (I8c13f) - تم إصلاح أدوات المساعدة في اختبار قاعدة البيانات (
StorageDomain.Database) لتخزين قيمnullوالتحقّق منها بشكل صحيح، واستبدال الصفوف الحالية عند إنشاء بيانات الاختبار، ورصد إعدادات الجداول غير الصالحة في وقت مبكر، وإظهار رسالة خطأ عند عدم العثور على ملف قاعدة بيانات متوقّع. (Ib4767، Iddf87، I19c43، Ie8d78، I8bc18) - تم إصلاح أدوات المساعدة في اختبار
SharedPreferencesللحفاظ على أنواع البيانات بدقة وإتاحة التحقّق من الإعدادات المفضّلة التي تم ضبطها علىnullأو إزالتها. (I8456d9، I1d0fc2) - تم إصلاح
runOnDeviceللتعامل مع حمولات الاختبار الكبيرة بدون تعطُّل، والإيقاف مؤقتًا لمصحِّح الأخطاء عند تفعيلwaitForDebugger، والعثور على مشغِّل الاختبار في أسماء حِزم APK المخصّصة للاختبار، وحظر تسرُّب علامات المشغِّل الداخلي إلى إجراءات الجهاز. (Ic73bd وIede17 وI1d172 وI84c15) - تم تحسين ثبات الاختبار وسرعته من خلال مشاركة اتصال واحد عبر Android Debug Bridge (ADB) خلال عملية الاختبار، وتثبيت حِزم APK مرة واحدة فقط لكل جهاز، والإشارة بوضوح إلى تعذُّر تثبيت حِزمة APK أو تشغيلها. (I62717، Iabf75، I14e6f، I4c3da5، I54077، Iee84e)
- تم إصلاح مشكلة كتابة ملفات سجلّ فارغة في
fetchDeviceLogs، وتم إيقاف عمليات الاختبار المُلغاة من إنشاء تقارير أخطاء خاطئة. (I736c4، I7b199، Ia847e) - تمت إزالة تبعيات
backup-hostلكي يصبحadblibمتاحًا مباشرةً للمتصلين، ولم تعد مكتبات التسجيل الداخلي أو الاختبار تتعارض مع مسار فئة مشروعك. (I6e822، Iba9a4، Ib4ec9)
الإصدار 1.0.0-alpha02
7 أكتوبر 2026
تم طرح androidx.test.backup:backup:1.0.0-alpha02 وandroidx.test.backup:backup-host:1.0.0-alpha02. يتضمّن الإصدار 1.0.0-alpha02 هذه التعديلات.
التغييرات في واجهة برمجة التطبيقات
- تم الآن توثيق مفاتيح الحمولة على أنّها
BackupActionInputKeysوBackupActionOutputKeysوBackupActionValues، لتحلّ محل الثوابت فيBackupDeviceAction. تمت إضافة مصنعَيBackupDeviceActionResult.success()وfailure()، بالإضافة إلى دالتَي استرداد القيمةisSuccessوerrorMessage. (Ibd493)
إصلاح الأخطاء
- يُظهر
BackupRestoreController.clearAppDataالآنIOExceptionعندما لا يُبلغpm clearعن النجاح، بدلاً من المتابعة بدون إشعار. (I61556) - يتم الآن تجاوز وسيطات واجهة المستخدم التي يتم تمريرها إلى
BackupRestoreControllerلتنفيذ الجهاز بشكل صحيح لمنع حقن الأوامر وضمان التعامل مع مسارات الملفات التي تحتوي على مسافات بشكل آمن. - تم تعزيز إجراءات التخزين المجمّعة (
PopulateStorageActionوAssertStorageAction) ضد عمليات التحقّق الصامتة لضمان فشل الاختبارات بشكل صارم في حال عدم توفّر البيانات المتوقّعة. - أصبحت أدوات تنسيق الاختبارات على جهاز المضيف الآن تتعامل بشكل صحيح مع حالات تعذُّر تنفيذ الإجراءات داخل النطاق التي يبلّغ عنها الجهاز بدلاً من تجاهلها.
- تم إصلاح مشكلة في تعبئة صفوف قاعدة البيانات من خلال ترميز النسبة المئوية لتنسيق سلك قاعدة البيانات
'values'، ما يمنع تلف البيانات أثناء نقل الحمولة. - تمت معالجة الثغرات الأمنية في "
androidx.test.backup:backup-host" من خلال ترقية التبعيات.
الإصدار 1.0.0-alpha01
23 سبتمبر 2026
تم طرح androidx.test.backup:backup:1.0.0-alpha01 وandroidx.test.backup:backup-host:1.0.0-alpha01. يتضمّن الإصدار 1.0.0-alpha01 هذه التعديلات.
ميزات الإصدار الأولي
الإصدار الأوّلي من إطار عمل "اختبار الاحتفاظ بنسخة احتياطية واستعادتها تلقائيًا" لنظام التشغيل Android توفّر هذه المكتبة طريقة مبرمَجة وشاملة لاختبار بقاء بيانات المستخدمين وبيانات اعتماد الحسابات بأمان بعد ترقية الأجهزة وعمليات الاستعادة من السحابة الإلكترونية. بدلاً من الاعتماد على الاختبار اليدوي، يمكن للمطوّرين أتمتة دورة الحياة الكاملة: بدء حالة التطبيق، والاحتفاظ بنسخة احتياطية منه وفقًا للقواعد التي تم ضبطها (dataExtractionRules وfullBackupContent)، ومحو بيانات التطبيق، والتحقّق من صحة البيانات بعد الاستعادة. يوفّر إطار العمل عنصرَين: androidx.test.backup:backup-host (الذي يعمل على الكمبيوتر المضيف لتنظيم عمليات الاحتفاظ بنسخة احتياطية وحجب البيانات واستعادتها من خلال ADB) وandroidx.test.backup:backup (الذي يعمل على الجهاز لتعبئة بيانات التطبيق والتحقّق منها).
-
BackupRestoreController: الواجهة الأساسية على جهاز المضيف التي تُستخدَم للتحكّم في سير عمل النسخ الاحتياطي والمسح والاستعادة والتحقّق من جهاز الاختبار. توفّر مسارات معالجة مريحة، مثلrunBackupRestoreFlow، بالإضافة إلى عمليات دقيقة (performBackupوperformRestoreوclearAppDataوfetchDeviceLogsوrunOnDevice)، وتتوافق مع كل من الكوروتينات في Kotlin وتنفيذListenableFutureغير المتزامن في Java. -
BackupRestoreExtension: إضافة JUnit 5 Jupiter التي تحلّ مَعلماتBackupRestoreControllerوتُدخلها في طرق الاختبار. تدير هذه الأداة جلسات ADB المستقلة أو المشتركة، وتثبِّت تلقائيًا حِزم APK التي تم اختبارها وحِزم APK الاختبارية، وتتجاهل شاشات قفل الجهاز وأقفال المفاتيح لفتح قفل مساحة التخزين المحمية ببيانات الاعتماد، وتفرض عزل وضع الحماية للاختبار. -
BackupRestoreTestRunner: أداة تشغيل اختباراتInstrumentationعلى الجهاز فقط تعمل داخل وضع الحماية في التطبيق. يحلّ هذا المكوّن ديناميكيًا عمليات تنفيذBackupDeviceActionالمطلوبة التي ترسلها أدوات التنسيق المضيفة وينفّذها، ويعيد توجيه حمولات نتائج JSON الكبيرة بأمان إلى القرص لمنع تجاوز حدود مخزن معاملات Binder المؤقت. BackupDeviceAction: العقد الخاص بالإجراءات المخصّصة على الجهاز التي يتم تنفيذها مباشرةً داخل وضع الحماية للتطبيق المستهدَف أثناء عملية إدخال البيانات (PHASE_POPULATE) أو التحقّق من الصحة بعد الاستعادة (PHASE_VERIFY).StorageDomain: واصفات مكتوبة بقوة (PreferenceوDatabaseوTextFileوBinaryFile) تُستخدم جنبًا إلى جنب مع مساعدي الإجراءات المُنشأة مسبقًا (PopulateStorageActionوAssertStorageAction) لإنشاءSharedPreferencesوقواعد بيانات SQLite والملفات الأولية وتأكيدها تلقائيًا في سياقات التخزين المحمية ببيانات الاعتماد (CE) والمحمية بالجهاز (DE) بدون نموذج معياري.-
BackupTransportMode: تحدّد هذه السمة بنية نقل البيانات الاحتياطية في النظام الأساسي التي تتم محاكاتها أثناء عمليات الاختبار، بما في ذلكDEVICE_TO_DEVICE(نقل البيانات من جهاز فعلي عبر USB أو اتصال Wi-Fi مباشر) وCLOUD_ENCRYPTED(الاحتفاظ بنسخة احتياطية في السحابة الإلكترونية مع تشفير تام بين الأطراف من جهة العميل) وCLOUD_UNENCRYPTED(الاحتفاظ بنسخة احتياطية عادية في السحابة الإلكترونية) وLOCAL(الاحتفاظ بنسخة احتياطية من نظام الملفات المحلي بلا إنترنت). @Deviceو@Isolation: تعليقات توضيحية للمضيف لاختيار الأجهزة المتصلة التي تتطابق مع أرقام تسلسلية أو مستويات واجهة برمجة تطبيقات أو أدوار مصمّمة لأجهزة متعدّدة معيّنة، وضبط سياسات عزل وضع الحماية بين عمليات الاختبار (IsolationPolicy.AUTOMATICمقابلIsolationPolicy.MANUAL).