টুলস অ্যাট্রিবিউট রেফারেন্স

যদিও Jetpack Compose সরাসরি Kotlin-এ UI ডিজাইন-টাইম টুলিং পরিচালনা করে, তবুও প্রোজেক্ট-স্তরের কনফিগারেশনের জন্য tools: নেমস্পেসটি অপরিহার্য। AndroidManifest.xml এবং res/raw/keep.xml এর মতো স্ট্যান্ডার্ড অ্যান্ড্রয়েড XML ফাইলগুলো Lint ওয়ার্নিং পরিচালনা করতে এবং রিসোর্স শ্রিঙ্কার কনফিগার করতে tools: অ্যাট্রিবিউট ব্যবহার করে।

যখন আপনি আপনার অ্যাপ বিল্ড করেন, তখন বিল্ড টুলগুলো এই অ্যাট্রিবিউটগুলো সরিয়ে দেয়, ফলে আপনার APK-এর আকার বা রানটাইম আচরণের উপর কোনো প্রভাব পড়ে না।

এই অ্যাট্রিবিউটগুলো ব্যবহার করতে, প্রতিটি XML ফাইলের রুট এলিমেন্টে tools নেমস্পেসটি যোগ করুন যেখানে আপনি এগুলো ব্যবহার করতে চান, যেমনটি এখানে দেখানো হয়েছে:

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

ত্রুটি-পরিচালনা অ্যাট্রিবিউট

নিম্নলিখিত অ্যাট্রিবিউটগুলো লিন্ট সতর্কীকরণ বার্তা দমন করতে সাহায্য করে:

tools:ignore

উদ্দিষ্ট: যেকোনো উপাদান

ব্যবহৃত: লিন্ট

এই অ্যাট্রিবিউটটি লিন্ট ইস্যু আইডিগুলোর একটি কমা-দ্বারা-বিভক্ত তালিকা গ্রহণ করে, যেগুলোকে আপনি এই এলিমেন্ট বা এর যেকোনো উত্তরসূরির ক্ষেত্রে টুলগুলো দ্বারা উপেক্ষা করাতে চান।

উদাহরণস্বরূপ, আপনি টুলগুলোকে MissingTranslation ত্রুটিটি উপেক্ষা করতে বলতে পারেন:

<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

tools:targetApi

উদ্দিষ্ট : যেকোনো উপাদান

ব্যবহৃত : লিন্ট

এই অ্যাট্রিবিউটটি জাভা কোডের @TargetApi অ্যানোটেশন বা কোটলিন কোডের @RequiresApi অ্যানোটেশনের মতোই কাজ করে। এটি আপনাকে সেই API লেভেল (পূর্ণসংখ্যা বা কোড নাম হিসেবে) নির্দিষ্ট করতে দেয়, যা এই এলিমেন্টটিকে সমর্থন করে।

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

উদাহরণস্বরূপ, আপনি এই অ্যাট্রিবিউটটি ব্যবহার করতে পারেন কারণ আপনি আপনার AndroidManifest.xml এ এমন একটি <service> ডিক্লেয়ার করছেন যা এমন একটি ফোরগ্রাউন্ড সার্ভিস টাইপ ব্যবহার করে যা শুধুমাত্র API লেভেল 34 এবং তার উপরের ভার্সনে উপলব্ধ, কিন্তু আপনার প্রোজেক্টের minSdkVersion তার চেয়ে কম:

<service
    android:name=".playback.MediaPlaybackService"
    android:foregroundServiceType="mediaPlayback"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="34" />

tools:locale

উদ্দিষ্ট: <resources>

ব্যবহৃত হয়: লিন্ট, অ্যান্ড্রয়েড স্টুডিও এডিটর

এটি টুলগুলোকে বলে দেয় যে প্রদত্ত <resources> এলিমেন্টের রিসোর্সগুলোর জন্য ডিফল্ট ভাষা বা লোকেল কী, যাতে স্পেলচেকারের সতর্কবার্তা এড়ানো যায়। অন্যথায় টুলটি ভাষাটিকে ইংরেজি বলে ধরে নেয়।

মানটি অবশ্যই একটি বৈধ লোকেল কোয়ালিফায়ার হতে হবে।

উদাহরণস্বরূপ, ডিফল্ট স্ট্রিংগুলির জন্য ব্যবহৃত ভাষা ইংরেজির পরিবর্তে স্প্যানিশ হবে তা নির্দেশ করতে আপনি আপনার default values/strings.xml ফাইলে এটি যোগ করতে পারেন:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

সম্পদ সঙ্কুচিত বৈশিষ্ট্য

নিম্নলিখিত অ্যাট্রিবিউটগুলো আপনাকে কঠোর রেফারেন্স চেক সক্রিয় করতে এবং রিসোর্স সঙ্কুচিতকরণ ব্যবহার করার সময় নির্দিষ্ট রিসোর্স রাখা হবে নাকি বাদ দেওয়া হবে তা নির্ধারণ করতে দেয়।

