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

Android নির্মাণ শুরু করতে এই নির্দেশাবলী অনুসরণ করুন।

পরিবেশ স্থাপন করা

envsetup.sh স্ক্রিপ্ট দিয়ে পরিবেশ শুরু করুন:

source build/envsetup.sh

বা

. build/envsetup.sh

প্ল্যাটফর্ম/build/envsetup.sh- এ স্ক্রিপ্টটি দেখুন সংশ্লিষ্ট কমান্ডের বর্ণনার জন্য, যার মধ্যে ডিভাইস লক্ষ্য নির্বাচনের জন্য লাঞ্চ এবং আনবান্ডেড অ্যাপ তৈরির জন্য ট্যাপস , যেমন রেফারেন্স টিভি অ্যাপ

প্রতিটি repo sync পরে সেই স্ক্রিপ্টে যেকোনো পরিবর্তন নিতে আপনাকে এই কমান্ডটি পুনরায় জারি করতে হবে। মনে রাখবেন যে source সাথে প্রতিস্থাপন করুন . (একটি একক বিন্দু) কয়েকটি অক্ষর সংরক্ষণ করে এবং সংক্ষিপ্ত ফর্মটি ডকুমেন্টেশনে বেশি ব্যবহৃত হয়।

envsetup.sh স্ক্রিপ্টটি বেশ কয়েকটি কমান্ড আমদানি করে যা আপনাকে এই অনুশীলনে ব্যবহৃত কমান্ড সহ Android সোর্স কোডের সাথে কাজ করতে সক্ষম করে।

উপলব্ধ কমান্ডের সম্পূর্ণ তালিকা দেখতে, চালান:

hmm

একটি লক্ষ্য নির্বাচন

মধ্যাহ্নভোজ

lunch সাথে কোন টার্গেট তৈরি করবেন তা বেছে নিন। lunch product_name - build_variant product_name হিসেবে বেছে নেয় এবং build_variant তৈরি করার জন্য ভেরিয়েন্ট হিসেবে বেছে নেয়, এবং পরবর্তীতে m এবং অন্যান্য অনুরূপ কমান্ডের আহ্বানের মাধ্যমে পড়ার জন্য সেই নির্বাচনগুলিকে পরিবেশে সংরক্ষণ করে।

সঠিক কনফিগারেশন একটি যুক্তি হিসাবে পাস করা যেতে পারে. উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি এমুলেটরের জন্য একটি সম্পূর্ণ বিল্ড বোঝায়, সমস্ত ডিবাগিং সক্ষম সহ:

lunch aosp_arm-eng

কোনো যুক্তি ছাড়াই চালানো হলে, lunch আপনাকে মেনু থেকে একটি লক্ষ্য বেছে নিতে অনুরোধ করে, কিন্তু মনে রাখবেন যে মেনুতে প্রতিটি সম্ভাবনা অন্তর্ভুক্ত নয়। AOSP-এ সমর্থিত সমস্ত ডিভাইসের বিল্ড কনফিগারেশনের জন্য একটি ডিভাইস বিল্ড নির্বাচন করা দেখুন, অথবা আপনি যে ডিভাইসে কাজ করছেন তার জন্য সঠিক মধ্যাহ্নভোজ সম্পর্কে আপনার দলের লোকেদের সাথে কথা বলুন।

সমস্ত বিল্ড টার্গেট BUILD-BUILDTYPE ফর্ম নেয়, যেখানে BUILD হল একটি কোডনাম যা নির্দিষ্ট বৈশিষ্ট্যের সমন্বয়কে নির্দেশ করে। BUILDTYPE নিম্নলিখিতগুলির মধ্যে একটি।

বিল্ড টাইপ ব্যবহার করুন
ব্যবহারকারী সীমিত প্রবেশ; উত্পাদনের জন্য উপযুক্ত
userdebug ব্যবহারকারীর মতো কিন্তু রুট অ্যাক্সেস এবং ডিবাগ ক্ষমতা সহ; উত্পাদন কর্মক্ষমতা খুব কাছাকাছি
eng দ্রুত বিল্ড সময়ের সাথে উন্নয়ন কনফিগারেশন; দৈনন্দিন উন্নয়নের জন্য সবচেয়ে উপযুক্ত

userdebug বিল্ডটি user বিল্ডের মতোই আচরণ করা উচিত, অতিরিক্ত ডিবাগিং সক্ষম করার ক্ষমতা সহ যা সাধারণত প্ল্যাটফর্মের নিরাপত্তা মডেল লঙ্ঘন করে। এটি userdebug রিলিজের দ্বারা ব্যবহৃত কর্মক্ষমতা এবং শক্তি বোঝার জন্য ভাল করে তোলে। userdebug বিল্ডের সাথে বিকাশ করার সময়, userdebug নির্দেশিকা অনুসরণ করুন।

