Mürekkep balığı kontrol paneli

Cuttlefish'in varsayılan WebRTC tarayıcı arayüzünde bir kontrol paneli bulunur sanal cihazla etkileşimde bulunmanın daha fazla yolunu sağlar.

Kontrol paneli, ortak kullanılan fiziksel cihazların simülasyonunu sağlayan varsayılan düğmeler içerir güç düğmesi veya ses düğmeleri gibi işlemler ve cihaz döndürme gibi işlemler yapmanıza olanak tanır.

Özel işlemler

Sanal makinelerinize erişim sağlayan daha fazla düğme eklemek için gerçekleştirebilirsiniz. Bu, yakın bir zamanda donanım düğmesi veya özel hareket gibi cihazınıza özgü özellikler işletim sisteminde benzersiz bir işlemi tetikleyen Özel düğmeleri kullanarak da OS'inizin davranışı gibi daha fazla kalite güvencesi odaklı özelliği test etmenize olanak tanır. cihazın pil seviyesi düşük.

Varsayılan Mürekkep balığı kontrol paneli, özel ana Mürekkep balığı AOSP projesini değiştirmeye gerek kalmadan aynı işlemi gerçekleştirme. Sizin kullanmaya başlamak için yalnızca minimum düzeyde bir yapılandırma dosyası içermesi gerekir. özel işlemler. Bunu göster örnek özel işlem yapılandırma dosyası.

  1. Cihazınızın özel işlemlerini tanımlayan bir JSON dosyası oluşturun. Şunları koyabilirsiniz: bu dosyayı, sahibi olduğunuz herhangi bir dizinde bulabilirsiniz. Bu dosyanın yapısı, ADB kabuğu ve İşlem sunucusu bölümlerinden erişebilirsiniz.

  2. JSON yapılandırmanız için bir prebuilt_etc_host modülü oluşturun. Lütfen sub_dir, cvd_custom_action_config değerine eşit.

    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. Cihazınızın ürün oluşturma dosyasında Shortg yapılandırma derleme değişkenlerini şu şekilde ayarlayın: sanal cihaz ana makine paketini özel işleminizi içerecek şekilde yapılandırın yapılandırma dosyası.

    # 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
    
ziyaret edin.

Özel bir işlem uygulamak için desteklenen iki yöntem vardır:

  • ADB kabuk komutu
  • İşlem sunucusu

JSON yapılandırma dosyanız, her hakkında bilgi edindiniz.

ADB kabuk komutu

Tek bir adb shell komutu çalıştırarak, uygulanacak tek bir düğme tanımlayabilirsiniz. Örneğin, aşağıdaki JSON snippet'i tek bir düğme tanımlar bir web sayfasını açan:

{
  "shell_command":"am start -a android.intent.action.VIEW -d https://www.android.com/",
  "button":{
      "command":"web",
      "title":"Web Page",
      "icon_name":"language"
  }
}

Alanlar:

  • shell_command: Düğme şu durumda olduğunda adb shell konumunda yürütülecek komut: basıldı
  • button: Aşağıdaki alt alanlara sahip tek bir düğme nesnesi:
    • command: Bu düğme için benzersiz bir ad
    • title: Bu düğme için alternatif metin başlığı
    • icon_name: Şu kaynaktan bir simgenin adı: https://material.io/resources/icons

İşlem sunucusu

İşlem sunucuları, işlemlerinizin davranışı üzerinde daha fazla kontrol sağlar. İşlem sunucu, bir API kullanarak WebRTC'den düğme basma etkinliklerini dinleyen bir ana makine ikili programıdır soket çiftidir. WebRTC, etkinlikleri işlem sunucusuna yönlendirir ve ardından işlem sunucusu, işlemin nasıl uygulanacağına karar verir.

İşlem sunucuları, durum (ör. için) oluşturabilir, hatta "meta işlemleri" çalıştırarak Mesela onu öldürmek mevcut cihazı kullanma, daha fazla cihaz başlatma veya ekran kaydı tarayıcısı başlatma uzantısına sahip olur. Olasılıklar yalnızca uygulamaya karar verdiğiniz öğelerle sınırlıdır arasında yer alır.

Aşağıdaki JSON snippet'i, iki düğme:

{
  "server":"cuttlefish_example_action_server",
  "buttons":[
    {
      "command":"settings",
      "title":"Quick Settings",
      "icon_name":"settings"
    },
    {
      "command":"alert",
      "title":"Do Not Disturb",
      "icon_name":"notifications_paused"
    }
  ]
}

Alanlar:

  • server: Ana makine ikili modülünüzün adı
  • buttons: Yukarıdakiyle aynı alt alanlara sahip düğme dizisi

JSON yapılandırmasını güncelledikten sonra işlem sunucusu modülünün adını Shortg yapılandırma derleme değişkeni cvd_custom_action_servers. Örnek:

# 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

Her işlem sunucusu ana makine ikili programı aşağıdaki adımları gerçekleştirmelidir:

  1. İlk ve tek program olarak bir yuva dosyası tanımlayıcı numarasını kabul edin bağımsız değişkeninin önüne geçer.

    Bu yuva, launch_cvd tarafından alan adıyla socketpair kullanılarak oluşturuldu AF_LOCAL, SOCK_STREAM türü ve 0 protokolü.

  2. Bir döngüde, yuvadan 128 bayt okumaya çalışın. Bu baytlar WebRTC istemcisi tarafından gönderilen düğmeye basma etkinliklerini şu biçimde içermelidir: command:state command, JSON yapılandırmasında sağlandığı gibi ve state: düğme basma durumuna (down veya up) basın.

  3. Özel işlemi simüle etmek için gelen etkinlikler üzerinde işlem yapın.

ziyaret edin.