কমান্ড লাইন থেকে আপনার অ্যাপ তৈরি করা

Gradle wrapper কমান্ড লাইন টুল ব্যবহার করে আপনার Android প্রোজেক্টের জন্য উপলভ্য সব বিল্ড টাস্ক এক্সিকিউট করতে পারবেন। এটি Windows (gradlew.bat)-এর জন্য ব্যাচ ফাইল এবং Linux ও Mac (gradlew.sh)-এর জন্য শেল স্ক্রিপ্ট হিসেবে উপলভ্য এবং Android Studio-র মাধ্যমে আপনার তৈরি করা প্রতিটি প্রোজেক্টের রুট থেকে এটি অ্যাক্সেস করা যায়।

র‍্যাপারের সাহায্যে কোনও টাস্ক রান করতে, টার্মিনাল উইন্ডো থেকে (Android Studio থেকে, View > Tool Windows > Terminal বেছে নিন) নিম্নলিখিত কমান্ডগুলির মধ্যে একটি ব্যবহার করুন:

  • Windows কমান্ড শেলে:

    gradlew task-name
    
  • Mac, Linux বা Windows PowerShell-এ:

    ./gradlew task-name
    

আপনার প্রোজেক্টের জন্য উপলভ্য সব বিল্ড টাস্কের তালিকা দেখতে, tasks এক্সিকিউট করুন:

gradlew tasks

এই পৃষ্ঠার বাকি অংশে Gradle wrapper-এর সাহায্যে আপনার অ্যাপ তৈরি ও রান করার প্রাথমিক বিষয়গুলি বর্ণনা করা হয়েছে। আপনার Android বিল্ড কীভাবে সেট-আপ করবেন সেই সম্পর্কে আরও তথ্য পেতে, আপনার বিল্ড কনফিগার করুন দেখুন।

আপনি কমান্ড লাইন টুলের পরিবর্তে Android Studio টুল ব্যবহার করতে চাইলে, আপনার অ্যাপ তৈরি ও রান করুন বিকল্প দেখুন।

বিল্ডের ধরন সম্পর্কে

সাধারণত, প্রতিটি Android অ্যাপের জন্য দুই ধরনের বিল্ড উপলভ্য থাকে: একটি আপনার অ্যাপ ডিবাগ করার জন্য—ডিবাগ বিল্ড—এবং অন্যটি ব্যবহারকারীদের জন্য আপনার অ্যাপ রিলিজ করার জন্য—রিলিজ বিল্ড। আপনার অ্যাপ কোনও ডিভাইসে ডেপ্লয় করার আগে প্রতিটি বিল্ড থেকে পাওয়া আউটপুট অবশ্যই সার্টিফিকেট দিয়ে সাইন করতে হবে। ডিবাগ বিল্ড SDK টুল দ্বারা প্রদত্ত ডিবাগ কী দিয়ে অটোমেটিক সাইন করা হয় (এটি সুরক্ষিত নয় এবং এটি দিয়ে আপনি Google Play Store-এ প্রকাশ করতে পারবেন না) এবং রিলিজ বিল্ড অবশ্যই আপনার নিজস্ব ব্যক্তিগত কী দিয়ে সাইন করতে হবে।

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

এছাড়াও, আপনি build.gradle.kts ফাইলে কাস্টম বিল্ডের ধরন নির্ধারণ করতে পারেন এবং debuggable true অন্তর্ভুক্ত করে ডিবাগ বিল্ড হিসেবে সাইন করার জন্য এটি কনফিগার করতে পারেন। আরও তথ্যের জন্য, বিল্ড ভেরিয়েন্ট কনফিগার করুন দেখুন।

APK তৈরি ও ডিপ্লয় করা

যদিও অ্যাপ বান্ডেল তৈরি করা হল আপনার অ্যাপ প্যাকেজ করার এবং Play Console-এ আপলোড করার সেরা উপায়, তবে আপনি যখন দ্রুত একটি ডিবাগ বিল্ড পরীক্ষা করতে চান বা অন্যদের সাথে একটি ডেপ্লয়েবল আর্টিফ্যাক্ট হিসাবে আপনার অ্যাপ শেয়ার করতে চান তখন APK তৈরি করা আরও উপযুক্ত।

