AAPT2 (Android Asset Packaging Tool) হল একটি বিল্ড টুল যা Android Studio এবং Android Gradle Plugin আপনার অ্যাপের রিসোর্স কম্পাইল এবং প্যাকেজ করার জন্য ব্যবহার করে। AAPT2 রিসোর্সগুলিকে একটি বাইনারি ফর্ম্যাটে পার্স, সূচী এবং কম্পাইল করে যা Android প্ল্যাটফর্মের জন্য অপ্টিমাইজ করা হয়েছে।
 Android Gradle Plugin 3.0.0 এবং উচ্চতর সংস্করণগুলি ডিফল্টরূপে AAPT2 সক্ষম করে। সাধারণত আপনাকে নিজে aapt2 ব্যবহার করতে হয় না। তবে, যদি আপনি Android Studio এর পরিবর্তে আপনার টার্মিনাল এবং আপনার নিজস্ব বিল্ড সিস্টেম ব্যবহার করতে চান, তাহলে আপনি কমান্ড লাইন থেকে AAPT2 ব্যবহার করতে পারেন। আপনি কমান্ড লাইন থেকে AAPT2 সম্পর্কিত বিল্ড ত্রুটিগুলিও ডিবাগ করতে পারেন। এটি করার জন্য, Android SDK Build Tools 26.0.2 এবং উচ্চতর সংস্করণগুলিতে AAPT2 কে একটি স্বতন্ত্র টুল হিসাবে খুঁজুন।
 কমান্ড লাইন থেকে Android SDK বিল্ড টুলস ডাউনলোড করতে, sdkmanager ব্যবহার করুন এবং নিম্নলিখিত কমান্ডটি চালান:
sdkmanager "build-tools;build-tools-version"
 SDK বিল্ড টুলস ডাউনলোড করার পর, android_sdk /build-tools/ version / এ AAPT2 খুঁজুন।
যেহেতু Android SDK বিল্ড টুলসের সংশোধনগুলি প্রায়শই প্রকাশিত হয় না, তাই আপনার SDK বিল্ড টুলস-এ অন্তর্ভুক্ত AAPT2 এর সংস্করণটি সর্বশেষ নাও হতে পারে। AAPT2 এর সর্বশেষ সংস্করণ পেতে, Google Maven থেকে AAPT2 ডাউনলোড করুন ।
 লিনাক্স বা ম্যাকে কমান্ড লাইন থেকে AAPT2 ব্যবহার করতে, aapt2 কমান্ডটি চালান। উইন্ডোজে, aapt2.exe কমান্ডটি চালান।
AAPT2 ইনক্রিমেন্টাল কম্পাইলেশন সক্ষম করে রিসোর্সের দ্রুত সংকলন সমর্থন করে। ইনক্রিমেন্টাল কম্পাইলেশন সম্পন্ন করার জন্য, রিসোর্স প্রক্রিয়াকরণ দুটি ধাপে বিভক্ত করা হয়:
- কম্পাইল : রিসোর্স ফাইলগুলিকে বাইনারি ফর্ম্যাটে কম্পাইল করে।
 - লিঙ্ক : সমস্ত কম্পাইল করা ফাইল একত্রিত করে এবং একটি একক প্যাকেজে প্যাকেজ করে।
 
এই বিভাজন ক্রমবর্ধমান বিল্ডের কর্মক্ষমতা উন্নত করতে সাহায্য করে। উদাহরণস্বরূপ, যদি একটি ফাইলে পরিবর্তন থাকে, তাহলে আপনাকে কেবল সেই ফাইলটি পুনরায় কম্পাইল করতে হবে।
গুগল ম্যাভেন থেকে AAPT2 ডাউনলোড করুন
AAPT2 এর নতুন সংস্করণটি পেতে যা বিল্ড টুলে বান্ডেল করা নেই, Google এর Maven সংগ্রহস্থল থেকে AAPT2 ডাউনলোড করুন নিম্নরূপ:
- রিপোজিটরি ইনডেক্সে , com.android.tools.build > aapt2 এ নেভিগেট করুন।
 - AAPT2 এর সর্বশেষ সংস্করণের নাম কপি করুন।
 নিম্নলিখিত URL-এ আপনার কপি করা সংস্করণের নামটি প্রবেশ করান এবং আপনার লক্ষ্য অপারেটিং সিস্টেমটি নির্দিষ্ট করুন: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/ aapt2-version /aapt2- aapt2-version - [windows | linux | osx] .jar
উদাহরণস্বরূপ, উইন্ডোজের জন্য 3.2.0-alpha18-4804415 সংস্করণ ডাউনলোড করতে, ব্যবহার করুন: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/ 3.2.0-alpha18-4804415 /aapt2- 3.2.0-alpha18-4804415 - উইন্ডোজ .jar
ব্রাউজারে URL-এ যান। AAPT2 শীঘ্রই ডাউনলোড শুরু হবে।
আপনার ডাউনলোড করা JAR ফাইলটি আনপ্যাক করুন।
JAR ফাইলটিতে একটি
aapt2এক্সিকিউটেবল এবং কিছু লাইব্রেরি থাকা উচিত যার উপর এক্সিকিউটেবল নির্ভর করে।
কম্পাইল করুন
 AAPT2 সকল ধরণের অ্যান্ড্রয়েড রিসোর্স , যেমন ড্রয়েবল এবং XML ফাইলের সংকলন সমর্থন করে। যখন আপনি সংকলনের জন্য AAPT2 ব্যবহার করেন, তখন প্রতি ইনভোকেশনের জন্য একটি একক রিসোর্স ফাইল ইনপুট হিসাবে পাস করুন। AAPT2 তারপর ফাইলটি পার্স করে এবং .flat এক্সটেনশন সহ একটি মধ্যবর্তী বাইনারি ফাইল তৈরি করে।
 সম্পূর্ণ ডিরেক্টরিগুলি পাস করার সময়, AAPT2 ডিরেক্টরির সমস্ত ফাইল পুনরায় কম্পাইল করে, এমনকি যখন শুধুমাত্র একটি রিসোর্স পরিবর্তিত হয়। যদিও আপনি --dir ফ্ল্যাগ ব্যবহার করে একাধিক রিসোর্স ফাইল ধারণকারী রিসোর্স ডিরেক্টরিগুলি AAPT2 তে পাস করতে পারেন, আপনি এইভাবে ক্রমবর্ধমান রিসোর্স সংকলনের সুবিধা পাবেন না।
