বিভিন্ন মাত্রা সহ একাধিক APK তৈরি করা

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

Google Play-তে একাধিক APK-এর সুবিধা নেওয়ার জন্য আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশান ডেভেলপ করার সময়, শুরু থেকে কিছু ভাল অভ্যাস গ্রহণ করা এবং উন্নয়ন প্রক্রিয়ায় আরও অপ্রয়োজনীয় মাথাব্যথা প্রতিরোধ করা গুরুত্বপূর্ণ। এই পাঠটি আপনাকে দেখায় কিভাবে আপনার অ্যাপের একাধিক APK তৈরি করতে হয়, প্রতিটিতে একটি আলাদা শ্রেণির স্ক্রীন আকার রয়েছে। আপনি একটি একাধিক APK কোডবেসকে যতটা সম্ভব ব্যথাহীন করার জন্য প্রয়োজনীয় কিছু সরঞ্জামও পাবেন।

আপনার একাধিক APK প্রয়োজন তা নিশ্চিত করুন

উপলব্ধ Android ডিভাইসের বিশাল পরিসর জুড়ে কাজ করে এমন একটি অ্যাপ্লিকেশন তৈরি করার চেষ্টা করার সময়, স্বাভাবিকভাবেই আপনি প্রতিটি পৃথক ডিভাইসে আপনার অ্যাপ্লিকেশনটিকে সর্বোত্তম দেখতে চান। আপনি বড় স্ক্রিনের জায়গার সদ্ব্যবহার করতে চান কিন্তু তারপরও ছোট স্ক্রিনে কাজ করতে চান, নতুন অ্যান্ড্রয়েড এপিআই বৈশিষ্ট্য বা কাটিং এজ ডিভাইসে উপলব্ধ ভিজ্যুয়াল টেক্সচার ব্যবহার করতে চান কিন্তু পুরানোগুলিকে ত্যাগ করবেন না। এটি শুরুতে মনে হতে পারে যে একাধিক APK সমর্থন সর্বোত্তম সমাধান, তবে এটি প্রায়শই হয় না। একাধিক APK গাইডের পরিবর্তে একক APK ব্যবহার করা বিভাগে আমাদের সহায়তা লাইব্রেরির ব্যবহার সহ, এবং Android বিকাশকারী গাইড জুড়ে সংস্থানগুলির লিঙ্কগুলি সহ একটি একক APK দিয়ে কীভাবে এই সমস্তগুলি সম্পাদন করা যায় সে সম্পর্কে কিছু দরকারী তথ্য অন্তর্ভুক্ত রয়েছে৷

আপনি যদি এটি পরিচালনা করতে পারেন তবে আপনার অ্যাপ্লিকেশনটিকে একটি একক APK-এ সীমাবদ্ধ করার অনেক সুবিধা রয়েছে, যার মধ্যে রয়েছে:

  • প্রকাশনা এবং পরীক্ষা করা সহজ
  • বজায় রাখার জন্য শুধুমাত্র একটি কোডবেস আছে
  • আপনার অ্যাপ্লিকেশন ডিভাইস কনফিগারেশন পরিবর্তনের সাথে মানিয়ে নিতে পারে
  • সমস্ত ডিভাইস জুড়ে অ্যাপ পুনরুদ্ধার কাজ করে
  • আপনাকে বাজারের পছন্দ, এক APK থেকে পরবর্তীতে "আপগ্রেড" থেকে আচরণ, বা কোন APK কোন শ্রেণীর ডিভাইসের সাথে যায় সে সম্পর্কে চিন্তা করতে হবে না

এই পাঠের বাকি অংশটি অনুমান করে যে আপনি বিষয়টি নিয়ে গবেষণা করেছেন, অধ্যয়নের সাথে লিঙ্কযুক্ত সংস্থানগুলির উপাদানগুলিকে শোষণ করেছেন এবং নির্ধারণ করেছেন যে একাধিক APK আপনার অ্যাপ্লিকেশনের জন্য সঠিক পথ।