ডিবাগ APK তৈরি করা

অ্যাপ অবিলম্বে পরীক্ষা ও ডিবাগ করার জন্য, আপনি ডিবাগ APK তৈরি করতে পারেন। ডিবাগ APK, SDK টুলের মাধ্যমে প্রদান করা ডিবাগ কী দিয়ে সাইন করা হয় এবং adb-এর মাধ্যমে ডিবাগ করার অনুমতি দেয়।

ডিবাগ APK তৈরি করতে, কমান্ড লাইন খুলে আপনার প্রোজেক্ট ডিরেক্টরির রুটে নেভিগেট করুন। ডিবাগ বিল্ড শুরু করতে, assembleDebug টাস্কটি চালু করুন:

gradlew assembleDebug

এটি project_name/module_name/build/outputs/apk/-এ module_name-debug.apk নামের একটি APK তৈরি করে। ফাইলটি আগে থেকেই ডিবাগ কী দিয়ে সাইন করা আছে এবং zipalign-এর সাথে অ্যালাইন করা আছে, তাই আপনি এটি অবিলম্বে ডিভাইসে ইনস্টল করতে পারবেন।

অথবা APK তৈরি করতে এবং কোনও চালু থাকা এমুলেটর বা কানেক্ট করা ডিভাইসে অবিলম্বে এটি ইনস্টল করতে, পরিবর্তে installDebug ব্যবহার করুন:

gradlew installDebug

টাস্কের নামের "Debug" অংশটি হল বিল্ড ভেরিয়েন্ট নামের ক্যামেল-কেস ভার্সন, তাই আপনি যে বিল্ড টাইপ বা ভেরিয়েন্ট অ্যাসেম্বল বা ইনস্টল করতে চান, তার সাথে এটি পরিবর্তন করা যেতে পারে। যেমন, আপনার কাছে "ডেমো" প্রোডাক্ট ফ্লেভার থাকলে, আপনি assembleDemoDebug টাস্কের মাধ্যমে ডিবাগ ভার্সন তৈরি করতে পারবেন।

প্রতিটি ভেরিয়েন্টের জন্য উপলভ্য সব বিল্ড ও ইনস্টল টাস্ক (আনইনস্টল টাস্ক সহ) দেখতে, tasks টাস্ক রান করুন।

এছাড়াও, কীভাবে এমুলেটরে আপনার অ্যাপ রান করবেন এবং ডিভাইসে আপনার অ্যাপ রান করবেন সেই সম্পর্কিত বিভাগ দেখুন।

রিলিজ বান্ডেল বা APK তৈরি করা

আপনার অ্যাপ রিলিজ ও ডিস্ট্রিবিউট করার জন্য প্রস্তুত হলে, আপনাকে অবশ্যই একটি রিলিজ বান্ডেল বা APK তৈরি করতে হবে যা আপনার ব্যক্তিগত কী দিয়ে সাইন করা হয়েছে। আরও তথ্যের জন্য, কমান্ড লাইন থেকে আপনার অ্যাপে কীভাবে সাইন-ইন করবেন সেই সম্পর্কিত বিভাগে যান।

এমুলেটরে আপনার অ্যাপ ডিপ্লয় করা

Android Emulator ব্যবহার করতে, আপনাকে Android Studio ব্যবহার করে একটি Android ভার্চুয়াল ডিভাইস (AVD) তৈরি করতে হবে।