সংকলনের জন্য আপনার প্রদত্ত ইনপুটের উপর ভিত্তি করে আউটপুট ফাইলের ধরণ ভিন্ন হতে পারে, যেমনটি নিম্নলিখিত টেবিলে দেখানো হয়েছে:
সারণি ১. সংকলনের জন্য ইনপুট এবং আউটপুট ফাইলের ধরণ
| ইনপুট | আউটপুট | 
|---|---|
 XML রিসোর্স ফাইল, যেমন String এবং Style , res/values/ ডিরেক্টরিতে অবস্থিত |  *.arsc.flat এক্সটেনশন সহ রিসোর্স টেবিল। | 
| অন্যান্য সমস্ত রিসোর্স ফাইল। |    এছাড়াও, সমস্ত PNG ফাইল ডিফল্টভাবে ক্রাঞ্চ করা হয় এবং   | 
AAPT2 আউটপুট ফাইলগুলি এক্সিকিউটেবল নয়, এবং আপনাকে পরবর্তীতে লিঙ্ক পর্বে এই বাইনারি ফাইলগুলিকে ইনপুট হিসাবে অন্তর্ভুক্ত করতে হবে যাতে একটি APK তৈরি করা যায়। তবে, জেনারেট করা APK ফাইলটি এমন এক্সিকিউটেবল নয় যা আপনি অবিলম্বে একটি অ্যান্ড্রয়েড ডিভাইসে স্থাপন করতে পারেন, কারণ এতে DEX ফাইল থাকে না এবং স্বাক্ষরিত হয় না।
সিনট্যাক্স কম্পাইল করুন
 compile ব্যবহারের জন্য সাধারণ বাক্য গঠন নিম্নরূপ:
aapt2 compile path-to-input-files [options] -o output-directory/
 নিম্নলিখিত উদাহরণে, AAPT2 values.xml এবং myImage.png নামের রিসোর্স ফাইলগুলিকে পৃথকভাবে কম্পাইল করে:
aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/
সারণি ১-এ দেখানো হয়েছে, আউটপুট ফাইলের নাম ইনপুট ফাইলের নাম এবং এর মূল ডিরেক্টরির নামের উপর নির্ভর করে।
 পূর্ববর্তী উদাহরণে যেখানে strings.xml ফাইলটি ইনপুট হিসেবে ব্যবহার করা হয়েছে, aapt2 স্বয়ংক্রিয়ভাবে আউটপুট ফাইলটির নাম values-en_strings.arsc.flat রাখে। তবে, drawable ডিরেক্টরিতে সংরক্ষিত কম্পাইল করা drawable ফাইলটির নাম drawable_img.png.flat ।
কম্পাইল অপশন
 compile কমান্ডের সাথে আপনি বেশ কয়েকটি বিকল্প ব্যবহার করতে পারেন, যেমনটি টেবিল ২-এ দেখানো হয়েছে:
সারণি ২। কমান্ড বিকল্পগুলি কম্পাইল করুন
| বিকল্প | বিবরণ | 
|---|---|
 -o path | কম্পাইল করা রিসোর্স(গুলি) এর আউটপুট পাথ নির্দিষ্ট করে। এটি একটি প্রয়োজনীয় পতাকা, কারণ আপনাকে অবশ্যই এমন একটি ডিরেক্টরির পথ নির্দিষ্ট করতে হবে যেখানে AAPT2 সংকলিত সম্পদগুলি আউটপুট এবং সংরক্ষণ করতে পারে।  | 
 --dir directory | রিসোর্স স্ক্যান করার জন্য ডিরেক্টরিটি নির্দিষ্ট করে। যদিও আপনি এই ফ্ল্যাগটি একটি কমান্ডের মাধ্যমে একাধিক রিসোর্স ফাইল কম্পাইল করতে পারেন, এটি ক্রমবর্ধমান সংকলনের সুবিধাগুলিকে অক্ষম করে। অতএব, এই ফ্ল্যাগটি বড় প্রকল্পের জন্য ব্যবহার করা উচিত নয়।  | 
 --pseudo-localize |  ডিফল্ট স্ট্রিংগুলির ছদ্ম-স্থানীয় সংস্করণ তৈরি করে, যেমন en-XA এবং en-XB । | 
 --no-crunch |  PNG প্রক্রিয়াকরণ অক্ষম করে। যদি আপনি ইতিমধ্যেই PNG ফাইলগুলি প্রক্রিয়া করে থাকেন অথবা যদি আপনি এমন ডিবাগ বিল্ড তৈরি করেন যার জন্য ফাইলের আকার হ্রাস করার প্রয়োজন হয় না, তাহলে এই বিকল্পটি ব্যবহার করুন। এই বিকল্পটি সক্রিয় করলে দ্রুত কার্যকর করা সম্ভব হবে কিন্তু আউটপুট ফাইলের আকার বৃদ্ধি পাবে।  | 
 --legacy |  AAPT-এর পূর্ববর্তী সংস্করণগুলি ব্যবহার করার সময় অনুমোদিত ত্রুটিগুলিকে সতর্কতা হিসাবে বিবেচনা করে। অপ্রত্যাশিত কম্পাইল-টাইম ত্রুটির জন্য এই পতাকাটি ব্যবহার করা উচিত। AAPT2 ব্যবহার করার সময় ঘটতে পারে এমন পরিচিত আচরণগত পরিবর্তনগুলি সমাধান করতে, AAPT2 ব্যবহার করার সময় আচরণগত পরিবর্তনগুলি পড়ুন।  | 
 -zip file |  file হল একটি জিপ ফাইল যাতে রিসোর্স স্ক্যান করার জন্য res ডিরেক্টরি থাকে। | 
 -output-text-symbols file |  নির্দিষ্ট করা রিসোর্স প্রতীক ধারণকারী একটি টেক্সট ফাইল তৈরি করে | 
 -preserve-visibility-of-styleables | যদি নির্দিষ্ট করা থাকে, তাহলে স্টাইলেবলের জন্য একই দৃশ্যমানতা নিয়ম প্রযোজ্য হবে যা অন্যান্য সমস্ত রিসোর্সের জন্য ব্যবহৃত হয়। অন্যথায়, সমস্ত স্টাইলেবল সর্বজনীন করা হবে। | 
 -visibility [ public | private | default |] | সংকলিত সম্পদের দৃশ্যমানতা নির্দিষ্ট স্তরে সেট করে। | 
 -trace-folder folder |  নির্দিষ্ট করা একটি systrace JSON ট্রেস ফ্র্যাগমেন্ট তৈরি করে | 
 -source-path path |  কম্পাইল করা রিসোর্স ফাইলের সোর্স ফাইল পাথ সেট করে | 
 -h | সরঞ্জামগুলির সাহায্য প্রদর্শন করে। | 
 -v | ভার্বোজ লগিং সক্ষম করে। | 