আপনার প্রয়োজনীয়তা চার্ট করুন

আপনার কতগুলি APK প্রয়োজন এবং প্রতিটি APK কভার করে তা দ্রুত নির্ধারণ করতে একটি সাধারণ চার্ট তৈরি করে শুরু করুন। সৌভাগ্যবশত, আপনার প্রয়োজনীয়তাগুলি দ্রুত, সহজে, এবং পরবর্তীতে একটি সহজ রেফারেন্স পাওয়া সহজ। ধরা যাক আপনি আপনার APKগুলিকে দুটি মাত্রা, API এবং স্ক্রীন আকারে বিভক্ত করতে চান। প্রতিটি সম্ভাব্য জোড়া মানগুলির জন্য সারি এবং কলাম সহ একটি টেবিল তৈরি করুন এবং কিছু "ব্লব" এ রঙ করুন, প্রতিটি রঙ একটি APK প্রতিনিধিত্ব করে।

3 4 5 6 7 8 9 10 11 12 +
ছোট
স্বাভাবিক
বড়
বড়

উপরে চারটি APK সহ একটি উদাহরণ। নীল সব ছোট/স্বাভাবিক স্ক্রীন ডিভাইসের জন্য, সবুজ বড় স্ক্রীন ডিভাইসের জন্য, এবং লাল x বড় স্ক্রীন ডিভাইসের জন্য, সবগুলোর API পরিসর 3-10। বেগুনি একটি বিশেষ ক্ষেত্রে, কারণ এটি সমস্ত স্ক্রীন আকারের জন্য, তবে শুধুমাত্র API 11 এবং তার বেশির জন্য। আরও গুরুত্বপূর্ণ বিষয় হল, এই চার্টের দিকে নজর দিয়ে আপনি অবিলম্বে জানতে পারবেন কোন APK কোন প্রদত্ত API/স্ক্রিন-আকার কম্বো কভার করে। বুট করার জন্য, আপনার কাছে প্রত্যেকটির জন্য অসাধারন কোডনেম রয়েছে, যেহেতু "আমরা কি লাল পরীক্ষা করেছি?" আপনার কিউবিকে জিজ্ঞাসা করা অনেক সহজ "আমরা কি Xoom-এর বিপরীতে 3-থেকে-10 x বড় আকারের APK পরীক্ষা করেছি?" এই চার্টটি প্রিন্ট করুন এবং আপনার কোডবেসে কাজ করা প্রত্যেক ব্যক্তির কাছে এটি হস্তান্তর করুন। জীবন অনেক সহজ হয়ে গেছে।

একটি লাইব্রেরি প্রকল্পে সমস্ত সাধারণ কোড এবং সংস্থান রাখুন

আপনি একটি বিদ্যমান অ্যান্ড্রয়েড অ্যাপ্লিকেশান সংশোধন করছেন বা স্ক্র্যাচ থেকে শুরু করছেন না কেন, কোডবেসে আপনার এটিই প্রথম কাজ এবং সবচেয়ে গুরুত্বপূর্ণ। লাইব্রেরি প্রজেক্টের মধ্যে যা কিছু যায় তা শুধুমাত্র একবার আপডেট করা দরকার (ভাবুন ভাষা-স্থানীয় স্ট্রিং, রঙের থিম, ভাগ করা কোডে বাগ সংশোধন করা হয়েছে), যা আপনার বিকাশের সময়কে উন্নত করে এবং ভুল হওয়ার সম্ভাবনা কমিয়ে দেয় যা সহজেই এড়ানো যেত।

দ্রষ্টব্য: লাইব্রেরি প্রকল্পগুলি কীভাবে তৈরি এবং অন্তর্ভুক্ত করতে হবে তার বাস্তবায়নের বিশদগুলি এই পাঠের সুযোগের বাইরে হলেও, আপনি একটি Android লাইব্রেরি তৈরি করুন পড়ার মাধ্যমে গতি পেতে পারেন৷