আপনার কাছে AVD থাকলে, Android Emulator চালু করুন এবং এইভাবে আপনার অ্যাপ ইনস্টল করুন:

  1. কমান্ড লাইনে, android_sdk/tools/-এ নেভিগেট করুন এবং আপনার AVD উল্লেখ করে এমুলেটর চালু করুন:

    emulator -avd <var>avd_name</var>
    

    AVD-এর নাম সম্পর্কে নিশ্চিত না হলে, emulator -list-avds এক্সিকিউট করুন।

  2. এখন আপনি ডিবাগ APK তৈরি করা বা adb টুল সম্পর্কে বিভাগে উল্লেখ করা Gradle ইনস্টল টাস্কের মধ্যে যেকোনও একটি ব্যবহার করে আপনার অ্যাপ ইনস্টল করতে পারবেন।

    APK যদি ডেভেলপার প্রিভিউ SDK ব্যবহার করে তৈরি করা হয় (যদি targetSdkVersion সংখ্যার পরিবর্তে অক্ষর হয়), তাহলে টেস্ট APK ইনস্টল করার জন্য আপনাকে অবশ্যই install কমান্ডের সাথে -t বিকল্প অন্তর্ভুক্ত করতে হবে।

    adb install <var>path/to/your_app</var>.apk
    

    আপনার তৈরি করা সব APK project_name/module_name/build/outputs/apk/-এ সেভ করা হয়।

আরও তথ্যের জন্য, Android এমুলেটরে অ্যাপ রান করুন দেখুন।

আপনার অ্যাপ কোনও ফিজিক্যাল ডিভাইসে ডেপ্লয় করুন

কোনও ডিভাইসে আপনার অ্যাপ চালানোর আগে, আপনাকে ডিভাইসে USB ডিবাগিং চালু করতে হবে। আপনি এই বিকল্পটি সেটিংস > ডেভেলপার বিকল্প-এর মধ্যে খুঁজে পাবেন।

আপনার ডিভাইস সেট-আপ করা এবং USB ব্যবহার করে কানেক্ট করা হয়ে গেলে, আপনি ডিবাগ APK তৈরি করা সংক্রান্ত বিভাগে উল্লেখ করা Gradle ইনস্টল টাস্ক অথবা adb টুল ব্যবহার করে আপনার অ্যাপ ইনস্টল করতে পারবেন:

adb -d install path/to/your_app.apk

আপনার তৈরি করা সব APK project_name/module_name/build/outputs/apk/-এ সেভ করা হয়।

আরও তথ্যের জন্য, হার্ডওয়্যার ডিভাইসে অ্যাপ রান করুন দেখুন।

অ্যাপ বান্ডেল তৈরি করা

Android অ্যাপ বান্ডেল-এ আপনার অ্যাপের সব কম্পাইল করা কোড ও রিসোর্স থাকে, তবে APK তৈরি ও সাইন করার কাজ Google Play-এর জন্য স্থগিত রাখা হয়। APK-এর মতো, আপনি কোনও ডিভাইসে সরাসরি অ্যাপ বান্ডেল ডিপ্লয় করতে পারবেন না। তাই, আপনি যদি দ্রুত কোনও APK পরীক্ষা করতে বা অন্য কারও সাথে শেয়ার করতে চান, তাহলে আপনাকে APK তৈরি করতে হবে।

অ্যাপ বান্ডেল তৈরি করার সবচেয়ে সহজ উপায় হল Android Studio ব্যবহার করা। তবে, কমান্ড লাইন থেকে আপনাকে অ্যাপ বান্ডেল তৈরি করতে হলে, আপনি Gradle বা bundletool ব্যবহার করে তা করতে পারেন, যেমনটি নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।

Gradle-এর সাহায্যে অ্যাপ বান্ডেল তৈরি করা

আপনি যদি কমান্ড লাইন থেকে অ্যাপ বান্ডেল তৈরি করতে চান, তাহলে আপনার অ্যাপের বেস মডিউলে bundleVariant Gradle টাস্ক রান করুন। যেমন, নিম্নলিখিত কমান্ড বেস মডিউলের ডিবাগ ভার্সনের জন্য অ্যাপ বান্ডেল তৈরি করে:

./gradlew :base:bundleDebug

Play Console-এ আপলোড করার জন্য আপনি যদি সাইন করা বান্ডেল তৈরি করতে চান, তাহলে আপনাকে প্রথমে আপনার অ্যাপের সাইন-ইন সংক্রান্ত তথ্য সহ বেস মডিউলের build.gradle.kts ফাইল কনফিগার করতে হবে। আরও জানতে, কীভাবে আপনার অ্যাপে স্বাক্ষর করার জন্য Gradle কনফিগার করবেন সেই সংক্রান্ত বিভাগটি দেখুন। তারপর, উদাহরণস্বরূপ, আপনি নিজের অ্যাপের রিলিজ ভার্সন তৈরি করতে পারেন এবং Gradle অটোমেটিক একটি অ্যাপ বান্ডেল তৈরি করে এবং build.gradle.kts ফাইলে আপনার দেওয়া স্বাক্ষরের তথ্য দিয়ে এতে স্বাক্ষর করে।