লিংক
 লিঙ্ক পর্বে, AAPT2 সংকলন পর্বের তৈরি সমস্ত মধ্যবর্তী ফাইল, যেমন রিসোর্স টেবিল, বাইনারি XML ফাইল এবং প্রক্রিয়াজাত PNG ফাইলগুলিকে একত্রিত করে এবং তারপর ফাইলগুলিকে একটি একক APK-তে প্যাকেজ করে। অতিরিক্তভাবে, R.java এবং ProGuard রুলস ফাইলের মতো অন্যান্য সহায়ক ফাইলগুলি এই পর্বে তৈরি করা যেতে পারে। তবে, তৈরি হওয়া APK-তে DEX বাইটকোড থাকে না এবং এটি স্বাক্ষরবিহীন থাকে। আপনি এই APK কোনও ডিভাইসে স্থাপন করতে পারবেন না।
যদি আপনি কমান্ড লাইন থেকে আপনার অ্যাপ তৈরি করতে Android Gradle প্লাগইন ব্যবহার না করেন, তাহলে আপনি অন্যান্য কমান্ড-লাইন টুল ব্যবহার করতে পারেন, যেমন d8 জাভা বাইটকোডকে DEX বাইটকোডে কম্পাইল করতে এবং apksigner আপনার APK সাইন করতে।
লিঙ্ক সিনট্যাক্স
 link ব্যবহারের সাধারণ বাক্য গঠন নিম্নরূপ:
aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml
 নিম্নলিখিত উদাহরণে, AAPT2 দুটি মধ্যবর্তী ফাইল, drawable_Image.flat এবং values_values.arsc.flat এবং AndroidManifest.xml ফাইল একত্রিত করে। AAPT2 ফলাফলকে android.jar ফাইলের সাথে সংযুক্ত করে, যা android প্যাকেজে সংজ্ঞায়িত রিসোর্স ধারণ করে:
 aapt2 link -o output.apk
 -I android_sdk/platforms/android_version/android.jar
    compiled/res/values_values.arsc.flat
    compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
লিঙ্ক বিকল্পগুলি
 আপনি link কমান্ডের সাহায্যে নিম্নলিখিত বিকল্পগুলি ব্যবহার করতে পারেন:
সারণি ৩। লিঙ্ক কমান্ড বিকল্পগুলি
| বিকল্প | বিবরণ | 
|---|---|
 -o path | লিঙ্ক করা রিসোর্স APK-এর আউটপুট পাথ নির্দিষ্ট করে। এটি একটি প্রয়োজনীয় পতাকা, কারণ আপনাকে আউটপুট APK এর জন্য পথ নির্দিষ্ট করতে হবে যা লিঙ্ক করা রিসোর্সগুলিকে ধরে রাখতে পারে।  | 
 --manifest file | তৈরি করার জন্য অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলের পথ নির্দিষ্ট করে। এটি একটি প্রয়োজনীয় পতাকা, কারণ ম্যানিফেস্ট ফাইলটি আপনার অ্যাপ সম্পর্কে প্রয়োজনীয় তথ্য, যেমন প্যাকেজের নাম এবং অ্যাপ্লিকেশন আইডি অন্তর্ভুক্ত করে।  | 
 -I |  প্ল্যাটফর্মের  android নেমস্পেস সহ অ্যাট্রিবিউট ব্যবহার করলে এই ফ্ল্যাগটি প্রয়োজন । | 
 -A directory |  APK-তে অন্তর্ভুক্ত করার জন্য একটি সম্পদ ডিরেক্টরি নির্দিষ্ট করে। আপনি এই ডিরেক্টরিটি ব্যবহার করে আসল, অপ্রক্রিয়াজাত ফাইল সংরক্ষণ করতে পারেন। আরও জানতে, "অরিজিনাল ফাইল অ্যাক্সেস করা" পড়ুন।  | 
 -R file |  <add-resource> ট্যাগ ব্যবহার না করে overlay সেমান্টিক্স ব্যবহার করে link একটি পৃথক .flat ফাইল পাস করে।যখন আপনি একটি রিসোর্স ফাইল প্রদান করেন যা একটি বিদ্যমান ফাইলকে ওভারলে করে, তখন প্রদত্ত শেষ বিরোধপূর্ণ রিসোর্সটি ব্যবহার করা হয়।  | 
 --package-id package-id |  আপনার অ্যাপের জন্য ব্যবহার করার জন্য প্যাকেজ আইডি নির্দিষ্ট করে।  আপনার নির্দিষ্ট করা প্যাকেজ আইডি অবশ্যই 0x7f এর চেয়ে বড় বা সমান হতে হবে যদি না   | 
 --allow-reserved-package-id | একটি সংরক্ষিত প্যাকেজ আইডি ব্যবহারের অনুমতি দেয়।  সংরক্ষিত প্যাকেজ আইডি হল এমন আইডি যা সাধারণত শেয়ার্ড লাইব্রেরিতে বরাদ্দ করা হয় এবং 0x02 থেকে 0x7e পর্যন্ত হয়, যার মধ্যে রয়েছে   এই বিকল্পটি শুধুমাত্র ২৬ বা তার কম সংস্করণের   | 
 --java directory |  R.java তৈরি করার জন্য ডিরেক্টরিটি নির্দিষ্ট করে। | 
 --proguard proguard_options | ProGuard নিয়মের জন্য আউটপুট ফাইল তৈরি করে। | 
 --proguard-conditional-keep-rules | প্রধান DEX-এর জন্য ProGuard নিয়মের আউটপুট ফাইল তৈরি করে। | 
 --no-auto-version | স্বয়ংক্রিয় স্টাইল এবং লেআউট SDK সংস্করণ অক্ষম করে। | 
 --no-version-vectors | ভেক্টর ড্রয়েবলের স্বয়ংক্রিয় সংস্করণ অক্ষম করে। ভেক্টর ড্রয়েবল লাইব্রেরি দিয়ে আপনার APK তৈরি করার সময় শুধুমাত্র এই পতাকাটি ব্যবহার করুন। | 
 --no-version-transitions | ট্রানজিশন রিসোর্সের স্বয়ংক্রিয় সংস্করণ অক্ষম করে। ট্রানজিশন সাপোর্ট লাইব্রেরি দিয়ে আপনার APK তৈরি করার সময় শুধুমাত্র এই পতাকাটি ব্যবহার করুন। | 
 --no-resource-deduping | সামঞ্জস্যপূর্ণ কনফিগারেশন জুড়ে অভিন্ন মান সহ সম্পদের স্বয়ংক্রিয় ডি-ডুপ্লিকেশন অক্ষম করে। | 
 --enable-sparse-encoding | রিসোর্স এন্ট্রিগুলির স্পার্স এনকোডিং সক্ষম করে। এর ফলে APK আকার, মেমরি ব্যবহার এবং স্টার্টআপ লেটেন্সি হ্রাস পায় এবং স্টার্টআপের পরে পৃথক রিসোর্স লুকআপ সময় সামান্য বৃদ্ধি পায়। | 
 -z | 'প্রস্তাবিত' চিহ্নিত স্ট্রিংগুলির স্থানীয়করণ প্রয়োজন। | 
 -c config |  কমা দ্বারা পৃথক করা কনফিগারেশনের একটি তালিকা প্রদান করে। উদাহরণস্বরূপ, যদি আপনার সাপোর্ট লাইব্রেরির উপর নির্ভরতা থাকে, যেখানে একাধিক ভাষার অনুবাদ রয়েছে, তাহলে আপনি শুধুমাত্র প্রদত্ত ভাষা কনফিগারেশনের জন্য রিসোর্স ফিল্টার করতে পারেন, যেমন ইংরেজি বা স্প্যানিশ। আপনাকে ভাষা কনফিগারেশনটি দুই অক্ষরের ISO 639-1 ভাষা কোড দিয়ে সংজ্ঞায়িত করতে হবে, ঐচ্ছিকভাবে ছোট হাতের 'r' এর আগে দুটি অক্ষরের ISO 3166-1-alpha-2 অঞ্চল কোড ব্যবহার করতে হবে। উদাহরণস্বরূপ, en-rUS।  | 
 --preferred-density density |  AAPT2 কে নিকটতম মিলিত ঘনত্ব নির্বাচন করতে এবং অন্য সকলকে বাদ দিতে অনুমতি দেয়। আপনার অ্যাপে ব্যবহারের জন্য বেশ কয়েকটি পিক্সেল ঘনত্বের যোগ্যতা উপলব্ধ রয়েছে, যেমন ldpi, hdpi, এবং xhdpi। যখন আপনি একটি পছন্দসই ঘনত্ব নির্দিষ্ট করেন, তখন AAPT2 রিসোর্স টেবিলে সবচেয়ে কাছের মিলিত ঘনত্ব নির্বাচন করে এবং সংরক্ষণ করে এবং অন্য সকলকে সরিয়ে দেয়।  | 
 --output-to-dir |  APK বিষয়বস্তু -o দ্বারা নির্দিষ্ট একটি ডিরেক্টরিতে আউটপুট করে।এই ফ্ল্যাগ ব্যবহার করে যদি আপনার কোনও ত্রুটি দেখা দেয়, তাহলে আপনি Android SDK Build Tools 28.0.0 বা উচ্চতর সংস্করণে আপগ্রেড করে সেগুলি সমাধান করতে পারেন।  | 
 --min-sdk-version min-sdk-version |  AndroidManifest.xml এর জন্য ব্যবহার করার জন্য ডিফল্ট ন্যূনতম SDK সংস্করণ সেট করে। | 
 --target-sdk-version target-sdk-version |  AndroidManifest.xml এর জন্য ব্যবহার করার জন্য ডিফল্ট টার্গেট SDK সংস্করণ সেট করে। | 
 --version-code version-code |  যদি কোনও সংস্করণ কোড না থাকে, তাহলে AndroidManifest.xml এ কোন সংস্করণ কোডটি ইনজেক্ট করা হবে তা নির্দিষ্ট করে। | 
 --version-name version-name |  যদি কোনও সংস্করণ উপস্থিত না থাকে, তাহলে AndroidManifest.xml এ কোন সংস্করণের নাম ইনজেক্ট করা হবে তা নির্দিষ্ট করে। | 
 --revision-code revision-code |  যদি কোনওটি উপস্থিত না থাকে তবে AndroidManifest.xml ফাইলে ইনজেক্ট করার জন্য সংশোধন কোডটি নির্দিষ্ট করে। | 
 --replace-version |  যদি --version-code , --version-name , অথবা --revision-code নির্দিষ্ট করা থাকে, তাহলে এই মানগুলি ম্যানিফেস্টে ইতিমধ্যে থাকা যেকোনো মান প্রতিস্থাপন করে। ডিফল্টরূপে, যদি ম্যানিফেস্টে ইতিমধ্যেই এই বৈশিষ্ট্যগুলি সংজ্ঞায়িত করা থাকে তবে কিছুই পরিবর্তন হয় না। | 
 --compile-sdk-version-nacodeme compile-sdk-version-name |  যদি কোনও সংস্করণ কোড উপস্থিত না থাকে তবে AndroidManifest.xml ফাইলে কোন সংস্করণ কোডটি ইনজেক্ট করা হবে তা নির্দিষ্ট করে। | 
 --compile-sdk-version-name compile-sdk-version-name |  যদি কোনও সংস্করণ উপস্থিত না থাকে, তাহলে AndroidManifest.xml ফাইলে কোন সংস্করণটি ইনজেক্ট করা হবে তা নির্দিষ্ট করে। | 
 --proto-format |  প্রোটোবাফ ফরম্যাটে কম্পাইল করা রিসোর্স তৈরি করে।  একটি অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরির জন্য   | 
 --non-final-ids |  নন-ফাইনাল রিসোর্স আইডি সহ R.java তৈরি করে। kotlinc বা javac কম্পাইলেশনের সময় অ্যাপের কোড থেকে আইডির রেফারেন্স ইনলাইন করা হয় না। | 
 --emit-ids path |  প্রদত্ত পাথে একটি ফাইল নির্গত করে যেখানে রিসোর্সের ধরণের নাম এবং তাদের আইডি ম্যাপিংয়ের তালিকা থাকে। এটি --stable-ids সাথে ব্যবহারের জন্য উপযুক্ত। | 
 --stable-ids outputfilename.ext |  --emit-ids দিয়ে তৈরি ফাইলটি ব্যবহার করে যাতে রিসোর্সের ধরণের নাম এবং তাদের নির্ধারিত আইডির তালিকা থাকে।এই বিকল্পটি লিঙ্ক করার সময় আপনি যখন মুছে ফেলেন বা নতুন রিসোর্স যোগ করেন তখনও নির্ধারিত আইডিগুলিকে স্থিতিশীল রাখতে দেয়।  | 
 --custom-package package_name |  R.java তৈরি করার জন্য কাস্টম জাভা প্যাকেজ নির্দিষ্ট করে। | 
 --extra-packages package_name |  একই R.java ফাইল তৈরি করে, কিন্তু ভিন্ন প্যাকেজের নাম সহ। | 
 --add-javadoc-annotation annotation | সমস্ত জেনারেট করা জাভা ক্লাসে একটি JavaDoc টীকা যোগ করে। | 
 --output-text-symbols path |  নির্দিষ্ট ফাইলে R ক্লাসের রিসোর্স প্রতীক ধারণকারী একটি টেক্সট ফাইল তৈরি করে।আপনাকে আউটপুট ফাইলের পথ নির্দিষ্ট করতে হবে।  | 
 --auto-add-overlay |  <add-resource> ট্যাগ ব্যবহার না করেই ওভারলেতে নতুন রিসোর্স যোগ করার অনুমতি দেয়। | 
 --rename-manifest-package manifest-package |  AndroidManifest.xml ফাইলে প্যাকেজটির নাম পরিবর্তন করে। | 
 --rename-instrumentation-target-package instrumentation- target-package |  instrumentation জন্য লক্ষ্য প্যাকেজের নাম পরিবর্তন করে। এই বিকল্পটি   | 
 -0 extension | আপনি যে ফাইলগুলিকে সংকুচিত করতে চান না তার এক্সটেনশনগুলি নির্দিষ্ট করে।  | 
 --split path:config[,config[..]] |  APK-এর একটি ভিন্ন সংস্করণ তৈরি করতে কনফিগারেশনের একটি সেটের উপর ভিত্তি করে সম্পদগুলিকে বিভক্ত করে। আপনাকে কনফিগারেশনের সেটের সাথে আউটপুট APK-এর পথ নির্দিষ্ট করতে হবে।  | 
 --proguard-main-dex file | প্রধান DEX-এর জন্য তৈরি ProGuard নিয়মের আউটপুট ফাইল। | 
 --proguard-minimal-keep-rules | ProGuard রাখার নিয়মের একটি ন্যূনতম সেট তৈরি করে। | 
 --no-resource-removal | ডিফল্ট ছাড়াই রিসোর্স স্বয়ংক্রিয়ভাবে অপসারণ অক্ষম করে। রানটাইম রিসোর্স ওভারলে প্যাকেজ তৈরি করার সময় শুধুমাত্র এই বিকল্পটি ব্যবহার করুন। | 
 -x | লিগ্যাসি পতাকা যা প্যাকেজ শনাক্তকারী 0x01 এর ব্যবহার নির্দিষ্ট করে। | 
 --product products-list | রাখার জন্য পণ্যের নামের একটি কমা দ্বারা পৃথক তালিকা নির্দিষ্ট করে। | 
 --no-xml-namespaces |  AndroidManifest.xml ফাইল থেকে XML নেমস্পেস প্রিফিক্স এবং URI তথ্য এবং res/* এ XML বাইনারিগুলি সরিয়ে দেয়। | 
 --shared-lib | একটি শেয়ার করা অ্যান্ড্রয়েড রানটাইম লাইব্রেরি তৈরি করে। | 
 --static-lib | একটি স্ট্যাটিক অ্যান্ড্রয়েড লাইব্রেরি তৈরি করে। | 
 --no-static-lib-packages | অ্যাপের প্যাকেজের অধীনে সমস্ত লাইব্রেরি রিসোর্স একত্রিত করে। | 
 --no-proguard-location-reference | প্রোগার্ড রুলস ফাইলগুলিকে সোর্স ফাইলের রেফারেন্স থাকা থেকে বিরত রাখে। | 
 --private-symbols package-name |  package-name ব্যক্তিগত প্রতীকের জন্য R.java তৈরি করার সময় ব্যবহার করা প্যাকেজের নাম নির্দিষ্ট করে। যদি নির্দিষ্ট না করা থাকে, তাহলে পাবলিক এবং ব্যক্তিগত প্রতীকগুলি অ্যাপের প্যাকেজের নাম ব্যবহার করে। | 
 --override-styles-instead-of-overlaying |  -R রিসোর্সে সংজ্ঞায়িত স্টাইলগুলিকে একত্রিত করার পরিবর্তে পূর্ববর্তী সংজ্ঞাগুলি প্রতিস্থাপন করে। | 
 --rename-resources-package package-name | রিসোর্স টেবিলে প্যাকেজটির নাম পরিবর্তন করে package-name করে। | 
 --no-compress | কোনও সম্পদ সংকুচিত করে না। | 
 --keep-raw-values | XML ফাইলগুলিতে raw অ্যাট্রিবিউটের মান সংরক্ষণ করে। | 
 --no-compress-regex regular-expression |  regular-expression সাথে মিলে যাওয়া এক্সটেনশনগুলিকে সংকুচিত করে না। লাইনের শেষে $ চিহ্ন ব্যবহার করুন। একটি কেস-সংবেদনশীল ECMAScript রেগুলার এক্সপ্রেশন ব্যাকরণ ব্যবহার করে। | 
 --warn-manifest-validation | ম্যানিফেস্ট ভ্যালিডেশন ত্রুটিগুলিকে সতর্কতা হিসেবে বিবেচনা করে। | 
 --exclude-configs qualifier[,qualifier[..]] | যেসব রিসোর্সে কনফিগারেশনে নির্দিষ্ট কোয়ালিফায়ার থাকে, তার মান বাদ দেয়। | 
 --debug-mode |  ম্যানিফেস্টের অ্যাপ্লিকেশন নোডে android:debuggable="true" সন্নিবেশ করায়, এমনকি প্রোডাকশন ডিভাইসেও অ্যাপ্লিকেশনটিকে ডিবাগযোগ্য করে তোলে। | 
 --strict-visibility | বিভিন্ন দৃশ্যমানতা স্তরের ওভারলেগুলিকে অনুমতি দেয় না। | 
 --exclude-sources | প্রোটোবাফ ফরম্যাটে রিসোর্স তৈরি করার সময় সোর্স ফাইলের তথ্য সিরিয়ালাইজ করে না। | 
 --trace-folder folder |  নির্দিষ্ট folder systrace JSON ট্রেস ফ্র্যাগমেন্ট তৈরি করে। | 
 --merge-only |  রিসোর্স রেফারেন্স যাচাই না করেই শুধুমাত্র রিসোর্সগুলিকে মার্জ করে। এই পতাকাটি শুধুমাত্র --static-lib পতাকার সাথে ব্যবহার করা উচিত। | 
 -h | সাহায্য মেনু প্রদর্শন করে। | 
 -v | আউটপুটের বর্ধিত ভার্বোসিটি সক্ষম করে। | 
ডাম্প
 link কমান্ড ব্যবহার করে আপনার তৈরি করা APK সম্পর্কে তথ্য প্রিন্ট করার জন্য dump ব্যবহার করা হয়।
সিনট্যাক্স ডাম্প করুন
 dump ব্যবহারের সাধারণ সিনট্যাক্স নিম্নরূপ:
aapt2 dump sub-command filename.apk [options]
নিম্নলিখিত উদাহরণটি নির্দিষ্ট APK এর রিসোর্স টেবিল থেকে কন্টেন্ট প্রিন্ট করে:
aapt2 dump resources output.apk
সাব-কমান্ড ডাম্প করুন
 dump কমান্ডের সাহায্যে নিম্নলিখিত সাব-কমান্ডগুলির মধ্যে একটি নির্দিষ্ট করুন:
সারণি ৪। সাব-কমান্ড ডাম্প করুন
| সাব-কমান্ড | বিবরণ | 
|---|---|
 apc | সংকলনের সময় তৈরি হওয়া AAPT2 কন্টেইনার (APC) এর বিষয়বস্তু প্রিন্ট করে। | 
 badging | APK এর ম্যানিফেস্ট থেকে নেওয়া তথ্য প্রিন্ট করে। | 
 configurations | APK-তে একটি রিসোর্স দ্বারা ব্যবহৃত প্রতিটি কনফিগারেশন প্রিন্ট করে। | 
 overlayable | APK এর ওভারলেযোগ্য রিসোর্স প্রিন্ট করে। | 
 packagename | APK এর প্যাকেজের নাম প্রিন্ট করে। | 
 permissions | APK এর ম্যানিফেস্ট থেকে নেওয়া অনুমতিগুলি প্রিন্ট করে। | 
 strings | APK এর রিসোর্স টেবিল স্ট্রিং পুলের বিষয়বস্তু প্রিন্ট করে। | 
 styleparents | APK-তে ব্যবহৃত স্টাইলের মূল উপাদানগুলি প্রিন্ট করে। | 
 resources | APK এর রিসোর্স টেবিলের বিষয়বস্তু প্রিন্ট করে। | 
 xmlstrings | APK এর কম্পাইল করা XML থেকে স্ট্রিং প্রিন্ট করে। | 
 xmltree | APK এর কম্পাইল করা XML এর একটি ট্রি প্রিন্ট করে। | 
ডাম্প বিকল্পগুলি
 dump সাথে নিম্নলিখিত বিকল্পগুলি ব্যবহার করুন:
সারণি ৫। ডাম্প বিকল্পগুলি
| বিকল্প | বিবরণ | 
|---|---|
 --no-values | রিসোর্স প্রদর্শনের সময় মানগুলির আউটপুট দমন করে। | 
 --file file | APK থেকে ডাম্প করার জন্য একটি ফাইলকে একটি আর্গুমেন্ট হিসেবে নির্দিষ্ট করে। | 
 -v | আউটপুটের ভার্বোসিটি বৃদ্ধি করে। | 
পার্থক্য
 দুটি APK তুলনা করতে এবং তাদের মধ্যে কোন পার্থক্য আছে কিনা তা সনাক্ত করতে diff ব্যবহার করুন।
ডিফ সিনট্যাক্স
 diff ব্যবহারের জন্য সাধারণ বাক্য গঠন নিম্নরূপ:
aapt2 diff first.apk second.apk
 diff কমান্ডের জন্য কোন বিকল্প নেই।
অপ্টিমাইজ করুন
 APK-তে প্যাকেজ করার আগে মার্জ করা রিসোর্স এবং resources.arsc এ অপ্টিমাইজেশন চালানোর জন্য optimize ব্যবহার করা হয়। এই অপ্টিমাইজেশন APK-এর আকার প্রায় 1-3% কমাতে পারে, যা ব্যবহৃত রিসোর্সের আকার এবং সংখ্যার উপর নির্ভর করে।
সিনট্যাক্স অপ্টিমাইজ করুন
 optimize ব্যবহারের জন্য সাধারণ বাক্য গঠন নিম্নরূপ:
aapt2 optimize options file[,file[..]]
 নিচের উদাহরণটি input.apk এর রিসোর্সগুলিকে অপ্টিমাইজ করে এবং output.apk এ একটি নতুন, অপ্টিমাইজ করা APK তৈরি করে। এটি সাধারণ ফ্ল্যাট টেবিল উপস্থাপনাকে আরও কমপ্যাক্ট উপস্থাপনা দিয়ে প্রতিস্থাপন করে, যার ফলে APK-এর আকার, মেমোরি ব্যবহার এবং স্টার্টআপ ল্যাটেন্সি হ্রাস পায় এবং স্টার্টআপের পরে পৃথক রিসোর্স লুকআপ সময় সামান্য বৃদ্ধি পায়। 
aapt2 optimize -o output.apk --enable-sparse-encoding input.apk
অপশনগুলি অপ্টিমাইজ করুন
 আপনি optimize সহ নিম্নলিখিত বিকল্পগুলি ব্যবহার করতে পারেন:
সারণি ৬। অপশনগুলি অপ্টিমাইজ করুন
| বিকল্প | বিবরণ | 
|---|---|
 -o path |  লিঙ্ক করা রিসোর্স APK-এর আউটপুট পাথ নির্দিষ্ট করে। এটি একটি প্রয়োজনীয় পতাকা, কারণ আপনাকে আউটপুট APK এর জন্য পথ নির্দিষ্ট করতে হবে যা লিঙ্ক করা রিসোর্সগুলিকে ধরে রাখতে পারে।  | 
 -d directory | স্প্লিটের জন্য আউটপুট ডিরেক্টরিতে যাওয়ার পথ নির্দিষ্ট করে। | 
 -x path | XML কনফিগারেশন ফাইলের পথ নির্দিষ্ট করে। | 
 -p | মাল্টি-এপিকে আর্টিফ্যাক্ট প্রিন্ট করে প্রস্থান করে। | 
 --target-densities density[,density[..]] | APK যে স্ক্রিন ঘনত্বের জন্য অপ্টিমাইজ করা হয়েছে তার একটি কমা দ্বারা পৃথক করা তালিকা নির্দিষ্ট করে। প্রদত্ত ঘনত্বের ডিভাইসগুলিতে অব্যবহৃত সমস্ত সংস্থান APK থেকে সরানো হবে। | 
 --resources-config-path path |  প্রতিটি রিসোর্সের রিসোর্স এবং নির্দেশাবলীর তালিকা সম্বলিত  বিন্যাস: type/resource_name#[directive][,directive]  | 
 -c config[,config[..]] | অন্তর্ভুক্ত করার জন্য কনফিগারেশনের একটি কমা দ্বারা পৃথক তালিকা নির্দিষ্ট করে। ডিফল্ট হল সমস্ত কনফিগারেশন। | 
 --split path:config[,config[..]] |  APK-এর একটি ভিন্ন সংস্করণ তৈরি করতে কনফিগারেশনের একটি সেটের উপর ভিত্তি করে সম্পদগুলিকে বিভক্ত করে। আপনাকে কনফিগারেশনের সেটের সাথে আউটপুট APK-এর পথ নির্দিষ্ট করতে হবে।  | 
 --keep-artifacts artifact[,artifact[..]] | কমা দ্বারা পৃথক করা শিল্পকর্মের একটি তালিকা নির্দিষ্ট করে। যদি কোনওটি নির্দিষ্ট না করা থাকে, তাহলে সমস্ত শিল্পকর্ম রাখা হবে। | 
 --enable-sparse-encoding | রিসোর্স এন্ট্রিগুলির স্পার্স এনকোডিং সক্ষম করে। এর ফলে APK আকার, মেমরি ব্যবহার এবং স্টার্টআপ লেটেন্সি হ্রাস পায় এবং স্টার্টআপের পরে পৃথক রিসোর্স লুকআপ সময় সামান্য বৃদ্ধি পায়। | 
 --collapse-resource-names |  কী স্ট্রিং পুলের রিসোর্স নামগুলিকে একটি একক মানে সঙ্কুচিত করে। --resources-config-path দ্বারা নির্দিষ্ট একটি ফাইলে no_collapse নির্দেশিকা ব্যবহার করে রিসোর্সগুলিকে অব্যাহতি দেওয়া হয়। | 
 --shorten-resource-paths | APK-এর ভিতরে থাকা রিসোর্সের পথগুলিকে ছোট করে। | 
 --resource-path-shortening-map path | পুরাতন রিসোর্স পাথের মানচিত্রকে সংক্ষিপ্ত পাথে আউটপুট করার পথ নির্দিষ্ট করে। | 
 -v | আউটপুটের ভার্বোসিটি বৃদ্ধি করে। | 
 -h | টুল সাহায্য প্রদর্শন করে। | 
রূপান্তর
 ডিফল্টরূপে, AAPT compile কমান্ড রিসোর্সগুলিকে APK-এর জন্য উপযুক্ত বাইনারি ফর্ম্যাটে কম্পাইল করে। --proto-format নির্দিষ্ট করে AAB-এর জন্য উপযুক্ত প্রোটোবফ ফর্ম্যাটও নির্দিষ্ট করা সম্ভব। convert কমান্ড দুটি ফর্ম্যাটের মধ্যে APK-গুলিকে রূপান্তর করে।
সিনট্যাক্স রূপান্তর করুন
 convert সাধারণ বাক্য গঠন নিম্নরূপ: 
aapt2 convert -o output-file options file[,file[..]]
নিচের উদাহরণটি input.apk এর রিসোর্সগুলিকে রূপান্তর করে এবং output.apk এর একটি নতুন APK তৈরি করে যাতে প্রোটোবফ ফর্ম্যাট রিসোর্স থাকে। এটি সাধারণ ফ্ল্যাট টেবিল উপস্থাপনাকে আরও কমপ্যাক্ট উপস্থাপনা দিয়ে প্রতিস্থাপন করে, যার ফলে APK-এর আকার, মেমোরি ব্যবহার এবং স্টার্টআপ ল্যাটেন্সি হ্রাস পায় এবং কিছুটা বৃদ্ধি পায়। 
aapt2 convert -o output.apk --output-format proto --enable-sparse-encoding input.apk
রূপান্তর বিকল্প
 convert এর সাথে নিম্নলিখিত বিকল্পগুলি ব্যবহার করুন:
সারণি ৭। রূপান্তর বিকল্পগুলি
| বিকল্প | বিবরণ | 
|---|---|
 -o path | লিঙ্ক করা রিসোর্স APK-এর আউটপুট পাথ নির্দিষ্ট করে। এটি একটি প্রয়োজনীয় পতাকা, কারণ আপনাকে আউটপুট APK এর জন্য পথ নির্দিষ্ট করতে হবে যা লিঙ্ক করা রিসোর্সগুলিকে ধরে রাখতে পারে।  |  --output-format [proto|binary] |  আউটপুটের ফর্ম্যাট। গৃহীত মানগুলি হল proto এবং binary । সেট না করা হলে, ডিফল্টভাবে binary হয়। | 
 --enable-sparse-encoding | রিসোর্স এন্ট্রিগুলির স্পার্স এনকোডিং সক্ষম করে। এর ফলে APK আকার, মেমরি ব্যবহার এবং স্টার্টআপ লেটেন্সি হ্রাস পায় এবং স্টার্টআপের পরে পৃথক রিসোর্স লুকআপ সময় সামান্য বৃদ্ধি পায়। | 
 --keep-raw-values | XML ফাইলগুলিতে raw অ্যাট্রিবিউটের মান সংরক্ষণ করে। | 
 -v | আউটপুটের ভার্বোসিটি বৃদ্ধি করে। | 
 -h | টুল সাহায্য প্রদর্শন করে। | 
ডেমন মোড
AAPT সংস্করণ 2.19 কমান্ড ইস্যু করার জন্য ডেমন মোড চালু করেছে। ডেমন মোড আপনাকে একটি AAPT সেশনে একাধিক কমান্ড প্রবেশ করতে দেয়।
ডেমন সিনট্যাক্স
নিম্নলিখিত কমান্ড দিয়ে ডেমন মোড শুরু করুন:
aapt2 daemon
ডেমন মোড চালু হয়ে গেলে, আপনি কমান্ড লিখতে পারবেন। কমান্ডের প্রতিটি আর্গুমেন্ট একটি পৃথক লাইনে থাকতে হবে, কমান্ডের শেষে একটি ফাঁকা লাইন থাকতে হবে। কন্ট্রোল+ডি টাইপ করে ডেমন মোড থেকে বেরিয়ে আসুন।
 নিম্নলিখিত পৃথক compile কমান্ডগুলি বিবেচনা করুন: 
aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/
এই কমান্ডগুলি ডেমন মোডে প্রবেশ করানো যেতে পারে:
aapt2 daemon Ready compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ Done compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/ Done ^D Exiting daemon
ডেমন মোড বিকল্পগুলি
 ডেমন মোডের জন্য একক বিকল্প হল --trace-folder folder , যা নির্দিষ্ট folder একটি systrace JSON ট্রেস ফ্র্যাগমেন্ট তৈরি করে।
সংস্করণ
 version কমান্ডের সাহায্যে আপনি AAPT2 এর কোন সংস্করণটি ব্যবহার করছেন তা নির্ধারণ করুন: 
aapt2 version Android Asset Packaging Tool (aapt) 2.19-8678579
AAPT2 ব্যবহার করার সময় আচরণের পরিবর্তন হয়
AAPT2 এর আগে, AAPT ছিল Android Asset Packaging Tool এর ডিফল্ট সংস্করণ, যা এখন বন্ধ হয়ে গেছে। যদিও AAPT2 অবিলম্বে পুরোনো প্রকল্পগুলির সাথে কাজ করবে, এই বিভাগটি কিছু আচরণগত পরিবর্তন বর্ণনা করে যা সম্পর্কে আপনার সচেতন থাকা উচিত।
অ্যান্ড্রয়েড ম্যানিফেস্টে এলিমেন্টের শ্রেণিবিন্যাস
 AAPT-এর পূর্ববর্তী সংস্করণগুলিতে, AndroidManifest.xml ফাইলের ভুল নোডে নেস্ট করা উপাদানগুলি হয় উপেক্ষা করা হয়েছিল অথবা একটি সতর্কতার কারণ হয়েছিল। উদাহরণস্বরূপ, নিম্নলিখিত উদাহরণটি বিবেচনা করুন: 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myname.myapplication"> <application ... <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <action android:name="android.intent.action.CUSTOM" /> </activity> </application> </manifest>
AAPT-এর পূর্ববর্তী সংস্করণগুলি কেবল <action> ট্যাগটিকে উপেক্ষা করবে।
AAPT2 এর সাথে, আপনি নিম্নলিখিত ত্রুটিটি পাবেন:
AndroidManifest.xml:15: error: unknown element <action> found.
সমস্যাটি সমাধানের জন্য, নিশ্চিত করুন যে আপনার ম্যানিফেস্ট উপাদানগুলি সঠিকভাবে নেস্ট করা আছে। আরও তথ্যের জন্য, অ্যাপ ম্যানিফেস্ট ওভারভিউ পড়ুন।
সম্পদের ঘোষণা
 name অ্যাট্রিবিউট থেকে আপনি আর কোনও রিসোর্সের ধরণ নির্দেশ করতে পারবেন না। নিম্নলিখিত উদাহরণটি একটি attr রিসোর্স আইটেমকে ভুলভাবে ঘোষণা করে: 
<style name="childStyle" parent="parentStyle"> <item name="attr/my_attr">@color/pink</item> </style>
এইভাবে একটি রিসোর্স টাইপ ঘোষণা করলে নিম্নলিখিত বিল্ড ত্রুটি দেখা দেয়:
Error: style attribute 'attr/attr/my_attr (aka my.package:attr/attr/my_attr)' not found.
এই ত্রুটিটি সমাধান করতে, type="attr" ব্যবহার করে স্পষ্টভাবে টাইপটি ঘোষণা করুন: 
<style name="childStyle" parent="parentStyle"> <item type="attr" name="my_attr">@color/pink</item> </style>
অতিরিক্তভাবে, যখন একটি <style> উপাদান ঘোষণা করা হয়, তখন এর মূল উপাদানটি অবশ্যই একটি স্টাইল রিসোর্স টাইপ হতে হবে। অন্যথায়, আপনি নিম্নলিখিতগুলির মতো একটি ত্রুটি পাবেন: 
Error: (...) invalid resource type 'attr' for parent of style
@ রিসোর্স রেফারেন্স প্রতীকের ভুল ব্যবহার
 AAPT2 যখন আপনি রিসোর্স রেফারেন্স প্রতীক ( @ ) বাদ দেন বা ভুলভাবে রাখেন তখন বিল্ড ত্রুটিগুলি ফেলে দেয়। উদাহরণস্বরূপ, যদি আপনি একটি স্টাইল অ্যাট্রিবিউট নির্দিষ্ট করার সময় প্রতীকটি বাদ দেন: 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <!-- Note the missing '@' symbol when specifying the resource type. --> <item name="colorPrimary">color/colorPrimary</item> </style>
মডিউল তৈরি করার সময়, AAPT2 নিম্নলিখিত বিল্ড ত্রুটিটি ছুঁড়ে দেয়:
ERROR: expected color but got (raw string) color/colorPrimary
অতিরিক্তভাবে, যদি আপনি android নেমস্পেস থেকে কোনও রিসোর্স অ্যাক্সেস করার সময় ভুলভাবে প্রতীকটি অন্তর্ভুক্ত করেন: 
... <!-- When referencing resources from the 'android' namespace, omit the '@' symbol. --> <item name="@android:windowEnterAnimation"/>
মডিউল তৈরি করার সময়, AAPT2 নিম্নলিখিত বিল্ড ত্রুটিটি ছুঁড়ে দেয়:
Error: style attribute '@android:attr/windowEnterAnimation' not found
লাইব্রেরির ভুল কনফিগারেশন
 যদি আপনার অ্যাপটি কোনও তৃতীয় পক্ষের লাইব্রেরির উপর নির্ভরশীল থাকে যা Android SDK Build Tools এর পুরোনো সংস্করণ ব্যবহার করে তৈরি করা হয়েছে, তাহলে আপনার অ্যাপটি রানটাইমে কোনও ত্রুটি বা সতর্কতা প্রদর্শন না করেই ক্র্যাশ করতে পারে। এই ক্র্যাশটি ঘটতে পারে কারণ লাইব্রেরি তৈরির সময়, R.java ক্ষেত্রগুলিকে final ঘোষণা করা হয়। ফলস্বরূপ, সমস্ত রিসোর্স আইডি লাইব্রেরির ক্লাসে ইনলাইন করা হয়।
 AAPT2 আপনার অ্যাপ তৈরি করার সময় লাইব্রেরি রিসোর্সে আইডি পুনরায় বরাদ্দ করতে সক্ষম হওয়ার উপর নির্ভর করে। যদি লাইব্রেরি ধরে নেয় যে আইডিগুলি final এবং লাইব্রেরি DEX-এ সেগুলিকে ইনলাইন করে, তাহলে রানটাইম অমিল রয়েছে।
এই ত্রুটি সমাধানের জন্য, Android SDK বিল্ড টুলের সর্বশেষ সংস্করণ ব্যবহার করে লাইব্রেরিটি পুনর্নির্মাণ করতে এবং লাইব্রেরিটি পুনরায় প্রকাশ করতে লাইব্রেরির লেখকের সাথে যোগাযোগ করুন।