আপনি যদি একাধিক APK সমর্থন ব্যবহার করার জন্য একটি বিদ্যমান অ্যাপ্লিকেশন রূপান্তর করে থাকেন, তাহলে প্রতিটি স্থানীয় স্ট্রিং ফাইল, মানগুলির তালিকা, থিমের রঙ, মেনু আইকন এবং লেআউটের জন্য আপনার কোডবেসটি ঘষে নিন যা APK গুলি জুড়ে পরিবর্তিত হতে যাচ্ছে না এবং এটি সবই রাখুন লাইব্রেরি প্রকল্প। যে কোডটি খুব বেশি পরিবর্তন করতে যাচ্ছে না তাও লাইব্রেরি প্রকল্পে যেতে হবে। আপনি সম্ভবত APK থেকে APK-তে একটি বা দুটি পদ্ধতি যোগ করতে এই ক্লাসগুলিকে প্রসারিত করতে দেখতে পাবেন।

অন্যদিকে, আপনি যদি স্ক্র্যাচ থেকে অ্যাপ্লিকেশনটি তৈরি করেন, লাইব্রেরি প্রজেক্টে প্রথমে কোড লেখার জন্য যতটা সম্ভব চেষ্টা করুন, তারপর প্রয়োজন হলে শুধুমাত্র এটিকে একটি পৃথক APK-এ সরান৷ এটি একটি, তারপরে আরেকটি, তারপরে আরেকটিতে যোগ করার চেয়ে দীর্ঘমেয়াদে এটি পরিচালনা করা অনেক সহজ, তারপরে কয়েক মাস পরে এই ব্লবটিকে লাইব্রেরি বিভাগে স্থানান্তরিত করা যেতে পারে কিনা তা বোঝার চেষ্টা করা ছাড়াই।

নতুন APK প্রকল্প তৈরি করুন

আপনি যে প্রতিটি APK প্রকাশ করতে যাচ্ছেন তার জন্য একটি আলাদা অ্যান্ড্রয়েড প্রকল্প থাকা উচিত। সহজ সংগঠনের জন্য, লাইব্রেরি প্রজেক্ট এবং সমস্ত সম্পর্কিত APK প্রোজেক্ট একই প্যারেন্ট ফোল্ডারের অধীনে রাখুন। এছাড়াও মনে রাখবেন যে প্রতিটি APK-এর একই প্যাকেজ নাম থাকা দরকার, যদিও তাদের লাইব্রেরির সাথে প্যাকেজের নাম শেয়ার করার প্রয়োজন নেই। পূর্বে বর্ণিত স্কিম অনুসরণ করে আপনার কাছে 3টি APK থাকলে, আপনার রুট ডিরেক্টরিটি এইরকম দেখতে পারে:

alexlucas:~/code/multi-apks-root$ ls
foo-blue
foo-green
foo-lib
foo-purple
foo-red

প্রকল্পগুলি তৈরি হয়ে গেলে, প্রতিটি APK প্রকল্পের রেফারেন্স হিসাবে লাইব্রেরি প্রকল্প যোগ করুন। যদি সম্ভব হয়, লাইব্রেরি প্রকল্পে আপনার শুরুর কার্যকলাপ সংজ্ঞায়িত করুন এবং আপনার APK প্রকল্পে সেই কার্যকলাপটি প্রসারিত করুন। লাইব্রেরি প্রজেক্টে সংজ্ঞায়িত একটি প্রারম্ভিক ক্রিয়াকলাপ আপনাকে এক জায়গায় আপনার সমস্ত অ্যাপ্লিকেশন আরম্ভ করার সুযোগ দেয়, যাতে প্রতিটি পৃথক APK কে অ্যানালিটিক্স শুরু করা, লাইসেন্সিং চেক চালানো এবং যেকোনও "সর্বজনীন" কাজগুলি পুনরায় প্রয়োগ করতে না হয়। অন্যান্য প্রারম্ভিক পদ্ধতি যা APK থেকে APK-তে খুব বেশি পরিবর্তন করে না।

