يمكنك استخدام ota_from_target_files
.
هذه الأداة المقدمة في build/make/tools/releasetools
لإنشاء قيم كاملة
حزم التحديث عبر الهواء للأجهزة التي تستخدم تحديثات نظام A/B
تحديثات نظام التشغيل غير A/B تأخذ الأداة
ملف target-files.zip
تم إنشاؤه بواسطة نظام إصدار Android كإدخال.
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 11 أو الإصدارات الأحدث، يمكنك إنشاء حزمة OTA واحدة لأجهزة متعددة برموز تخزين تعريفية مختلفة. ويتطلب ذلك ضبط الأجهزة المستهدَفة لاستخدام الملفات المرجعية الديناميكية وتعديل البيانات الوصفية للتحديث الهوائي (OTA) لتضمين الجهاز الاسم وبصمة الإصبع في إدخالي الشرط المسبق وبعد الشرط.
حزم OTA المستندة إلى الملفات التي تم إيقافها نهائيًا في Android 8.0 للأجهزة بخلاف A/B، والتي يجب
بدلاً من ذلك، عليك استخدام حِزم OTA المستندة إلى حظر. إلى
إنشاء حزم عبر الهواء مستنِدة إلى الكتل أو أجهزة تعمل بنظام التشغيل Android 7.x أو إصدار أقدم
خيار --block
إلى المعلمة ota_from_target_files
.
إصدار التحديثات الكاملة
التحديث الكامل هو حزمة OTA تحتوي على الحالة النهائية بالكامل
الجهاز (أقسام النظام والتشغيل والاسترداد). ما دام الجهاز يعمل بشكل سليم.
استلام الحزمة وتطبيقها، يمكن للحزمة تثبيت
بغض النظر عن حالة الجهاز الحالية. على سبيل المثال، ما يلي
أدوات الإصدار لإنشاء أرشيف target-files.zip
جهاز واحد (tardis
).
. build/envsetup.sh && lunch tardis-eng
mkdir dist_output
make dist DIST_DIR=dist_output
ينشئ make dist
حزمة كاملة عبر الهواء (في $OUT
). ملف .zip
الناتج
يحتوي على كل ما يلزم لإنشاء حزم عبر الهواء لجهاز tardis
.
ويمكنك أيضًا إنشاء ota_from_target_files
كثنائي بايثون وطلبها
إنشاء حزم كاملة أو تزايدية.
ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip
تم إعداد مسار ota_from_target_files
في $PATH
، ولغة بايثون الناتجة
يكون النظام الثنائي في الدليل out/
.
أصبح جهاز "ota_update.zip
" جاهزًا الآن لإرساله إلى أجهزة الاختبار (تم توقيع كل البيانات).
باستخدام مفتاح الاختبار). بالنسبة إلى أجهزة المستخدمين، يمكنك إنشاء مفاتيحك الخاصة واستخدامها كـ
بالتفصيل في إصدارات توقيع الإصدار.
إنشاء تحديثات تدريجية
التحديث التزايدي هو حزمة OTA تحتوي على رموز تصحيح ثنائية للبيانات. الموجودة بالفعل على الجهاز. عادةً ما تكون الحِزم التي تتضمّن تعديلات إضافية أصغر. لأنها لا تحتاج إلى تضمين الملفات التي لم يتم تغييرها. بالإضافة إلى ذلك، ونظرًا لأن الملفات التي تم تغييرها مشابهة جدًا لإصداراتها السابقة، تحتاج الحزمة فقط إلى تضمين ترميزًا للاختلافات بين الملفين.
لا يمكنك تثبيت حزمة تحديثات تزايدية إلا على الأجهزة التي تحتوي على
المصدر المستخدم في إنشاء الحزمة. لإنشاء تحديث تزايدي،
ستحتاج إلى ملف target_files.zip
من الإصدار السابق (الملف الذي تريده
المطلوب تحديثها من) بالإضافة إلى ملف target_files.zip
من الإصدار الجديد. بالنسبة
على سبيل المثال، تستخدم الأوامر التالية أدوات الإصدار لإنشاء تحديث تزايدي
لجهاز tardis
.
ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip
هذا الإصدار يشبه إلى حد كبير الإصدار السابق، ويعرض التحديث التدريجي
الحزمة (incremental_ota_update.zip
) أصغر بكثير من الحزمة
تحديث كامل (حوالي 1 ميغابايت بدلاً من 60 ميغابايت).
توزيع حزمة إضافية فقط على الأجهزة التي تعمل بنفس الشكل تمامًا
استخدام الإصدار السابق كنقطة بداية للحزمة التزايدية. يجب أن تومض
الصور في PREVIOUS-tardis-target_files.zip
أو PREVIOUS-tardis-img.zip
(كلاهما تم إنشاؤه باستخدام make dist
، ليتم وميض fastboot update
)، بدلاً من
تلك الموجودة ضمن الدليل PRODUCT_OUT
(التي تم إنشاؤها باستخدام make
، والتي سيتم
امضى باستخدام fastboot flashall
). محاولة تثبيت الحزمة التزايدية
على جهاز مع بعض الإصدارات الأخرى إلى حدوث خطأ في التثبيت. عندما
فشل التثبيت، يظل الجهاز في حالة العمل نفسها (تشغيل
) تتحقق الحزمة من الحالة السابقة لجميع الملفات التي تحدّثها.
قبل لمسها، وبذلك لن يكون الجهاز عالقًا بنصف الترقية.
لتقديم أفضل تجربة للمستخدم، يجب تقديم تحديث كامل لكل 3 إلى 4 فترات متزايدة. التحديثات. يساعد هذا المستخدمين في متابعة أحدث إصدار وتجنب فترة تسلسل تثبيت التحديثات التزايدية.
إنشاء حزم التحديث عبر الهواء لرموز تخزين تعريفية متعددة
يتيح نظام التشغيل Android 11 أو الإصدارات الأحدث استخدام اتصال عبر الهواء واحد. لأجهزة متعددة برموز تخزين تعريفية مختلفة. ويتطلب إجراء ذلك تهيئة الأجهزة المستهدفة لاستخدام البصمة الديناميكية وتحديث البيانات الوصفية لـ OTA (باستخدام أدوات التحديث عبر الهواء) لتضمين اسم الجهاز وبصمة الإصبع في القسمَين السابق واللاحق الإدخالات الشرطية.
لمحة عن رموز التخزين التعريفية
ويُعدّ تنسيق رمز التخزين التعريفي أحد أشكال الإصدارات المدمجة
القيم
هي عادةً مجموعة فرعية غير معلَنة من معلَمات build_fingerprint
الحالية.
ويمكن للمصنّعين الأصليين للأجهزة استخدام أي مجموعة من معلَمات الإصدار المعتمَدة من CDD لرمز التخزين التعريفي.
أيضًا استخدام صورة واحدة لرموز التخزين التعريفية هذه. على سبيل المثال، يحتوي رمز التخزين التعريفي التالي على
أشكال متعددة:
SKU = <product><device><modifierA><modifierB><modifierC>
modifierA
هو مستوى الجهاز (مثلاً Pro أو Premium أو Plus)- يُعد
modifierB
تنوع الأجهزة (مثل راديو) modifierC
هي المنطقة، التي يمكن أن تكون عامة. (مثل أمريكا الشمالية أو أوروبا والشرق الأوسط وأفريقيا أو الصين ) أو ملفات خاصة بكل بلد أو لغة (مثل اليابان، ENG أو CHN)
يستخدم العديد من المصنّعين الأصليين للأجهزة صورة واحدة لرموز تخزين تعريفية متعددة، ثم يحصلون على المنتج النهائي.
الاسم وبصمة الإصبع في وقت التشغيل بعد تشغيل الجهاز. هذه العملية
تبسيط عملية تطوير النظام الأساسي، وتمكين الأجهزة ذات البيانات الصغيرة
التخصيصات ولكن مع أسماء المنتجات المختلفة لمشاركة الصور الشائعة (مثل
tardis
وtardispro
).
استخدام بصمات الأصابع الديناميكية
بصمة الإصبع هي سلسلة محدّدة من عناصر البيانات
المَعلمات مثل
ro.product.brand
وro.product.name
وro.product.device
بصمة الإصبع
بيانات الجهاز مشتقًا من الملف المرجعي لقسم النظام وتُستخدم
معرّف فريد للصور (ووحدات البايت) التي تعمل على الجهاز. لإنشاء
بصمة الإصبع الديناميكية، يمكنك استخدام المنطق الديناميكي في ملف build.prop
الخاص بالجهاز من أجل
نحصل على قيمة متغيرات برنامج الإقلاع في وقت تشغيل الجهاز، ثم نستخدم هذه البيانات
إنشاء بصمة إصبع ديناميكية لهذا الجهاز.
على سبيل المثال، لاستخدام بصمات الأصابع الديناميكية لجهازَين tardis
وtardispro
:
قم بتحديث الملفات التالية كما هو موضح أدناه.
عدِّل ملف
odm/etc/build_std.prop
ليتضمّن السطر التالي.ro.odm.product.device=tardis
عدِّل ملف
odm/etc/build_pro.prop
ليتضمّن السطر التالي.ro.odm.product.device=tardispro
عدِّل ملف
odm/etc/build.prop
ليتضمّن الأسطر التالية.ro.odm.product.device=tardis import /odm/etc/build_${ro.boot.product.hardware.sku}.prop
تحدد هذه الخطوط بشكل ديناميكي اسم الجهاز وبصمة الإصبع
ro.build.fingerprint
من القيم بناءً على قيمة
سمة برنامج الإقلاع في ro.boot.product.hardware.sku
(للقراءة فقط)
تعديل البيانات الوصفية لحزمة الاتصال عبر الهواء
تتضمّن حزمة OTA ملف بيانات وصفية (META-INF/com/android/metadata
)
يصف الحزمة، بما في ذلك الشرط المسبق والحالة اللاحقة للتحديث الهوائي (OTA)
طرد. على سبيل المثال، الرمز التالي هو ملف البيانات الوصفية لحزمة OTA
الذي يستهدف جهاز tardis
.
post-build=google/tardis/tardis:11/RP1A.200521.001/6516341:userdebug/dev-keys
post-build-incremental=6516341
post-sdk-level=30
post-security-patch-level=2020-07-05
post-timestamp=1590026334
pre-build=google/tardis/tardis:11/RP1A.200519.002.A1/6515794:userdebug/dev-keys
pre-build-incremental=6515794
pre-device=tardis
تحدّد القيم pre-device
وpre-build-incremental
وpre-build
التي يجب أن يمتلكها الجهاز قبل أن تتمكن من تثبيت حزمة OTA. تشير رسالة الأشكال البيانية
تحدد القيمتان post-build-incremental
وpost-build
حالة الجهاز
بعد تثبيت حزمة OTA. قيم pre-
يتم اشتقاق حقول post-
من خصائص الإصدار المقابلة التالية.
- يتم استخراج قيمة
pre-device
من موقع الإصدارro.product.device
. - يتم استنتاج القيمتَين
pre-build-incremental
وpost-build-incremental
. من خاصية الإصدارro.build.version.incremental
. - يتم اشتقاق القيمتين
pre-build
وpost-build
من السمة موقع الإصدارro.build.fingerprint
.
على الأجهزة التي تعمل بنظام التشغيل Android 11 أو الإصدارات الأحدث، يمكنك استخدام
علامة --boot_variable_file
في أدوات OTA لتحديد مسار إلى ملف
يحتوي على قيم متغيرات بيئة التشغيل المستخدمة في إنشاء
بصمة الإصبع الديناميكية. يتم بعد ذلك استخدام البيانات لتحديث بيانات تعريف OTA لتضمين
اسم الجهاز وبصمة الإصبع في الشرطَين pre-
وpost-
(باستخدام
حرف الشرطة الرأسية | المُحدِّد). يتضمّن العلامة --boot_variable_file
السمة
بناء الجملة والوصف أدناه.
- البنية:
--boot_variable_file <path>
- الوصف: يحدد مسارًا إلى ملف يحتوي على القيم المحتملة
موقعان (
ro.boot.*
). يتم استخدام هذه البيانات لاحتساب الملفات المرجعية المحتملة لبيئة التشغيل. عند إلغاء بعض سماتro.product.*
من خلال عبارة import. يتوقع الملف خاصية واحدة في كل سطر حيث يحتوي كل سطر على ما يلي: التنسيق:prop_name=value1,value2
.
على سبيل المثال، عندما تكون الخاصية ro.boot.product.hardware.sku=std,pro
،
تظهر البيانات الوصفية لأجهزة OTA في أجهزة tardis
وtardispro
كما هو موضح أدناه.
post-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-device=tardis|tardispro
لإتاحة هذه الوظيفة على الأجهزة التي تعمل بنظام التشغيل Android 10، يمكنك الاطّلاع على المرجع
التنفيذ.
تحلّل قائمة التغييرات هذه عبارات import
بشكل مشروط في build.prop
.
، الذي يتيح التعرّف على إلغاءات الخصائص وإظهارها في
البيانات الوصفية النهائية عبر اتصال لاسلكي.