প্ল্যাটফর্মে কাজ করা প্রকৌশলীদের জন্য eng বিল্ড ইঞ্জিনিয়ারিং উৎপাদনশীলতাকে অগ্রাধিকার দেয়। eng বিল্ড রানটাইম কর্মক্ষমতা সর্বাধিক করতে ব্যবহৃত বিভিন্ন অপ্টিমাইজেশান বন্ধ করে। অন্যথায়, eng বিল্ড user এবং userdebug বিল্ডগুলির সাথে খুব মিল যাতে ডিভাইস বিকাশকারীরা দেখতে পারে যে কোডটি সেই পরিবেশে কীভাবে আচরণ করে।

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

echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

প্রকৃত হার্ডওয়্যারের জন্য নির্মাণ এবং চালানো সম্পর্কে আরও তথ্যের জন্য, ফ্ল্যাশিং ডিভাইসগুলি দেখুন।

তাপস

tapas কমান্ডটি আনবান্ডেড অ্যাপের বিল্ড কনফিগার করে। এটি অ্যান্ড্রয়েড বিল্ড সিস্টেম দ্বারা নির্মিত পৃথক অ্যাপ্লিকেশন নির্বাচন করে। lunch বিপরীতে, tapas একটি ডিভাইসের জন্য ছবি তৈরির অনুরোধ করে না।

কমান্ড সম্পর্কে আরও তথ্যের জন্য tapas help চালান।

কোড বিল্ডিং

সেটআপ সম্পূর্ণ হয়েছে তা নিশ্চিত করার জন্য এই বিভাগটি একটি দ্রুত সারাংশ।

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

m

উপরে ব্যাখ্যা করা হয়েছে, আপনি আপনার m কমান্ড লাইনে তাদের নাম তালিকাভুক্ত করে সম্পূর্ণ ডিভাইস চিত্রের পরিবর্তে নির্দিষ্ট মডিউল তৈরি করতে পারেন। উপরন্তু, m বিশেষ উদ্দেশ্যে কিছু pseudotargets প্রদান করে। কিছু উদাহরণ হল:

  • droid - m droid হল সাধারণ বিল্ড। এই টার্গেট এখানে আছে কারণ ডিফল্ট টার্গেটের একটি নাম প্রয়োজন।
  • all - m all সব কিছু তৈরি করে যা m droid করে, প্লাস যে সমস্ত কিছুতে droid ট্যাগ নেই। বিল্ড সার্ভার এটি চালায় যাতে গাছের মধ্যে থাকা সমস্ত কিছু এবং একটি Android.mk ফাইল তৈরি হয়।
  • m - গাছের উপরে থেকে রান তৈরি হয়। এটি দরকারী কারণ আপনি সাবডিরেক্টরি থেকে make চালাতে পারেন। আপনার যদি TOP পরিবেশ পরিবর্তনশীল সেট থাকে তবে এটি এটি ব্যবহার করে। যদি আপনি না করেন, এটি বর্তমান ডিরেক্টরি থেকে গাছের সন্ধান করে, গাছের শীর্ষটি খুঁজে বের করার চেষ্টা করে। আপনি যুক্তি ছাড়াই m চালিয়ে পুরো সোর্স কোড ট্রি তৈরি করতে পারেন অথবা তাদের নাম উল্লেখ করে নির্দিষ্ট লক্ষ্যগুলি তৈরি করতে পারেন।
  • mma - বর্তমান ডিরেক্টরির সমস্ত মডিউল এবং তাদের নির্ভরতা তৈরি করে।
  • mmma - সরবরাহকৃত ডিরেক্টরিতে সমস্ত মডিউল এবং তাদের নির্ভরতা তৈরি করে।
  • croot - cd গাছের উপরে।
  • clean - m clean এই কনফিগারেশনের জন্য সমস্ত আউটপুট এবং মধ্যবর্তী ফাইল মুছে দেয়। এটি rm -rf out/ এর মতই।

অন্যান্য pseudotargets m প্রদান করে তা দেখতে m help চালান।

নির্মাণ চলমান

আপনি হয় একটি এমুলেটরে আপনার বিল্ড চালাতে পারেন বা এটি একটি ডিভাইসে ফ্ল্যাশ করতে পারেন। যেহেতু আপনি ইতিমধ্যেই lunch সাথে আপনার বিল্ড টার্গেট নির্বাচন করেছেন, এটির জন্য এটি তৈরি করা হয়েছিল তার থেকে ভিন্ন টার্গেটে চালানোর সম্ভাবনা কম।

ফাস্টবুট দিয়ে ঝলকানি