ম্যানিফেস্টগুলি সামঞ্জস্য করুন

যখন একজন ব্যবহারকারী Google Play এর মাধ্যমে একাধিক APK ব্যবহার করে এমন একটি অ্যাপ্লিকেশন ডাউনলোড করেন, তখন দুটি সহজ নিয়ম ব্যবহার করে ব্যবহার করার জন্য সঠিক APK বেছে নেওয়া হয়:

  • ম্যানিফেস্টকে দেখাতে হবে যে নির্দিষ্ট APK যোগ্য
  • যোগ্য APKগুলির মধ্যে, সর্বোচ্চ সংস্করণ নম্বর জিতেছে।

উদাহরণ স্বরূপ, আগে বর্ণিত একাধিক APK-এর সেট নেওয়া যাক, এবং ধরে নিই যে প্রতিটি APK তার "লক্ষ্য" স্ক্রীনের আকারের চেয়ে বড় সমস্ত স্ক্রীন সাইজ সমর্থন করার জন্য সেট করা হয়েছে। আগে থেকে নমুনা চার্ট তাকান:

3 4 5 6 7 8 9 10 11 12 +
ছোট
স্বাভাবিক
বড়
বড়

যেহেতু কভারেজ ওভারল্যাপ করার জন্য এটি ঠিক আছে, তাই আমরা প্রতিটি APK দ্বারা আচ্ছাদিত এলাকাটিকে এভাবে বর্ণনা করতে পারি:

  • নীল সব পর্দা কভার করে, minSDK 3।
  • সবুজ কভার বড় স্ক্রীন এবং উচ্চতর, minSDK 3।
  • লাল কভার XLarge পর্দা (সাধারণত ট্যাবলেট), 9 এর minSDK।
  • বেগুনি সব পর্দা কভার করে, 11 এর minSDK।

মনে রাখবেন যে এই নিয়মগুলিতে প্রচুর ওভারল্যাপ রয়েছে। উদাহরণস্বরূপ, API 11 সহ একটি XLarge ডিভাইস অনুমানযোগ্যভাবে নির্দিষ্ট করা 4টি APK-এর যেকোনো একটি চালাতে পারে। যাইহোক, "সর্বোচ্চ সংস্করণ নম্বর জয়" নিয়মটি ব্যবহার করে, আমরা নিম্নরূপ পছন্দের একটি ক্রম সেট করতে পারি:

বেগুনি ≥ লাল ≥ সবুজ ≥ নীল

কেন সব ওভারল্যাপ অনুমতি? আসুন ভান করি যে বেগুনি APK এর কিছু প্রয়োজনীয়তা রয়েছে যা অন্য দুটিতে নেই। অ্যান্ড্রয়েড ডেভেলপার গাইডের Google Play পৃষ্ঠায় ফিল্টারে সম্ভাব্য অপরাধীদের একটি সম্পূর্ণ তালিকা রয়েছে। উদাহরণের খাতিরে, ধরে নেওয়া যাক যে বেগুনিটির জন্য একটি সামনের দিকের ক্যামেরা প্রয়োজন। আসলে, পার্পলের পুরো পয়েন্টটি হল সামনের দিকের ক্যামেরা দিয়ে বিনোদনমূলক জিনিস ব্যবহার করা! কিন্তু, দেখা যাচ্ছে, সব API 11+ ডিভাইসে এমনকি সামনের দিকের ক্যামেরাও নেই! +ভৌতিক !

