לוח בקרה של דיונון

ממשק דפדפן WebRTC ברירת המחדל עבור Cuttlefish כולל לוח בקרה המאפשר דרכים נוספות לתקשר עם המכשיר הוירטואלי.

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

פעולות מותאמות אישית

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

לוח הבקרה של Cuttlefish ברירת המחדל כולל תמיכה ל"חיבור" של פעולות מותאמות אישית ללא צורך בשינוי פרויקט ה-Cuttlefish AOSP הראשי . המכשיר הוירטואלי שלך צריך לכלול רק קובץ תצורה מינימלי כדי להתחיל להשתמש בפעולות מותאמות אישית. ראה דוגמה זו של קובץ תצורה של פעולה מותאמת אישית .

  1. צור קובץ JSON שמגדיר את הפעולות המותאמות אישית של המכשיר שלך. אתה יכול לשים את הקובץ הזה בכל ספרייה שבבעלותך. המבנה של קובץ זה מתואר בסעיפים של מעטפת ADB ו- Action Server .

  2. צור מודול 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",
    }
    
  3. הגדר משתני בנייה של Soong config בקובץ makefile המוצר של המכשיר שלך כדי להגדיר את חבילת המארח של המכשיר הווירטואלי כך שתכלול את קובץ תצורת הפעולה המותאם אישית שלך.

    # 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
  • שרת פעולה

קובץ התצורה של JSON שלך יכול להגדיר מספר מופעים של כל סוג של יישום.

פקודת מעטפת 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, הוסף את השם של מודול שרת הפעולה למשתנה ה-building Config של Soong 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

כל מארח בינארי של שרת פעולה צריך לבצע את השלבים הבאים:

  1. קבל מספר מתאר קובץ socket כארגומנט התוכנית הראשון והיחיד.

    שקע זה נוצר על ידי launch_cvd באמצעות socketpair עם תחום AF_LOCAL , סוג SOCK_STREAM ופרוטוקול 0.

  2. בלולאה, נסה לקרוא 128 בתים מהשקע. בתים אלה מכילים אירועי לחיצה על כפתור שנשלחו על ידי לקוח WebRTC בפורמט command:state . command היא כפי שסופקה בתצורת JSON, state הוא מצב הלחיצה על הכפתור ( down או up ).

  3. פעל בהתאם לאירועים הנכנסים כדי לדמות את הפעולה המותאמת אישית.