Cuttlefish: একটি কাস্টম ডিভাইস তৈরি করুন

এই পৃষ্ঠায় একটি কাস্টমাইজড কাটলফিশ ডিভাইস তৈরি করার পদ্ধতি বর্ণনা করা হয়েছে। কাটলফিশে AndroidProducts.mk এ তালিকাভুক্ত বিভিন্ন ফর্ম ফ্যাক্টরের পূর্বনির্ধারিত ডিভাইসের ধরন অন্তর্ভুক্ত রয়েছে। "একটি নতুন ডিভাইস যোগ করা" অংশে বর্ণিত সাধারণ ডিভাইস কাস্টমাইজেশন বিকল্পগুলো ছাড়াও, আপনি কাটলফিশ-নির্দিষ্ট কাস্টমাইজেশন করতে পারেন, যেমন ভার্চুয়াল ডিভাইস বোর্ড কনফিগারেশন প্রিসেট (vsoc_x86_64, vsoc_arm64, vsoc_riscv64), কার্নেল প্রি-বিল্ট, বুটলোডার প্রি-বিল্ট, ভেন্ডর প্রোপার্টি, সিস্টেম কনফিগারেশন, নেস্টেড ভার্চুয়ালাইজেশন সাপোর্ট এবং ডিসপ্লে অপশন। যে সমস্ত বিল্ড টাইম প্যারামিটার কাস্টমাইজ করা যায় তার সম্পূর্ণ তালিকার জন্য device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk দেখুন।

নিম্নলিখিত ধাপগুলিতে একটি কাল্পনিক x86-64 big_phone ডিভাইস তৈরি করার পদ্ধতি বর্ণনা করা হয়েছে, যা একটি সাধারণ Cuttlefish ডিভাইসের আকারের দশগুণ।

বিদ্যমান লক্ষ্য থেকে উত্তরাধিকার সূত্রে গ্রহণ করুন

বিদ্যমান কোনো টার্গেট থেকে উত্তরাধিকার সূত্রে পেতে:

  • device/google/cuttlefish/vsoc_x86_64/ big_phone নামে একটি ডিরেক্টরি তৈরি করুন।
  • ওই ডিরেক্টরিতে একটি aosp_cf.mk ফাইল তৈরি করুন।
$(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)

দুপুরের খাবারের লক্ষ্য যোগ করুন

device/google/cuttlefish/AndroidProducts.mk ফাইলে lunch টার্গেটটি যুক্ত করুন:

PRODUCT_MAKEFILES := \
  ...
  big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
  ...
lunch big_phone

JSON কনফিগারেশন সংজ্ঞায়িত করুন

Cuttlefish ডিভাইসটি চালু করতে, big_phone .json নামে একটি JSON কনফিগারেশন ফাইল তৈরি করুন, যেখানে ডিভাইসের বৈশিষ্ট্যগুলো একটি স্তরক্রমিক কাঠামোতে বিন্যস্ত থাকবে। উদাহরণস্বরূপ, JSON কনফিগারেশন ফাইলে আপনি VM-এর জন্য বরাদ্দকৃত RAM এবং ডিসপ্লে কনফিগারেশনের মতো অপশনগুলো নির্দিষ্ট করতে পারেন। এই ফাইলটি AOSP ট্রি-তে থাকার কোনো প্রয়োজন নেই। কনফিগারেশনের JSON ফরম্যাট সম্পর্কে বিস্তারিত জানতে, Canonical configurations দেখুন।

{
  "instances":
      [
        {
          "vm": {
            "memory_mb": 40960,
          },
          "graphics": {
            "displays": [
              {
                "width": 7200,
                "height": 12800,
                "dpi": 320
              }
            ]
          }
        }
      ]
}

কনফিগারেশনটি চালু করতে, চালান:

cvd create --config_file=big_phone.json

launch_cvd (পুরানো সংস্করণ) চালান

কিছু নির্দিষ্ট কনফিগারেশন প্রোপার্টি হায়ারারকিক্যাল JSON কনফিগারেশন ফরম্যাটে পাওয়া যায় না। এই ধরনের কনফিগারেশনের জন্য, আপনি একটি একক-স্তরের JSON ডিকশনারি থেকে launch_cvd ফ্ল্যাগের ডিফল্ট মান সেট করতে পারেন। সমস্ত কনফিগারেশন অপশনের সম্পূর্ণ তালিকার জন্য, cf_flags_validator.cpp দেখুন।

নিম্নলিখিতে একটি JSON কনফিগারেশন ফাইল ব্যবহার করে launch_cvd ফ্ল্যাগ অপশনগুলির ডিফল্ট মান ওভাররাইড করার এবং কাস্টম কনফিগারেশন চালু করার জন্য Cuttlefish লঞ্চারকে সক্ষম করার একটি উদাহরণ বর্ণনা করা হয়েছে।

  1. কাস্টম মান দিয়ে device/google/cuttlefish/shared/config/config_ big_phone .json একটি JSON কনফিগারেশন ফাইল তৈরি করুন।

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. Cuttlefish লঞ্চার যাতে big_phone কনফিগটি চালু করতে পারে, তার জন্য নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করে device/google/cuttlefish/shared/config/config_ big_phone .json ফাইলটিতে এর অ্যাক্সেস আছে কিনা তা নিশ্চিত করুন:

    1. device/google/cuttlefish/shared/config/Android.bp ফাইলে prebuilt_etc_host স্ট্যানজাটি যোগ করে JSON আর্টিফ্যাক্টটিকে একটি বিল্ড আর্টিফ্যাক্ট হিসেবে ঘোষণা করুন।

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. device/google/cuttlefish/shared/device.mk ফাইলে নিম্নলিখিত কমান্ডটি চালিয়ে প্রাপ্ত বিল্ড আর্টিফ্যাক্ট ডিক্লারেশনটি কাটলফিশ লঞ্চারে যোগ করুন।

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. একটি android_info.txt ফাইল তৈরি করুন এবং device/google/cuttlefish/vsoc_x86_64/ big_phone /aosp_cf.mk এ নিম্নলিখিত লাইনটি যোগ করে big_phone কনফিগারেশনটি ফাইলটির সাথে সংযুক্ত করুন:

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. device/google/cuttlefish/vsoc_x86_64/ big_phone /android-info.txt নিম্নলিখিত তথ্য দিয়ে পূরণ করে big_phone কনফিগ ব্যবহার করে ডিভাইসের ধরণটি চিহ্নিত করুন:

      config=big_phone