একটি ডিভাইস ফ্ল্যাশ করতে, fastboot ব্যবহার করুন, যা সফল বিল্ড করার পরে আপনার পাথে অন্তর্ভুক্ত করা উচিত। নির্দেশাবলীর জন্য একটি ডিভাইস ফ্ল্যাশিং দেখুন।

একটি Android ডিভাইস অনুকরণ

বিল্ড প্রক্রিয়ার মাধ্যমে এমুলেটরটি স্বয়ংক্রিয়ভাবে আপনার পাথে যুক্ত হয়। এমুলেটর চালানোর জন্য, টাইপ করুন:

emulator

বিল্ড ফিঙ্গারপ্রিন্ট বোঝা

একটি নির্দিষ্ট Android বিল্ডের সাথে সম্পর্কিত সমস্যাগুলি ট্র্যাক করতে এবং রিপোর্ট করতে, বিল্ড ফিঙ্গারপ্রিন্ট বোঝা গুরুত্বপূর্ণ। বিল্ড ফিঙ্গারপ্রিন্ট হল একটি অনন্য, মানব-পাঠযোগ্য স্ট্রিং যাতে প্রতিটি বিল্ডে জারি করা প্রস্তুতকারকের তথ্য থাকে। সুনির্দিষ্ট সিনট্যাক্সের জন্য অ্যান্ড্রয়েড সামঞ্জস্যতা সংজ্ঞা দস্তাবেজ (CDD) এর বিল্ড প্যারামিটার বিভাগের মধ্যে ফিঙ্গারপ্রিন্টের বিবরণ দেখুন।

বিল্ড ফিঙ্গারপ্রিন্ট একটি নির্দিষ্ট Android বাস্তবায়ন এবং সংশোধন প্রতিনিধিত্ব করে। এই অনন্য কী অ্যাপ ডেভেলপারদের এবং অন্যদেরকে নির্দিষ্ট ফার্মওয়্যার সংস্করণের সাথে সমস্যাগুলি রিপোর্ট করার অনুমতি দেয়৷ অ্যান্ড্রয়েড সমস্যা-রিপোর্টিং প্রক্রিয়ার জন্য রিপোর্টিং বাগ দেখুন।

একটি বিল্ড ফিঙ্গারপ্রিন্ট সমস্ত অ্যান্ড্রয়েড বাস্তবায়নের বিবরণ এনক্যাপসুলেট করে:

  • এপিআই: অ্যান্ড্রয়েড এবং নেটিভ, সেইসাথে নরম এপিআই আচরণ
  • কোর API এবং কিছু সিস্টেম UI আচরণ
  • CDD-এ সংজ্ঞায়িত সামঞ্জস্য এবং নিরাপত্তা প্রয়োজনীয়তা
  • প্রোডাক্ট স্পেসিফিকেশন এবং প্রত্যাশিত প্রয়োজনীয়তা পূরণ করার জন্য ডিভাইসগুলিকে লক্ষ্য করার জন্য অ্যাপস দ্বারা নিযুক্ত ব্যবহার-বৈশিষ্ট্য সেটিং
  • হার্ডওয়্যার এবং সফ্টওয়্যার উপাদান বাস্তবায়ন

সম্পূর্ণ বিশদ বিবরণের জন্য CDD দেখুন এবং একটি সম্পূর্ণ নতুন Android ডিভাইস তৈরির নির্দেশাবলীর জন্য একটি নতুন ডিভাইস যোগ করুন

সাধারণ বিল্ড ত্রুটির সমস্যা সমাধান করা

ভুল জাভা সংস্করণ

আপনি যদি অ্যান্ড্রয়েডের এমন একটি সংস্করণ তৈরি করার চেষ্টা করছেন যা আপনার জাভা সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়, তাহলে একটি বার্তা দিয়ে বাতিল make যেমন:

************************************************************
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
************************************************************

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

কোনো USB অনুমতি নেই

বেশিরভাগ লিনাক্স সিস্টেমে ডিফল্টরূপে, সুবিধাবঞ্চিত ব্যবহারকারীরা USB পোর্ট অ্যাক্সেস করতে পারে না। আপনি যদি একটি অনুমতি অস্বীকার ত্রুটি দেখতে পান, তাহলে USB অ্যাক্সেস কনফিগার করার নির্দেশাবলী অনুসরণ করুন।

যদি ADB ইতিমধ্যেই চলমান থাকে এবং সেই নিয়মগুলি সেট আপ করার পরে ডিভাইসের সাথে সংযোগ করতে না পারে তবে আপনি adb kill-server দিয়ে এটিকে মেরে ফেলতে পারেন৷ এই কমান্ডের কারণে ADB নতুন কনফিগারেশনের সাথে পুনরায় চালু করতে পারে।