পরিবর্তে আপনি যদি আলাদা ধাপ হিসেবে অ্যাপ বান্ডেল সাইন করতে চান, তাহলে কমান্ড লাইন থেকে আপনার অ্যাপ বান্ডেল সাইন করতে jarsigner ব্যবহার করতে পারবেন। অ্যাপ বান্ডেল তৈরি করার কমান্ড হল:

jarsigner -keystore pathToKeystore app-release.aab keyAlias

bundletool ব্যবহার করে অ্যাপ বান্ডেল তৈরি করা

bundletool হল একটি কমান্ড লাইন টুল যা Android Studio, Android Gradle প্লাগ-ইন এবং Google Play আপনার অ্যাপের কম্পাইল করা কোড এবং রিসোর্সকে অ্যাপ বান্ডেলে রূপান্তর করতে এবং সেই বান্ডেলগুলি থেকে ডিপ্লয় করার উপযুক্ত APK তৈরি করতে ব্যবহার করে।

তাই, bundletool-এর মাধ্যমে অ্যাপ বান্ডেল টেস্ট করা এবং Google Play কীভাবে APK তৈরি করে তা স্থানীয়ভাবে রিক্রিয়েট করা উপযোগী হলেও, অ্যাপ বান্ডেল তৈরি করার জন্য সাধারণত আপনাকে bundletool কল করতে হবে না—পরিবর্তে, আগের বিভাগে যেমন বর্ণনা করা হয়েছে, আপনাকে Android Studio বা Gradle টাস্ক ব্যবহার করতে হবে।

তবে, আপনি যদি বান্ডেল তৈরি করার জন্য Android Studio বা Gradle টাস্ক ব্যবহার করতে না চান—যেমন, আপনি যদি কাস্টম বিল্ড টুলচেন ব্যবহার করেন—তাহলে আপনি প্রি-কম্পাইল করা কোড এবং রিসোর্স থেকে অ্যাপ বান্ডেল তৈরি করতে কমান্ড লাইন থেকে bundletool ব্যবহার করতে পারেন। আপনি আগে থেকে এটি না করে থাকলে, GitHub রিপোজিটরি থেকে bundletool ডাউনলোড করুন।

এই বিভাগে আপনার অ্যাপের কম্পাইল করা কোড ও রিসোর্স কীভাবে প্যাকেজ করবেন এবং কমান্ড লাইন থেকে bundletool ব্যবহার করে কীভাবে সেগুলিকে Android App Bundle-এ কনভার্ট করবেন তা বর্ণনা করা হয়েছে।

প্রোটো ফর্ম্যাটে ম্যানিফেস্ট ও রিসোর্স তৈরি করুন

bundletool-এর জন্য আপনার অ্যাপ প্রজেক্ট সম্পর্কে নির্দিষ্ট তথ্য প্রয়োজন, যেমন অ্যাপের ম্যানিফেস্ট ও রিসোর্স, যা Google-এর প্রোটোকল বাফার ফর্ম্যাটে থাকতে হবে—যা "protobuf" নামেও পরিচিত এবং *.pb ফাইল এক্সটেনশন ব্যবহার করে। Protobufs স্ট্রাকচার্ড ডেটা সিরিয়ালাইজ করার জন্য ভাষা-নিরপেক্ষ, প্ল্যাটফর্ম-নিরপেক্ষ এবং এক্সটেনসিবল মেকানিজম প্রদান করে—এটি XML-এর মতো, তবে আকারে ছোট, দ্রুত এবং সহজ।

AAPT2 ডাউনলোড করুন

আপনি Google Maven রিপোজিটরি থেকে AAPT2-এর লেটেস্ট ভার্সন ব্যবহার করে protobuf ফর্ম্যাটে আপনার অ্যাপের ম্যানিফেস্ট ফাইল এবং রিসোর্স টেবিল তৈরি করতে পারেন।

