Cuttlefish'in varsayılan WebRTC tarayıcı arayüzünde, sanal cihazla etkileşim için daha fazla yol sağlayan bir kontrol paneli bulunur.
Kontrol paneli, cihaz döndürmenin yanı sıra güç düğmesi veya ses düğmeleri gibi yaygın fiziksel cihaz işlemlerini simüle eden varsayılan düğmeler içerir.
Özel işlemler
Kontrol panelini özelleştirerek sanal cihazınızın fiziksel cihazınızı daha iyi taklit etmesini sağlayan daha fazla düğme ekleyebilirsiniz. Bu, işletim sisteminde benzersiz bir işlemi tetikleyen donanım düğmesi veya özel hareket gibi cihazınıza özgü özellikleri test etmek için yararlıdır. Cihazın pil seviyesi düştüğünde işletim sisteminizin davranışı gibi daha fazla kalite güvencesi odaklı özelliği test etmek için özel düğmeler de kullanabilirsiniz.
Varsayılan Mürekkep balığı kontrol paneli, ana Cuttlefish AOSP projesini değiştirmeye gerek kalmadan özel işlemleri "ekleme" desteği içerir. Özel işlemleri kullanmaya başlamak için sanal cihazınızın yalnızca minimum bir yapılandırma dosyası içermesi gerekir. Bu örnek özel işlem yapılandırma dosyasına bakın.
Cihazınızın özel işlemlerini tanımlayan bir JSON dosyası oluşturun. Bu dosyayı sahip olduğunuz herhangi bir dizine yerleştirebilirsiniz. Bu dosyanın yapısı ADB kabuğu ve İşlem sunucusu bölümlerinde açıklanmaktadır.
JSON yapılandırmanız için bir
prebuilt_etc_host
modülü oluşturun.sub_dir
değerinincvd_custom_action_config
değerine eşit olduğundan emin olun.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", }
Sanal cihaz ana makine paketini özel işlem yapılandırma dosyanızı içerecek şekilde yapılandırmak için cihazınızın ürün makefile'inde Soong yapılandırma derleme değişkenlerini ayarlayın.
# 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
Özel işlem uygulamak için desteklenen iki yöntem vardır:
- ADB kabuk komutu
- İşlem sunucusu
JSON yapılandırma dosyanız, her uygulama türünün birden çok örneğini tanımlayabilir.
ADB kabuk komutu
Tek bir adb
shell
komutu çalıştırılarak uygulanan tek bir düğme tanımlayabilirsiniz. Örneğin, aşağıdaki JSON snippet'i bir web sayfasını açan tek bir düğmeyi tanımlar:
{
"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üğmeye basıldığındaadb shell
konumunda yürütülecek komutbutton
: Aşağıdaki alt alanlara sahip tek bir düğme nesnesi:command
: Bu düğme için benzersiz bir adtitle
: Bu düğme için alternatif metin başlığıicon_name
: https://material.io/resources/icons adresindeki bir simgenin adı
İşlem sunucusu
İşlem sunucuları, işlemlerinizin davranışı üzerinde daha fazla kontrol sahibi olmanızı sağlar. İşlem sunucusu, bir soket çifti kullanarak WebRTC'den gelen düğme basma etkinliklerini dinleyen bir ana makine ikilisidir. WebRTC, etkinlikleri işlem sunucusuna yönlendirir. Daha sonra, işlemin nasıl uygulanacağına işlem sunucusu karar verir.
İşlem sunucuları, durumu koruma (ör. açma/kapatma düğmeli bir etkinlik için) veya mevcut cihazı kapatma, daha fazla cihaz başlatma ya da ekran kaydı tarayıcı uzantısı başlatma gibi "meta işlemleri" çalıştırma gibi daha güçlü bir denetim sağlar. Olasılıklar yalnızca ana makine ikili dosyası içinde neleri uygulamaya karar verdiğinizle sınırlıdır.
Aşağıdaki JSON snippet'i, iki düğmedeki etkinlikleri dinleyen bir işlem sunucusu tanımlar:
{
"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şkenine cvd_custom_action_servers
ekleyin. Ö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:
İlk ve tek program bağımsız değişkeni olarak bir soket dosya tanımlayıcı numarası kabul eder.
Bu yuva,
AF_LOCAL
alan adı,SOCK_STREAM
türü ve protokol 0 ilesocketpair
kullanılaraklaunch_cvd
tarafından oluşturuldu.Bir döngüde, yuvadan 128 bayt okumaya çalışın. Bu baytlar, WebRTC istemcisi tarafından
command:state
biçiminde gönderilen düğmeye basma etkinliklerini içerir.command
, JSON yapılandırmasında sağlandığı şekildedir vestate
, düğmeye basma durumudur (down
veyaup
).Özel işlemi simüle etmek için gelen etkinliklere göre işlem yapın.