कटलफ़िश कंट्रोल पैनल

कटलफ़िश के लिए डिफ़ॉल्ट WebRTC ब्राउज़र इंटरफ़ेस में एक कंट्रोल पैनल शामिल है इसकी मदद से, वर्चुअल डिवाइस से इंटरैक्ट करने के ज़्यादा तरीके मिलते हैं.

नियंत्रण कक्ष में सामान्य भौतिक डिवाइस को सिम्युलेट करने के लिए डिफ़ॉल्ट बटन होते हैं कार्रवाइयां, जैसे कि पावर बटन या आवाज़ कम या ज़्यादा करने का बटन. साथ ही, डिवाइस को घुमाना.

पसंद के मुताबिक की जाने वाली कार्रवाइयां

आप कंट्रोल पैनल को कस्टमाइज़ करके ऐसे और बटन जोड़ सकते हैं जो आपके वर्चुअल आपके डिवाइस को फिर से एम्युलेट कर सकें. यह टेस्ट करने में काम आता है आपके डिवाइस की खास सुविधाएं, जैसे कि हार्डवेयर बटन या हाथ के खास जेस्चर जो ओएस में किसी खास कार्रवाई को ट्रिगर करती है. कस्टम बटन इस्तेमाल करके ये काम भी किए जा सकते हैं QA पर फ़ोकस करने वाली सुविधाओं की जांच करनी होगी. जैसे, आपके ओएस का व्यवहार डिवाइस की बैटरी कम है.

डिफ़ॉल्ट कटलफ़िश कंट्रोल पैनल में, "प्लग इन" करने की सुविधा शामिल है पसंद के मुताबिक मुख्य कटलफ़िश एओएसपी प्रोजेक्ट में बदलाव किए बिना कार्रवाइयां की जा सकती हैं. आपका वर्चुअल डिवाइस का इस्तेमाल शुरू करने के लिए, उसमें सिर्फ़ एक कॉन्फ़िगरेशन फ़ाइल होनी चाहिए कस्टम ऐक्शन. इसे देखें उदाहरण के लिए कस्टम ऐक्शन कॉन्फ़िगरेशन फ़ाइल.

  1. ऐसी JSON फ़ाइल बनाएं जो आपके डिवाइस की कस्टम कार्रवाइयों के बारे में बताती हो. आप इस फ़ाइल को आपके स्वामित्व वाली किसी भी डायरेक्ट्री में डाल सकते हैं. इस फ़ाइल के स्ट्रक्चर के बारे में बताया गया है ADB शेल और ऐक्शन सर्वर सेक्शन में.

  2. अपने JSON कॉन्फ़िगरेशन के लिए, prebuilt_etc_host मॉड्यूल बनाएं. पक्का करें कि 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. अपने डिवाइस के प्रॉडक्ट की फ़ाइल में सूंग कॉन्फ़िगरेशन बिल्ड वैरिएबल को इस पर सेट करें: अपनी कस्टम कार्रवाई शामिल करने के लिए, वर्चुअल डिवाइस होस्ट पैकेज को कॉन्फ़िगर करें कॉन्फ़िगरेशन फ़ाइल है.

    # 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 कॉन्फ़िगरेशन को अपडेट करने के बाद, ऐक्शन सर्वर मॉड्यूल का नाम इसमें जोड़ें सूंग कॉन्फ़िगरेशन बिल्ड वैरिएबल 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. सॉकेट फ़ाइल डिस्क्रिप्टर नंबर को पहले और सिर्फ़ एक प्रोग्राम के तौर पर स्वीकार करें तर्क है.

    यह सॉकेट launch_cvd ने डोमेन के साथ socketpair का उपयोग करके बनाया है AF_LOCAL, टाइप SOCK_STREAM, और प्रोटोकॉल 0.

  2. लूप में, सॉकेट से 128 बाइट पढ़ने की कोशिश करें. ये बाइट WebRTC क्लाइंट से भेजे जाने वाले बटन दबाने पर इवेंट इस फ़ॉर्मैट में होने चाहिए command:state. command जैसा कि JSON कॉन्फ़िगरेशन में दिया गया है, और state है बटन दबाने की स्थिति (down या up).

  3. कस्टम ऐक्शन को सिम्युलेट करने के लिए, आने वाले इवेंट पर कार्रवाई करें.