অ্যান্ড্রয়েড তৈরি করুন

অ্যান্ড্রয়েড তৈরি করতে এই পৃষ্ঠার নির্দেশাবলী অনুসরণ করুন।

আপনার বিল্ড পরিবেশ সেট আপ করুন

আপনার কাজের ডিরেক্টরির মধ্যে থেকে, আপনার বিল্ড পরিবেশ সেট আপ করতে envsetup.sh স্ক্রিপ্টটি উৎস করুন:

$ source build/envsetup.sh

এই স্ক্রিপ্টটি বেশ কয়েকটি কমান্ড আমদানি করে যা আপনাকে এই পৃষ্ঠায় ব্যবহৃত কমান্ড সহ Android সোর্স কোডের সাথে কাজ করতে দেয়। স্ক্রিপ্টের উৎস দেখতে, platform/build/envsetup.sh দেখুন। অন্তর্নির্মিত সাহায্য দেখতে, hmm টাইপ করুন।

একটি লক্ষ্য চয়ন করুন

অ্যান্ড্রয়েড তৈরি করার আগে, আপনাকে অবশ্যই নির্মাণের লক্ষ্য চিহ্নিত করতে হবে। নির্মাণের জন্য আপনার লক্ষ্য শনাক্ত করতে, lunch কমান্ডটি অনুসরণ করুন এবং একটি লক্ষ্য অনুসরণ করুন যা আপনার লক্ষ্য পণ্য এবং নির্মাণকে চিহ্নিত করে:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

বর্তমান লক্ষ্য দেখুন

বর্তমান লাঞ্চ সেটিংস দেখতে, চালান:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

টার্গেটের প্রতিনিধিত্বকারী স্ট্রিংটির নিম্নলিখিত বিন্যাস রয়েছে:

lunch product_name-release-build_variant

এই স্ট্রিং এর উপাদান হল:

  • product_name হল সেই পণ্যটির নাম যা আপনি তৈরি করতে চান, যেমন aosp_cf_x86_64_phone বা aosp_husky । আপনার নির্দিষ্ট product_name আপনার নিজস্ব ফর্ম্যাট অনুসরণ করতে পারে, কিন্তু Google যে বিন্যাসটি ব্যবহার করে তাতে এই উপাদানগুলি রয়েছে:

    • aosp অ্যান্ড্রয়েড ওপেন সোর্স প্ল্যাটফর্মকে বোঝায়।
    • (ঐচ্ছিক) cf অন্তর্ভুক্ত করা হয় যখন লক্ষ্যটি Cuttlefish এমুলেটরের মধ্যে চালানোর উদ্দেশ্যে করা হয়।
    • আর্কিটেকচার এবং হার্ডওয়্যার, যেমন x86_64_phone বা husky (Pixel 8 pro)।
  • release trunk-staging সেট করা হয়.

  • স্ট্রিংয়ের build_variant অংশটি নিম্নলিখিত টেবিলের তিনটি মানের মধ্যে একটি হতে পারে:

    build_variant বর্ণনা
    user এই বিল্ড বৈকল্পিক সীমিত নিরাপত্তা অ্যাক্সেস প্রদান করে এবং উৎপাদনের জন্য উপযুক্ত।
    userdebug এই বিল্ড ভেরিয়েন্টটি ডিভাইস ডেভেলপারদের ইন-ডেভেলপমেন্ট রিলিজের কর্মক্ষমতা এবং শক্তি বুঝতে সাহায্য করে। একটি userdebug বিল্ডের সাথে বিকাশ করার সময়, userdebug এর জন্য নির্দেশিকা অনুসরণ করুন।
    eng এই বিল্ড ভেরিয়েন্টের দ্রুত বিল্ড টাইম রয়েছে এবং আপনি যদি পারফরম্যান্স এবং পাওয়ারের বিষয়ে চিন্তা না করেন তবে এটি প্রতিদিনের বিকাশের জন্য সবচেয়ে উপযুক্ত।

কোড তৈরি করুন

আপনার লক্ষ্য তৈরি করতে নিম্নলিখিত কমান্ডটি চালান। আপনার ওয়ার্কস্টেশনের স্পেসিফিকেশনের উপর নির্ভর করে, প্রথম বিল্ডটি এক ঘন্টার কম এবং কয়েক ঘন্টা পর্যন্ত সময় নিতে পারে। পরবর্তী বিল্ডগুলি উল্লেখযোগ্যভাবে কম সময় নেয়।

$ m

প্রথম আউটপুটটি আপনার লক্ষ্য এবং বিল্ড পরিবেশের একটি সংক্ষিপ্তসার দেখতে হবে:

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================

m কমান্ডটি গাছের উপরে থেকে তৈরি হয়, তাই আপনি সাবডিরেক্টরি থেকে m চালাতে পারেন। আপনার যদি TOP এনভায়রনমেন্ট ভেরিয়েবল সেট থাকে, m কমান্ড এটি ব্যবহার করে। যদি TOP সেট করা না থাকে, m কমান্ডটি বর্তমান ডিরেক্টরি থেকে গাছের সন্ধান করে, গাছের শীর্ষটি খুঁজে বের করার চেষ্টা করে।

m কমান্ড একটি -jN আর্গুমেন্টের সাথে সমান্তরাল কাজগুলি পরিচালনা করতে পারে। আপনি যদি একটি -j যুক্তি প্রদান না করেন, বিল্ড সিস্টেম স্বয়ংক্রিয়ভাবে একটি সমান্তরাল টাস্ক কাউন্ট নির্বাচন করে যা এটি আপনার সিস্টেমের জন্য সর্বোত্তম বলে মনে করে।

আপনি আপনার m কমান্ড লাইনে মডিউল নাম তালিকাভুক্ত করে সম্পূর্ণ ডিভাইস চিত্রের পরিবর্তে নির্দিষ্ট মডিউল তৈরি করতে পারেন। উপরন্তু, m কমান্ড কিছু ছদ্ম লক্ষ্যমাত্রা প্রদান করে, যাকে গোল বলা হয়। উদাহরণস্বরূপ, m nothing কিছু তৈরি করে না, তবে বিল্ড স্ট্রাকচারকে পার্স করে এবং যাচাই করে। বৈধ লক্ষ্যের তালিকার জন্য, m help টাইপ করুন।

বিল্ড ত্রুটির সমস্যা সমাধান করুন (8.0 বা তার আগের)

আপনি যদি AOSP 8 বা তার আগে তৈরি করছেন, তাহলে আপনার জাভা সংস্করণে কোনো সমস্যার সম্মুখীন হলে m বন্ধ হয়ে যেতে পারে। উদাহরণস্বরূপ, আপনি এই বার্তা পেতে পারেন:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

এখানে সম্ভাব্য কারণ এবং সমাধান আছে:

  • আপনি AOSP ডেভেলপমেন্ট (2.3 - 8.0) এর জন্য সেট আপের JDK বিভাগে নির্দিষ্ট করা সঠিক JDK ইনস্টল করতে ব্যর্থ হয়েছেন।
  • আপনার পথে আরও একটি পূর্বে ইনস্টল করা JDK প্রদর্শিত হচ্ছে। আপনার পথের শুরুতে সঠিক JDK প্রিপেন্ড করুন বা সমস্যাযুক্ত JDK সরিয়ে দিন।