تتضمّن واجهة متصفّح WebRTC التلقائية لواجهة Cuttlefish لوحة تحكّم تتيح المزيد من الطرق للتفاعل مع الجهاز الافتراضي.
تعرض لوحة التحكم أزرارًا افتراضية لمحاكاة الإجراءات الفعلية الشائعة للأجهزة مثل زر التشغيل أو أزرار التحكّم بمستوى الصوت، بالإضافة إلى دوران الجهاز.
الإجراءات المخصّصة
يمكنك تخصيص لوحة التحكم لإضافة المزيد من الأزرار التي تتيح لجهازك الافتراضي محاكاة جهازك الفعلي عن كثب. يكون ذلك مفيدًا لاختبار الميزات الفريدة لجهازك، مثل زرّ جهاز أو إيماءة خاصة تؤدي إلى تنفيذ إجراء فريد في نظام التشغيل. يمكنك أيضًا استخدام الأزرار المخصّصة ل تفعيل اختبار المزيد من الميزات التي تركّز على تأكيد الجودة، مثل سلوك نظام التشغيل عندما يكون مستوى شحن البطارية في الجهاز منخفضًا.
تتضمن لوحة التحكم التلقائية لتطبيق حبَّار إمكانية تنفيذ إجراءات مخصّصة "لدمج" بدون الحاجة إلى تعديل مشروع AOSP الرئيسي على حبَّار. يجب أن يتضمّن جهازك الافتراضي الحد الأدنى من ملف الإعدادات لبدء استخدام الإجراءات المخصّصة. يُرجى الاطّلاع على مثال ملف إعداد الإجراء المخصّص هذا.
أنشئ ملف JSON يحدِّد الإجراءات المخصّصة لجهازك. يمكنك وضع هذا الملف في أي دليل تملك إذن الوصول إليه. يتم توضيح بنية هذا الملف في قسمَي ADB Shell وخادم الإجراءات.
أنشِئ وحدة
prebuilt_etc_host
لإعدادات JSON. تأكَّد من أنّ قيمةsub_dir
تساويcvd_custom_action_config
.prebuilt_etc_host { // Use any name you choose. name: "my_custom_action_config.json", src: "my_custom_action_config.json", // Always use this sub_dir. sub_dir: "cvd_custom_action_config", }
يمكنك ضبط متغيّرات تصميم تطبيق Askg في ملف تهيئة المنتج على جهازك لضبط حزمة مضيف الجهاز الافتراضي من أجل تضمين ملف إعداد الإجراء المخصّص.
# Set these variables exactly as shown here to enable the host package to see # your custom config module name. SOONG_CONFIG_NAMESPACES += cvd SOONG_CONFIG_cvd += custom_action_config # Set this value to the name of your JSON module. SOONG_CONFIG_cvd_custom_action_config := my_custom_action_config.json
تتوفّر طريقتان متوافقتان لتنفيذ إجراء مخصّص:
- أمر ADB Shell
- خادم الإجراء
يمكن أن يحدِّد ملف الإعدادات بتنسيق JSON عدّة نُسخ من كل نوع من عمليات التنفيذ.
أمر shell في ADB
يمكنك تحديد زر واحد يتم تنفيذه من خلال تنفيذ أمر adb
shell
واحد. على سبيل المثال، يحدِّد المقتطف التالي من تنسيق JSON زرًا واحدًا
يشغِّل صفحة ويب:
{
"shell_command":"am start -a android.intent.action.VIEW -d https://www.android.com/",
"button":{
"command":"web",
"title":"Web Page",
"icon_name":"language"
}
}
الحقول هي:
shell_command
: الأمر الذي يتم تنفيذه فيadb shell
عند الضغط على الزرbutton
: عنصر بزر واحد مع الحقول الفرعية التالية:command
: اسم فريد لهذا الزرtitle
: عنوان نص بديل لهذا الزرicon_name
: اسم رمز من https://material.io/resources/icons
خادم الإجراء
تتيح خوادم الإجراءات مزيدًا من التحكم في سلوك الإجراءات. خادم الإجراءات هو برنامج ثنائي المضيف يرصد أحداث الضغط على الأزرار من WebRTC باستخدام زوج مقابس. يعيد WebRTC توجيه الأحداث إلى خادم الإجراءات، ثم يحدِّد خادم الإجراءات كيفية تنفيذ الإجراء.
تسمح لك خوادم الإجراءات بإمكانية التحكّم بشكل أفضل، مثل الحفاظ على الحالة (مثل لحدث قابل للتبديل) أو حتى تنفيذ "إجراءات ميتافورتية" مثل إغلاق الجهاز الحالي أو تشغيل المزيد من الأجهزة أو بدء ميزة تسجيل الشاشة في ملحق المتصفّح. تقتصر الاحتمالات فقط على ما تقرر تنفيذه داخل البرنامج الثنائي للمضيف.
ويحدِّد مقتطف JSON التالي خادم الإجراء الذي يرصد الأحداث على زرَّين:
{
"server":"cuttlefish_example_action_server",
"buttons":[
{
"command":"settings",
"title":"Quick Settings",
"icon_name":"settings"
},
{
"command":"alert",
"title":"Do Not Disturb",
"icon_name":"notifications_paused"
}
]
}
الحقول هي:
server
: اسم الوحدة الثنائية للمضيفbuttons
: مصفوفة من الأزرار تتضمن الحقول الفرعية نفسها على النحو الوارد أعلاه
بعد تعديل إعدادات JSON، أضِف اسم وحدة خادم الإجراءات إلى متغيّر إصدار إعداد تطبيق Sayg cvd_custom_action_servers
. مثلاً:
# Append to this variable exactly as shown here.
SOONG_CONFIG_cvd += custom_action_servers
# Append the name of your action server(s) to this variable.
SOONG_CONFIG_cvd_custom_action_servers += cuttlefish_example_action_server
يجب أن ينفِّذ كل برنامج ثنائي لمضيف خادم إجراء الخطوات التالية:
اقبل رقم واصف ملف المقبس كوسيطة البرنامج الأولى والوحيدة.
تم إنشاء هذا المقبس بواسطة
launch_cvd
باستخدامsocketpair
مع النطاقAF_LOCAL
، والنوعSOCK_STREAM
والبروتوكول 0.في التكرار الحلقي، حاول قراءة 128 بايت من المقبس. تحتوي وحدات البايت هذه على أحداث ضغط على الأزرار أرسلها برنامج WebRTC بالتنسيق
command:state
. يتم توفيرcommand
في إعدادات JSON، وstate
هي حالة الضغط على الزر (down
أوup
).اتّخاذ إجراء بشأن الأحداث الواردة لمحاكاة الإجراء المخصّص