সৌভাগ্যবশত, যদি একজন ব্যবহারকারী এই ধরনের একটি ডিভাইস থেকে Google Play ব্রাউজ করেন, তাহলে Google Play ম্যানিফেস্টটি দেখবে, দেখবে যে পার্পল একটি প্রয়োজনীয়তা হিসাবে সামনের দিকের ক্যামেরাটিকে তালিকাভুক্ত করেছে এবং চুপচাপ এটিকে উপেক্ষা করে, এটি নির্ধারণ করে যে বেগুনি এবং সেই ডিভাইসটি একটি নয় ডিজিটাল স্বর্গে তৈরি ম্যাচ। এটি তখন দেখবে যে রেড শুধুমাত্র x বৃহৎ ডিভাইসের সাথেই সামঞ্জস্যপূর্ণ নয়, তবে সামনের দিকের ক্যামেরা আছে কিনা তাও চিন্তা করে না! অ্যাপটি এখনও ব্যবহারকারীরা Google Play থেকে ডাউনলোড করতে পারেন, কারণ পুরো ফ্রন্ট-ক্যামেরা দুর্ঘটনা সত্ত্বেও, এখনও একটি APK ছিল যা সেই নির্দিষ্ট API স্তরকে সমর্থন করে।

আপনার সমস্ত APK আলাদা "ট্র্যাকে" রাখার জন্য, একটি ভাল সংস্করণ কোড স্কিম থাকা গুরুত্বপূর্ণ৷ প্রস্তাবিত একটি আমাদের বিকাশকারী গাইডের সংস্করণ কোড এলাকায় পাওয়া যাবে। এটি পুরো বিভাগটি পড়ার মতো, কিন্তু মৌলিক সারমর্ম হল APK-এর এই সেটের জন্য, আমরা minSDK উপস্থাপন করতে দুটি সংখ্যা, ন্যূনতম/সর্বোচ্চ স্ক্রীনের আকার উপস্থাপন করতে দুটি এবং বিল্ড নম্বর উপস্থাপন করতে 3টি ব্যবহার করব৷ এইভাবে, যখন ডিভাইসটি অ্যান্ড্রয়েডের একটি নতুন সংস্করণে আপগ্রেড করা হয়, (বলুন, 10 থেকে 11 পর্যন্ত), যেকোনও APK যা বর্তমানে যোগ্য এবং বর্তমানে ইনস্টল করা একটির চেয়ে পছন্দ করা হয়েছে সেটিকে ডিভাইসটি "আপগ্রেড" হিসাবে দেখাবে। সংস্করণ নম্বর স্কিম, যখন APK-এর উদাহরণ সেটে প্রয়োগ করা হয়, তখন এর মতো দেখতে হতে পারে:

নীল: 0304001, 0304002, 0304003...
সবুজ: 0334001, 0334002, 0334003
লাল: 0344001, 0344002, 0344003...
বেগুনি: 1104001, 1104002, 1104003...

এই সব একসাথে রাখলে, আপনার Android ম্যানিফেস্টগুলি সম্ভবত নিম্নলিখিতগুলির মতো দেখতে পাবে:

নীল:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="0304001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="3" />
    <supports-screens android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />
    ...

সবুজ:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="0334001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="3" />
    <supports-screens android:smallScreens="false"
        android:normalScreens="false"
        android:largeScreens="true"
        android:xlargeScreens="true" />
    ...

লাল:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="0344001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="3" />
    <supports-screens android:smallScreens="false"
        android:normalScreens="false"
        android:largeScreens="false"
        android:xlargeScreens="true" />
    ...

বেগুনি:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="1104001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="11" />
    <supports-screens android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />
    ...