Google-এর Maven রিপোজিটরি থেকে AAPT2 ডাউনলোড করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  1. রিপোজিটরি ইনডেক্স-এ com.android.tools.build > aapt2-এ নেভিগেট করুন।
  2. AAPT2-এর লেটেস্ট ভার্সনের নাম কপি করুন।
  3. নিম্নলিখিত URL-এ আপনার কপি করা ভার্সনের নাম লিখুন এবং আপনার টার্গেট অপারেটিং সিস্টেম উল্লেখ করুন: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/ aapt2-version/aapt2-aapt2-version- [windows | linux | osx].jar

    যেমন, Windows-এর জন্য 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-windows.jar

  4. ব্রাউজারে URL-এ নেভিগেট করুন—AAPT2 শীঘ্রই ডাউনলোড শুরু করবে।

  5. এইমাত্র ডাউনলোড করা JAR ফাইল আনপ্যাকেজ করুন।

নিম্নলিখিত কমান্ডের সাহায্যে আপনার অ্যাপের রিসোর্স কম্পাইল করতে AAPT2 ব্যবহার করুন:

aapt2 compile \
project_root/module_root/src/main/res/drawable/Image1.png \
project_root/module_root/src/main/res/drawable/Image2.png \
-o compiled_resources/

লিঙ্ক করার ফেজে, যেখানে AAPT2 আপনার বিভিন্ন কম্পাইল করা রিসোর্সকে একটি সিঙ্গেল APK-তে লিঙ্ক করে, সেখানে AAPT2-কে আপনার অ্যাপের ম্যানিফেস্ট এবং কম্পাইল করা রিসোর্সকে protobuf ফর্ম্যাটে কনভার্ট করার নির্দেশ দিন। এর জন্য --proto-format ফ্ল্যাগ অন্তর্ভুক্ত করুন, যেমনটি নিচের উদাহরণে দেখানো হয়েছে:

aapt2 link --proto-format -o output.apk \
-I android_sdk/platforms/android_version/android.jar \
--manifest project_root/module_root/src/main/AndroidManifest.xml \
-R compiled_resources/*.flat \
--auto-add-overlay

তারপর আপনি আউটপুট APK থেকে কন্টেন্ট এক্সট্র্যাক্ট করতে পারবেন, যেমন আপনার অ্যাপের AndroidManifest.xml, resources.pb এবং অন্যান্য রিসোর্স ফাইল—এখন protobuf ফর্ম্যাটে। ইনপুট প্রস্তুত করার সময় আপনার এই ফাইলগুলি প্রয়োজন bundletool আপনার অ্যাপ বান্ডেল তৈরি করতে প্রয়োজন, যেমনটি নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।

প্রি-কম্পাইল করা কোড ও রিসোর্স প্যাকেজ করুন

আপনার অ্যাপের জন্য অ্যাপ বান্ডেল তৈরি করতে bundletool ব্যবহার করার আগে, আপনাকে অবশ্যই প্রথমে জিপ ফাইল প্রদান করতে হবে যার প্রতিটিতে প্রদত্ত অ্যাপ মডিউলের জন্য কম্পাইল করা কোড এবং রিসোর্স রয়েছে। প্রতিটি মডিউলের ZIP ফাইলের কন্টেন্ট ও সংগঠন Android App Bundle ফর্ম্যাটের মতোই। যেমন, আপনার অ্যাপের বেস মডিউলের জন্য একটি base.zip ফাইল তৈরি করা উচিত এবং সেটির কন্টেন্ট এইভাবে সাজানো উচিত:

ফাইল বা ডিরেক্টরি বর্ণনা
manifest/AndroidManifest.xml protobuf ফর্ম্যাটে মডিউলের ম্যানিফেস্ট।
dex/... আপনার অ্যাপের এক বা একাধিক কম্পাইল করা DEX ফাইল সহ ডিরেক্টরি। এইসব ফাইলের নাম এইভাবে রাখতে হবে: classes.dex, classes2.dex, classes3.dex ইত্যাদি।
res/... সব ডিভাইস কনফিগারেশনের জন্য protobuf ফর্ম্যাটে মডিউলের রিসোর্স থাকে। সাবডিরেক্টরি ও ফাইলগুলি সাধারণ APK-এর মতো সাজানো থাকতে হবে।
root/..., assets/... ও lib/... এই ডিরেক্টরিগুলি Android অ্যাপ বান্ডেল ফর্ম্যাট সম্পর্কে বিভাগে বর্ণিত ডিরেক্টরিগুলির মতোই।
resources.pb protobuf ফর্ম্যাটে আপনার অ্যাপের রিসোর্স টেবিল।

আপনার অ্যাপের প্রতিটি মডিউলের জন্য ZIP ফাইল তৈরি করার পরে, আপনি সেগুলি bundletool-এ পাস করতে পারেন যাতে আপনার অ্যাপ বান্ডেল তৈরি করা যায়, যেমনটি নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।

bundletool ব্যবহার করে আপনার অ্যাপ বান্ডেল তৈরি করা

আপনার অ্যাপ বান্ডেল তৈরি করতে, আপনি bundletool build-bundle কমান্ড ব্যবহার করেন, যেমন নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

bundletool build-bundle --modules=base.zip --output=mybundle.aab

নিম্নলিখিত সারণীতে build-bundle কমান্ডের জন্য ফ্ল্যাগ আরও বিস্তারিতভাবে বর্ণনা করা হয়েছে:

পতাকা বর্ণনা
--modules=path-to-base.zip, path-to-module2.zip,path-to-module3.zip আপনার অ্যাপ বান্ডেল তৈরি করার জন্য bundletool-এর ব্যবহার করা উচিত এমন মডিউল ZIP ফাইলের তালিকা নির্দিষ্ট করে।
--output=path-to-output.aab আউটপুট *.aab ফাইলের জন্য পাথ এবং ফাইলের নাম নির্দিষ্ট করে।
--config=path-to-BundleConfig.json বিল্ড প্রসেস কাস্টমাইজ করার জন্য আপনি ব্যবহার করতে পারেন এমন একটি ঐচ্ছিক কনফিগারেশন ফাইলের পাথ নির্দিষ্ট করে। আরও জানতে, ডাউনস্ট্রিম APK জেনারেশন কাস্টমাইজ করা সংক্রান্ত বিভাগটি দেখুন।
--metadata-file=target-bundle-path:local-file-path আপনার অ্যাপ বান্ডেলের মধ্যে ঐচ্ছিক মেটাডেটা ফাইল প্যাকেজ করার জন্য bundletool-কে নির্দেশ দেয়। আপনি এই ফাইলটি ব্যবহার করে ডেটা অন্তর্ভুক্ত করতে পারেন, যেমন ProGuard ম্যাপিং বা আপনার অ্যাপের DEX ফাইলের সম্পূর্ণ তালিকা, যা আপনার টুলচেন বা অ্যাপ স্টোরের অন্যান্য ধাপে উপযোগী হতে পারে।

target-bundle-path অ্যাপ বান্ডেলের রুট অনুযায়ী পাথ নির্দিষ্ট করে, যেখানে আপনি মেটাডেটা ফাইল প্যাকেজ করতে চান এবং local-file-path লোকাল মেটাডেটা ফাইলের পাথ নির্দিষ্ট করে।

ডাউনস্ট্রিম APK তৈরি করার প্রসেস কাস্টমাইজ করুন

অ্যাপ বান্ডেলে একটি BundleConfig.pb ফাইল থাকে যা মেটাডেটা প্রদান করে, যা অ্যাপ স্টোর, যেমন Google Play, বান্ডেল থেকে APK তৈরি করার সময় প্রয়োজন হয়। যদিও bundletool আপনার জন্য এই ফাইল তৈরি করে, আপনি BundleConfig.json ফাইলে মেটাডেটার কিছু দিক কনফিগার করতে পারেন এবং এটি bundletool build-bundle কমান্ডে পাস করতে পারেন—bundletool পরে প্রতিটি অ্যাপ বান্ডেলে অন্তর্ভুক্ত প্রোটোবাফ ভার্সনের সাথে এই ফাইলটি কনভার্ট এবং মার্জ করে।

যেমন, আপনি কনফিগারেশন APK-এর কোন কোন বিভাগ চালু বা বন্ধ করবেন তা নিয়ন্ত্রণ করতে পারবেন। BundleConfig.json ফাইলের নিম্নলিখিত উদাহরণটি কনফিগারেশন APK-কে বন্ধ করে দেয়, যেগুলির প্রত্যেকটি আলাদা ভাষাকে টার্গেট করে (অর্থাৎ, সব ভাষার রিসোর্স তাদের সংশ্লিষ্ট বেস বা ফিচার APK-তে অন্তর্ভুক্ত থাকে):

{
  "optimizations": {
    "splitsConfig": {
      "splitDimension": [{
        "value": "LANGUAGE",
        "negate": true
      }]
    }
  }
}

আপনার BundleConfig.json ফাইলে, আপনি কোন ধরনের ফাইল আনকমপ্রেসড অবস্থায় ছেড়ে দেবেন তাও উল্লেখ করতে পারবেন, গ্লোব প্যাটার্ন ব্যবহার করে APK প্যাকেজ করার সময়, যেমন:

{
  "compression": {
    "uncompressedGlob": ["res/raw/**", "assets/**.uncompressed"]
  }
}

মনে রাখবেন, সাধারণত bundletool আপনার অ্যাপের নেটিভ লাইব্রেরি (Android 6.0 বা তার পরবর্তী যেকোনও ভার্সনে) এবং রিসোর্স টেবিল (resources.arsc) কম্প্রেস করে না। আপনার BundleConfig.json-এ আপনি কী কী কনফিগার করতে পারবেন তার সম্পূর্ণ বিবরণ পেতে, bundletool config.proto ফাইল দেখুন, যা Proto3 সিনট্যাক্স ব্যবহার করে লেখা হয়েছে।

অ্যাপ বান্ডেল থেকে আপনার অ্যাপ ডিপ্লয় করুন

আপনি যদি কোনও অ্যাপ বান্ডেল তৈরি ও সাইন করে থাকেন, তাহলে bundletool ব্যবহার করে APK তৈরি করুন এবং ডিভাইসে সেটি ডিপ্লয় করুন।

কমান্ড লাইন থেকে আপনার অ্যাপ সাইন করুন

আপনার অ্যাপে সাইন করার জন্য Android Studio-এর প্রয়োজন নেই। আপনি কমান্ড লাইন থেকে APKs-এর জন্য apksigner বা অ্যাপ বান্ডেলের জন্য jarsigner ব্যবহার করে অ্যাপে সাইন করতে পারেন অথবা বিল্ড করার সময় আপনার হয়ে সাইন করার জন্য Gradle কনফিগার করতে পারেন। যেকোনও উপায়ে, আপনাকে প্রথমে keytool ব্যবহার করে ব্যক্তিগত কী তৈরি করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

এই উদাহরণটি আপনাকে কীস্টোর এবং কী-এর পাসওয়ার্ড এবং আপনার কী-এর জন্য "বিশিষ্ট নাম" ফিল্ডের জন্য প্রম্পট করে। এটি তারপর my-release-key.jks নামের ফাইল হিসেবে কীস্টোর তৈরি করে, বর্তমান ডিরেক্টরিতে এটি সেভ করে (আপনি যেখানে চান সেখানে এটি সরাতে পারবেন)। কীস্টোরে একটি কী আছে যা ১০,০০০ দিনের জন্য বৈধ।

এখন আপনি ম্যানুয়ালি APK বা অ্যাপ বান্ডেল সাইন করতে পারবেন অথবা বিল্ড প্রসেসের সময় আপনার অ্যাপ সাইন করার জন্য Gradle কনফিগার করতে পারবেন, যেমনটি নিম্নলিখিত বিভাগে বর্ণনা করা হয়েছে।

কমান্ড লাইন থেকে আপনার অ্যাপ ম্যানুয়ালি সাইন করুন

আপনি যদি কমান্ড লাইন থেকে অ্যাপ বান্ডেল সাইন করতে চান, তাহলে jarsigner ব্যবহার করতে পারেন। পরিবর্তে আপনি যদি APK-তে সই করতে চান, তাহলে আপনাকে zipalign এবং apksigner ব্যবহার করতে হবে:

  1. Android Studio থেকে কমান্ড লাইন খুলুন, ভিউ > টুল উইন্ডো > টার্মিনাল বেছে নিন—এবং আপনার সই না করা APK যে ডিরেক্টরিতে আছে সেখানে যান।

  2. zipalign ব্যবহার করে স্বাক্ষর না করা APK অ্যালাইন করুন:

    zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
    

    zipalign নিশ্চিত করে যে সব আনকমপ্রেসড ডেটা ফাইলের শুরুর সাপেক্ষে একটি নির্দিষ্ট বাইট অ্যালাইনমেন্ট দিয়ে শুরু হয়, যা কোনও অ্যাপের দ্বারা ব্যবহৃত RAM-এর পরিমাণ কমাতে পারে।

  3. apksigner ব্যবহার করে আপনার ব্যক্তিগত কী দিয়ে APK সাইন করুন:

    apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
    

    এই উদাহরণে, একটিমাত্র KeyStore ফাইলে স্টোর করা ব্যক্তিগত কী ও সার্টিফিকেট দিয়ে সাইন করার পরে my-app-release.apk-এ সাইন করা APK আউটপুট হিসেবে পাওয়া যায়: my-release-key.jks।

    apksigner টুলটি অন্যান্য সাইনিং বিকল্প সমর্থন করে, যার মধ্যে রয়েছে আলাদা ব্যক্তিগত কী এবং সার্টিফিকেট ফাইল ব্যবহার করে একটি APK ফাইল সাইন করা এবং একাধিক সাইনার ব্যবহার করে একটি APK সাইন করা। আরও জানতে, apksigner রেফারেন্স দেখুন।

  4. আপনার APK সাইন করা আছে কিনা তা যাচাই করুন:

    apksigner verify my-app-release.apk
    

আপনার অ্যাপে সাইন-ইন করতে Gradle কনফিগার করুন

মডিউল-লেভেল build.gradle.kts ফাইল খুলে signingConfigs {} ব্লক যোগ করুন, এতে storeFile, storePassword, keyAlias এবং keyPassword-এর এন্ট্রি থাকবে, তারপর সেই অবজেক্টটি আপনার বিল্ড টাইপের signingConfig প্রপার্টিতে পাস করুন। যেমন:

Kotlin

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        create("release") {
            // You need to specify either an absolute path or include the
            // keystore file in the same directory as the build.gradle file.
            storeFile = file("my-release-key.jks")
            storePassword = "password"
            keyAlias = "my-alias"
            keyPassword = "password"
        }
    }
    buildTypes {
        getByName("release") {
            signingConfig = signingConfigs.getByName("release")
            ...
        }
    }
}

গ্ৰুভি

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            // You need to specify either an absolute path or include the
            // keystore file in the same directory as the build.gradle file.
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            ...
        }
    }
}

এখন, আপনি Gradle টাস্ক চালু করে আপনার অ্যাপ তৈরি করলে, Gradle আপনার অ্যাপে সাইন করে (এবং zipalign রান করে)।

এছাড়াও, আপনি সাইনিং কী দিয়ে রিলিজ বিল্ড কনফিগার করেছেন বলে, সেই বিল্ডের ধরনের জন্য "ইনস্টল" টাস্ক উপলভ্য। তাই আপনি installRelease টাস্কের মাধ্যমে এমুলেটর বা ডিভাইসে রিলিজ APK তৈরি, অ্যালাইন, সই ও ইনস্টল করতে পারবেন।

আপনার ব্যক্তিগত কী দিয়ে সাইন করা অ্যাপ ডিস্ট্রিবিউশনের জন্য রেডি, তবে আপনাকে প্রথমে আপনার অ্যাপ প্রকাশ করা এবং Google Play লঞ্চ চেকলিস্ট পর্যালোচনা করার ব্যাপারে আরও পড়তে হবে।