27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main
yerine android-latest-release
kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Mürekkepbalığı: Özel cihaz oluşturma
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bu sayfada, özelleştirilmiş bir Mürekkep Balığı cihazının nasıl oluşturulacağı açıklanmaktadır. Mürekkepbalığı, AndroidProducts.mk
bölümünde listelenen farklı form faktörlerinde önceden tanımlanmış cihaz türlerini içerir. Yeni cihaz ekleme bölümünde açıklanan genel cihaz özelleştirme seçeneklerine ek olarak, sanal cihaz kartı yapılandırma hazır ayarları (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), çekirdek hazır ayarları, önyükleme yükleyici hazır ayarları, tedarikçi firma özellikleri, sistem yapılandırmaları, iç içe yerleştirilmiş sanallaştırma desteği ve görüntüleme seçenekleri gibi Cuttlefish'e özgü özelleştirmeler yapabilirsiniz. Özelleştirilebilen derleme zamanı parametrelerinin tam listesi için device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk
bölümüne bakın.
Aşağıdaki adımlarda, sıradan bir Mürekkep Balığı cihazının on katı büyüklüğünde kurgusal bir x86-64 big_phone
cihazının nasıl oluşturulacağı açıklanmaktadır.
Mevcut bir hedeften devralma
Mevcut bir hedeften devralmak için:
- Bir
device/google/cuttlefish/vsoc_x86_64/big_phone
dizin oluşturun.
- Bu dizinde bir
aosp_cf.mk
dosyası oluşturun.
$(call inherit-product, device/google/cuttlefish/vsoc_x86_64_phone.mk)
PRODUCT_NAME: big_phone
PRODUCT_DEVICE: vsoc_x86_64
PRODUCT_MANUFACTURER := My Company
PRODUCT_MODEL: My Company very large phone
PRODUCT_VENDOR_PROPERTIES += \
ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
ro.soc.model=$(PRODUCT_DEVICE)
Öğle yemeği hedefi ekleme
lunch
hedefini device/google/cuttlefish/AndroidProducts.mk
dosyasına ekleyin:
PRODUCT_MAKEFILES := \
...
big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
...
lunch big_phone
JSON yapılandırmasını tanımlama
Cuttlefish cihazını başlatmak için cihaz özelliklerini temsil eden hiyerarşik bir yapıya sahip big_phone.json
adlı bir JSON yapılandırma dosyası oluşturun. Örneğin, JSON yapılandırma dosyasında sanal makine için ayrılan RAM ve ekran yapılandırması gibi seçenekleri belirtebilirsiniz. Bu dosyanın AOSP ağacında olması gerekmez.
Yapılandırmalar için JSON biçimi hakkında ayrıntılı bilgi edinmek istiyorsanız Kurallı yapılandırmalar başlıklı makaleyi inceleyin.
{
"instances":
[
{
"vm": {
"memory_mb": 40960,
},
"graphics": {
"displays": [
{
"width": 7200,
"height": 12800,
"dpi": 320
}
]
}
}
]
}
Yapılandırmayı başlatmak için şu komutu çalıştırın:
cvd create --config_file=big_phone.json
launch_cvd (eski) komutunu çalıştırma
Belirli yapılandırma özellikleri, hiyerarşik JSON yapılandırma biçiminde kullanılamaz. Bu tür yapılandırmalar için tek düzeyli bir JSON sözlüğünden launch_cvd
işareti varsayılan değerlerini ayarlayabilirsiniz. Tüm yapılandırma seçeneklerinin tam listesi için cf_flags_validator.cpp
bölümüne bakın.
Aşağıda, JSON yapılandırma dosyası kullanılarak launch_cvd
işaret seçeneklerinin varsayılan değerlerinin nasıl geçersiz kılınacağı ve Cuttlefish başlatıcısının özel yapılandırmayı başlatması için nasıl etkinleştirileceği açıklanmaktadır.
Özel değerler içeren bir JSON yapılandırma dosyası device/google/cuttlefish/shared/config/config_big_phone.json
oluşturun.
{
"x_res": 7200,
"y_res": 12800,
"dpi": 320,
"memory_mb": 40960,
"ddr_mem_mb": 49150,
}
Cuttlefish başlatıcısının big_phone
yapılandırmasını başlatması için aşağıdakileri yaparak device/google/cuttlefish/shared/config/config_big_phone.json
dosyasına erişebildiğinden emin olun:
device/google/cuttlefish/shared/config/Android.bp
dosyasına prebuilt_etc_host
kıtasını ekleyerek JSON yapısını bir derleme yapısı olarak tanımlayın.
prebuilt_etc_host {
name: "cvd_config_big_phone.json",
src: "config_big_phone.json",
sub_dir: "cvd_config",
}
Elde edilen derleme yapı bildirimini device/google/cuttlefish/shared/device.mk
'te aşağıdakileri çalıştırarak Cuttlefish başlatıcısına ekleyin.
$(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
Bir android_info.txt
dosyası oluşturun ve device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk
dosyasına aşağıdaki satırı ekleyerek big_phone
yapılandırmasını dosyaya bağlayın:
TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt
değerini aşağıdakilerle doldurarak cihaz türünü big_phone
yapılandırmasıyla etiketleyin:
config=big_phone
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Cuttlefish: Create a custom device\n\nThis page describes how to create a customized Cuttlefish device. Cuttlefish\nincludes predefined device types in different form factors as listed in\n[`AndroidProducts.mk`](https://cs.android.com/android/platform/superproject/+/android-latest-release:device/google/cuttlefish/AndroidProducts.mk). In addition to the general device customization\noptions described in\n[Adding a new device](/docs/setup/create/new-device), you can make\nCuttlefish-specific customizations such as virtual device board\nconfiguration presets (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), kernel prebuilts,\nbootloader prebuilts, vendor properties, system configurations, nested\nvirtualization support, and display options. For a full list of the\nbuild time parameters that can be customized, see\n[`device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk`](https://cs.android.com/android/platform/superproject/+/android-latest-release:device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk).\n\nThe following steps describe how to create a fictional x86-64\n\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e device ten times the size of an ordinary\nCuttlefish device.\n\nInherit from an existing target\n-------------------------------\n\nTo inherit from an existing target:\n\n- Create a `device/google/cuttlefish/vsoc_x86_64/`\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e directory.\n- Create an `aosp_cf.mk` file in that directory.\n\n $(call inherit-product, device/google/cuttlefish/vsoc_x86_64_phone.mk)\n\n PRODUCT_NAME: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003ebig_phone\u003c/span\u003e\u003c/var\u003e\n PRODUCT_DEVICE: vsoc_x86_64\n PRODUCT_MANUFACTURER := \u003cvar translate=\"no\"\u003eMy\u003cspan class=\"devsite-syntax-w\"\u003e \u003c/span\u003eCompany\u003c/var\u003e\n PRODUCT_MODEL: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eMy\u003c/span\u003e \u003cspan class=\"devsite-syntax-n\"\u003eCompany\u003c/span\u003e \u003cspan class=\"devsite-syntax-n\"\u003every\u003c/span\u003e \u003cspan class=\"devsite-syntax-n\"\u003elarge\u003c/span\u003e \u003cspan class=\"devsite-syntax-n\"\u003ephone\u003c/span\u003e\u003c/var\u003e\n\n PRODUCT_VENDOR_PROPERTIES += \\\n ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \\\n ro.soc.model=$(PRODUCT_DEVICE)\n\nAdd a lunch target\n------------------\n\nInsert the `lunch` target into the\n`device/google/cuttlefish/AndroidProducts.mk` file: \n\n PRODUCT_MAKEFILES := \\\n ...\n \u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e:$(LOCAL_DIR)/vsoc_x86_64/\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e/aosp_cf.mk\n ...\n\n lunch \u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e\n\nDefine JSON configuration\n-------------------------\n\nTo launch the Cuttlefish device, create a JSON configuration file named\n\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e`.json` with a hierarchical structure representing\nthe device properties. For example, in the JSON configuration file, you can\nspecify options such as the RAM allocated for the VM and the display\nconfiguration. This file doesn't have to be in the AOSP tree.\nFor details on the JSON format for configurations, see\n[Canonical configurations](/docs/devices/cuttlefish/multi-tenancy#canonical-configs). \n\n {\n \"instances\":\n [\n {\n \"vm\": {\n \"memory_mb\": 40960,\n },\n \"graphics\": {\n \"displays\": [\n {\n \"width\": 7200,\n \"height\": 12800,\n \"dpi\": 320\n }\n ]\n }\n }\n ]\n }\n\nTo launch the configuration, run: \n\n cvd create --config_file=\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e.json\n\nRun launch_cvd (legacy)\n-----------------------\n\nCertain configuration properties aren't available in the hierarchical JSON\nconfiguration format. For such configurations, you can set `launch_cvd` flag\ndefault values from a single-level JSON dictionary. For a full list of all\nconfiguration options, see\n[`cf_flags_validator.cpp`](https://github.com/google/android-cuttlefish/blob/main/base/cvd/cuttlefish/host/commands/cvd/parser/cf_flags_validator.cpp).\n\nThe following describes an example of how to override the default values of the\n[`launch_cvd` flag options](/docs/devices/cuttlefish/restart#flags)\nusing a JSON configuration file and enable the Cuttlefish launcher to launch the\ncustom configuration.\n\n1. Create a JSON configuration file,\n `device/google/cuttlefish/shared/config/config_`\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e`.json`,\n with custom values.\n\n {\n \"x_res\": 7200,\n \"y_res\": 12800,\n \"dpi\": 320,\n \"memory_mb\": 40960,\n \"ddr_mem_mb\": 49150,\n }\n\n2. For the Cuttlefish launcher to launch the `big_phone` config, ensure it has\n access to the\n `device/google/cuttlefish/shared/config/config_`\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e`.json`\n file by doing the following:\n\n 1. Declare the JSON artifact as a build artifact by adding the\n `prebuilt_etc_host` stanza in the\n `device/google/cuttlefish/shared/config/Android.bp` file.\n\n prebuilt_etc_host {\n name: \"cvd_config_\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e.json\",\n src: \"config_\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e.json\",\n sub_dir: \"cvd_config\",\n }\n\n 2. Add the resulting build artifact declaration into the Cuttlefish\n launcher by running the following in\n `device/google/cuttlefish/shared/device.mk`.\n\n $(call soong_config_append,cvd,launch_configs,cvd_config_\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e)\n\n 3. Create an `android_info.txt` file and tie the `big_phone` config to the\n file by adding the following line to\n `device/google/cuttlefish/vsoc_x86_64/`\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e`/aosp_cf.mk`:\n\n TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/\u003cvar\u003ebig_phone\u003c/var\u003e/android-info.txt\n\n 4. Label the device type with the `big_phone` config by populating\n `device/google/cuttlefish/vsoc_x86_64/`\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e`/android-info.txt`\n with the following:\n\n config=\u003cvar translate=\"no\"\u003ebig_phone\u003c/var\u003e"]]