মনে রাখবেন যে প্রযুক্তিগতভাবে, একাধিক APK হয় সমর্থন-স্ক্রিন ট্যাগ বা সামঞ্জস্যপূর্ণ-স্ক্রিন ট্যাগের সাথে কাজ করবে। সাপোর্ট-স্ক্রিনগুলি সাধারণত পছন্দ করা হয়, এবং উভয়ই ব্যবহার করা সাধারণত একটি খারাপ ধারণা- এটি জিনিসগুলিকে অকারণে জটিল করে তোলে এবং ত্রুটির সুযোগ বাড়ায়৷ এছাড়াও মনে রাখবেন যে ডিফল্ট মানগুলির সুবিধা নেওয়ার পরিবর্তে (ছোট এবং স্বাভাবিক সর্বদা ডিফল্টভাবে সত্য), ম্যানিফেস্টগুলি স্পষ্টভাবে প্রতিটি পর্দার আকারের জন্য মান সেট করে। এটি লাইনের নিচে আপনার মাথাব্যথা সেভ করতে পারে - উদাহরণস্বরূপ, <9 এর একটি টার্গেট SDK সহ একটি ম্যানিফেস্টে xlarge স্বয়ংক্রিয়ভাবে মিথ্যাতে সেট হয়ে যাবে, যেহেতু সেই আকারটি এখনও বিদ্যমান ছিল না। তাই স্পষ্ট হতে!

আপনার প্রাক-লঞ্চ চেকলিস্ট পর্যালোচনা করুন

Google Play-এ আপলোড করার আগে, নিম্নলিখিত আইটেমগুলি দুবার চেক করুন৷ মনে রাখবেন যে এগুলি একাধিক APK-এর জন্য বিশেষভাবে প্রাসঙ্গিক, এবং Google Play-তে আপলোড করা সমস্ত অ্যাপ্লিকেশনের জন্য একটি সম্পূর্ণ চেকলিস্ট উপস্থাপন করে না৷

  • সমস্ত APK-এর একই প্যাকেজের নাম থাকতে হবে।
  • সমস্ত APK একই শংসাপত্রের সাথে স্বাক্ষরিত হতে হবে৷
  • যদি প্ল্যাটফর্ম সংস্করণে APKগুলি ওভারল্যাপ হয়, তাহলে উচ্চতর minSdkVersion এর একটি উচ্চতর সংস্করণ কোড থাকতে হবে।
  • প্রতিটি স্ক্রিনের আকার যা আপনি আপনার APK সমর্থন করতে চান, ম্যানিফেস্টে সত্য হিসাবে সেট করুন৷ প্রতিটি স্ক্রীন সাইজ আপনি এটি এড়াতে চান, মিথ্যা সেট করুন।
  • বিরোধপূর্ণ তথ্যের জন্য আপনার ম্যানিফেস্ট ফিল্টারগুলি দুবার চেক করুন (একটি APK যা শুধুমাত্র XLARGE স্ক্রিনে কাপকেক সমর্থন করে তা কেউ দেখতে পাবে না)
  • প্রতিটি APK এর ম্যানিফেস্টকে অবশ্যই স্বতন্ত্র হতে হবে অন্তত একটি সমর্থিত স্ক্রীন, OpenGL টেক্সচার বা প্ল্যাটফর্ম সংস্করণে।
  • অন্তত একটি ডিভাইসে প্রতিটি APK পরীক্ষা করার চেষ্টা করুন। এটি বাদ দিয়ে, আপনার ডেভেলপমেন্ট মেশিনে বসে থাকা ব্যবসার সবচেয়ে কাস্টমাইজযোগ্য ডিভাইস এমুলেটরগুলির মধ্যে একটি রয়েছে৷ বাদাম যান!

Google Play-তে আপনার অ্যাপ্লিকেশন লুকিয়ে রাখতে পারে এমন কোনো চমক নেই তা নিশ্চিত করতে বাজারে পাঠানোর আগে সংকলিত APK পরিদর্শন করাও মূল্যবান। এটি আসলে "aapt" টুল ব্যবহার করে বেশ সহজ। Aapt (অ্যান্ড্রয়েড অ্যাসেট প্যাকেজিং টুল) আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি তৈরি এবং প্যাকেজ করার জন্য বিল্ড প্রক্রিয়ার অংশ এবং সেগুলি পরিদর্শনের জন্য একটি খুব সহজ টুলও৷