রিসোর্স সঙ্কুচিতকরণ সক্রিয় করতে, আপনার build.gradle ফাইলে shrinkResources প্রপার্টিটির মান true সেট করুন এবং এর পাশাপাশি কোড সঙ্কুচিত করার জন্য minifyEnabled সেট করুন।

উদাহরণস্বরূপ:

গ্রুভি

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

কোটলিন

android {
    ...
    buildTypes {
        getByName("release") {
            isShrinkResources = true
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android.txt"),
                "proguard-rules.pro"
            )
        }
    }
}

tools:shrinkMode

উদ্দিষ্ট: <resources>

ব্যবহৃত হয়: রিসোর্স সংকোচনের সাথে বিল্ড টুলস

এই অ্যাট্রিবিউটটি আপনাকে নির্দিষ্ট করতে দেয় যে বিল্ড টুলগুলি নিম্নলিখিতগুলি ব্যবহার করবে কিনা:

  • সেফ মোড: সেই সমস্ত রিসোর্স রাখুন যা স্পষ্টভাবে উল্লেখ করা হয়েছে এবং যা Resources.getIdentifier() কল করে ডায়নামিকভাবে রেফারেন্স করা হতে পারে
  • কঠোর মোড: শুধুমাত্র সেই রিসোর্সগুলো রাখুন যেগুলো কোডে বা অন্যান্য রিসোর্সে স্পষ্টভাবে উল্লেখ করা হয়েছে।

ডিফল্টভাবে সেফ মোড ( shrinkMode="safe" ) ব্যবহৃত হয়। এর পরিবর্তে স্ট্রিক্ট মোড ব্যবহার করতে চাইলে, <resources> ট্যাগে shrinkMode="strict" যোগ করুন, যেমনটি এখানে দেখানো হয়েছে:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

যখন আপনি স্ট্রিক্ট মোড চালু করবেন, তখন মুছে ফেলা রিসোর্সগুলো রাখার জন্য, যেগুলো আপনি আসলে চান, আপনার tools:keep ব্যবহার করার প্রয়োজন হতে পারে এবং আরও বেশি রিসোর্স সুস্পষ্টভাবে মুছে ফেলার জন্য tools:discard ব্যবহার করতে পারেন।

আরও তথ্যের জন্য, আপনার সম্পদ সংকুচিত করুন দেখুন।

tools:keep

উদ্দিষ্ট: <resources>

ব্যবহৃত হয়: রিসোর্স সংকোচনের সাথে বিল্ড টুলস

অব্যবহৃত রিসোর্স অপসারণ করতে রিসোর্স সঙ্কুচিতকরণ ব্যবহার করার সময়, এই অ্যাট্রিবিউটটি আপনাকে কোন রিসোর্সগুলো রাখতে হবে তা নির্দিষ্ট করার সুযোগ দেয়; সাধারণত কারণ রানটাইমে সেগুলোকে পরোক্ষভাবে উল্লেখ করা হয়, যেমন Resources.getIdentifier() -এ একটি ডায়নামিকভাবে তৈরি রিসোর্সের নাম পাস করার মাধ্যমে।

ব্যবহার করতে, আপনার রিসোর্স ডিরেক্টরিতে (উদাহরণস্বরূপ, res/raw/keep.xml ) একটি <resources> ট্যাগ সহ একটি XML ফাইল তৈরি করুন এবং প্রতিটি রিসোর্সকে tools:keep অ্যাট্রিবিউটে কমা দ্বারা পৃথক করা তালিকা হিসাবে নির্দিষ্ট করুন। আপনি ওয়াইল্ডকার্ড হিসাবে অ্যাস্টারিস্ক অক্ষরটি ব্যবহার করতে পারেন।

উদাহরণস্বরূপ:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />

আরও তথ্যের জন্য, আপনার সম্পদ সংকুচিত করুন দেখুন।

tools:discard

উদ্দিষ্ট: <resources>

ব্যবহৃত হয়: রিসোর্স সংকোচনের সাথে বিল্ড টুলস

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

ব্যবহার করতে, আপনার রিসোর্স ডিরেক্টরিতে (উদাহরণস্বরূপ, res/raw/keep.xml ) একটি <resources> ট্যাগ সহ একটি XML ফাইল তৈরি করুন এবং বাতিল করার জন্য প্রতিটি রিসোর্সকে tools:discard অ্যাট্রিবিউটে কমা দ্বারা পৃথক করা তালিকা হিসাবে নির্দিষ্ট করুন। আপনি ওয়াইল্ডকার্ড হিসাবে অ্যাস্টারিস্ক অক্ষরটি ব্যবহার করতে পারেন।

উদাহরণস্বরূপ:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@layout/unused_1" />

আরও তথ্যের জন্য, আপনার সম্পদ সংকুচিত করুন দেখুন।

অতিরিক্ত সম্পদ

বিষয়বস্তু দেখুন