>aapt dump badging
package: name='com.example.hello' versionCode='1' versionName='1.0'
sdkVersion:'11'
uses-permission:'android.permission.SEND_SMS'
application-label:'Hello'
application-icon-120:'res/drawable-ldpi/icon.png'
application-icon-160:'res/drawable-mdpi/icon.png'
application-icon-240:'res/drawable-hdpi/icon.png'
application: label='Hello' icon='res/drawable-mdpi/icon.png'
launchable-activity: name='com.example.hello.HelloActivity'  label='Hello' icon=''
uses-feature:'android.hardware.telephony'
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'xlarge'
supports-any-density: 'true'
locales: '--_--'
densities: '120' '160' '240'

আপনি যখন aapt আউটপুট পরীক্ষা করেন, তখন নিশ্চিত হয়ে নিন যে আপনার কাছে সমর্থন-স্ক্রিন এবং সামঞ্জস্যপূর্ণ-স্ক্রিনগুলির জন্য বিরোধপূর্ণ মান নেই এবং আপনার কাছে অনাকাঙ্ক্ষিত "ব্যবহার-বৈশিষ্ট্য" মান নেই যা আপনার অনুমতির ফলে যোগ করা হয়েছে ম্যানিফেস্টে সেট করুন। উপরের উদাহরণে, সমস্ত ডিভাইস না হলে APK বেশিরভাগের কাছেই অদৃশ্য হবে।

কেন? প্রয়োজনীয় অনুমতি SEND_SMS যোগ করে, android.hardware.telephony-এর বৈশিষ্ট্যের প্রয়োজনীয়তা নিহিতভাবে যোগ করা হয়েছে। যেহেতু বেশির ভাগ (যদি সব না হয়) x বৃহৎ ডিভাইসগুলি টেলিফোনি হার্ডওয়্যার ছাড়াই ট্যাবলেট, তাই Google Play এই ক্ষেত্রে এই APK ফিল্টার করবে, যতক্ষণ না ভবিষ্যতের ডিভাইসগুলি বড় আকারের স্ক্রীন আকার হিসাবে রিপোর্ট করার জন্য যথেষ্ট বড় এবং টেলিফোনি হার্ডওয়্যারের অধিকারী না হওয়া পর্যন্ত।

সৌভাগ্যবশত আপনার ম্যানিফেস্টে নিম্নলিখিতগুলি যোগ করে এটি সহজেই ঠিক করা হয়েছে:

<uses-feature android:name="android.hardware.telephony" android:required="false" />

android.hardware.touchscreen প্রয়োজনীয়তাও অন্তর্নিহিতভাবে যোগ করা হয়েছে। আপনি যদি চান যে আপনার APK টিভিতে দৃশ্যমান হোক যা নন-টাচস্ক্রিন ডিভাইস আপনার ম্যানিফেস্টে নিম্নলিখিতগুলি যোগ করা উচিত:

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

একবার আপনি প্রি-লঞ্চ চেকলিস্ট সম্পূর্ণ করলে, Google Play-তে আপনার APK আপলোড করুন। Google Play ব্রাউজ করার সময় অ্যাপ্লিকেশনটি প্রদর্শিত হতে কিছুটা সময় লাগতে পারে, কিন্তু যখন এটি হয়, একটি শেষ পরীক্ষা করুন৷ যেকোন পরীক্ষামূলক ডিভাইসে অ্যাপ্লিকেশনটি ডাউনলোড করুন আপনাকে নিশ্চিত করতে হবে যে APKগুলি উদ্দেশ্যযুক্ত ডিভাইসগুলিকে লক্ষ্য করে। অভিনন্দন, আপনি সম্পন্ন!