منابع برنامه را اضافه کنید

منابع برنامه، مانند بیت مپ و طرح‌بندی، در دایرکتوری‌های نوع خاص در داخل دایرکتوری res/ هر ماژول سازماندهی شده‌اند. همچنین می‌توانید نسخه‌های جایگزین هر فایل را اضافه کنید که برای پیکربندی‌های دستگاه‌های مختلف بهینه‌سازی شده‌اند، مانند نسخه‌ای با وضوح بالا از یک بیت مپ برای صفحه‌های با چگالی بالا.

اندروید استودیو بسته به نوع منبعی که می‌خواهید اضافه کنید، به شما کمک می‌کند منابع جدید و منابع جایگزین را به روش‌های مختلفی اضافه کنید. این صفحه نحوه افزودن فایل های منبع اصلی، نحوه تغییر مکان منابع و نحوه ادغام منابع را توضیح می دهد.

برای جزئیات در مورد نحوه ایجاد انواع منابع خاص، به صفحات زیر مراجعه کنید:

برای اطلاعات در مورد نحوه ارجاع منابع از کد برنامه خود، به نمای کلی منابع برنامه مراجعه کنید.

یک فایل منبع XML اضافه کنید

اگرچه پیوندهای صفحه قبل گردش کار را توصیف می کند که برای هر نوع منبع سفارشی شده است، می توانید هر فایل منبع XML را با دنبال کردن این مراحل اضافه کنید:

  1. روی ماژول برنامه هدف در پنجره Project در نمای Android یا Project کلیک کنید.

  2. فایل > جدید > فایل منبع Android را انتخاب کنید.

    شکل 1. گفتگوی فایل منبع جدید .

  3. جزئیات را در گفتگو پر کنید:
    • نام فایل : نام فایل XML را وارد کنید (این کار به پسوند .xml نیاز ندارد).
    • نوع منبع : نوع منبعی را که می خواهید ایجاد کنید انتخاب کنید.
    • عنصر ریشه : در صورت وجود، عنصر ریشه XML را برای فایل انتخاب کنید. برخی از انواع منابع تنها از یک نوع عنصر ریشه پشتیبانی می کنند. بسته به نوع منبع انتخاب شده، این ممکن است قابل ویرایش نباشد.
    • مجموعه منبع : مجموعه منبعی را که می خواهید فایل را در آن ذخیره کنید انتخاب کنید.
    • نام دایرکتوری : دایرکتوری باید به گونه ای نامگذاری شود که مختص نوع منبع و واجد شرایط پیکربندی باشد. این را ویرایش نکنید، مگر اینکه بخواهید به صورت دستی واجد شرایط پیکربندی را به نام دایرکتوری اضافه کنید (به جای آن از واجد شرایط استفاده کنید).
    • واجد شرایط : به جای قرار دادن دستی واجد شرایط پیکربندی در نام دایرکتوری خود، می‌توانید با انتخاب یک واجد شرایط از لیست و کلیک کردن روی افزودن، آنها را اضافه کنید. .
  4. پس از افزودن همه واجد شرایط مورد نظر، روی OK کلیک کنید.

نکته: برای باز کردن یک نسخه ساده از گفتگوی فایل منبع جدید که مخصوص نوع منبعی است که می‌خواهید اضافه کنید، روی فهرست منبع موجود در پوشه res راست کلیک کرده و New > type-name resource file را انتخاب کنید.

منابع پیچیده XML درون خطی

برخی از منابع پیچیده به چندین فایل منبع XML نیاز دارند. به عنوان مثال، یک وکتور متحرک دارای یک شی قابل ترسیم برداری و یک شی انیمیشن است و حداقل به سه فایل XML نیاز دارد.

در این مثال، در صورت نیاز به استفاده مجدد از یک یا چند مورد از آنها، می توانید سه فایل XML مجزا را ایجاد و نگهداری کنید. اما اگر فایل‌های XML فقط برای این تصویر برداری متحرک مورد استفاده قرار می‌گیرند، می‌توانید در عوض از قالب منبع درون خطی ارائه شده در ابزار بسته‌بندی دارایی Android (AAPT) استفاده کنید. با AAPT می توانید هر سه منبع را در یک فایل XML تعریف کنید. برای اطلاعات بیشتر، منابع XML پیچیده درون خطی را ببینید.

یک فهرست منبع اضافه کنید

برای افزودن یک فهرست منبع جدید، این مراحل را دنبال کنید:

  1. روی ماژول برنامه هدف در پنجره Project کلیک کنید.

  2. فایل > جدید > فهرست منابع Android را انتخاب کنید.

    شکل 2. گفتگوی فهرست منابع جدید .

  3. جزئیات را در گفتگو پر کنید:
    • نام دایرکتوری : دایرکتوری باید به گونه ای نامگذاری شود که مختص نوع منبع و ترکیبی از واجد شرایط پیکربندی باشد. این را ویرایش نکنید، مگر اینکه بخواهید به صورت دستی واجد شرایط پیکربندی را به نام دایرکتوری اضافه کنید (به جای آن از واجد شرایط استفاده کنید).
    • نوع منبع: نوع منبعی را که می خواهید دایرکتوری حاوی آن باشد انتخاب کنید.
    • مجموعه منبع: مجموعه منبعی را که در آن دایرکتوری می خواهید انتخاب کنید.
    • واجد شرایط: به جای قرار دادن دستی واجد شرایط پیکربندی در نام دایرکتوری خود، می‌توانید با انتخاب یک واجد شرایط از لیست و کلیک کردن روی افزودن، آنها را اضافه کنید. .
  4. پس از افزودن همه واجد شرایط مورد نظر، روی OK کلیک کنید.

دایرکتوری منابع خود را تغییر دهید

به طور پیش فرض، منابع شما در module-name /src/ source-set-name /res/ قرار دارند. به عنوان مثال، منابع مجموعه منبع اصلی ماژول شما در src/main/res/ و منابع مجموعه منبع اشکال زدایی در src/debug/res/ هستند.

با این حال، می توانید این مسیرها را به هر مکان دیگری (نسبت به فایل build.gradle ) با ویژگی res.srcDirs در بلوک sourceSets تغییر دهید. به عنوان مثال:

شیار

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

کاتلین

android {
    sourceSets {
        getByName("main") {
            res.srcDirs("resources/main")
        }
        getByName("debug") {
            res.srcDirs("resources/debug")
        }
    }
}

همچنین می توانید چندین فهرست منابع را برای یک مجموعه منبع مشخص کنید و سپس ابزارهای ساخت آنها را با هم ادغام کنند. به عنوان مثال:

شیار

android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

کاتلین

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

برای اطلاعات بیشتر، درباره مجموعه های منبع بخوانید.

ادغام منابع

منابع موجود در فایل برنامه نهایی شما می تواند از سه منبع باشد:

  • مجموعه منبع اصلی (به طور کلی در src/main/res/ قرار دارد)
  • مجموعه های منبع متنوع را بسازید
  • کتابخانه های اندروید (AARs)

وقتی همه منابع از هر مجموعه منبع یا کتابخانه منحصر به فرد هستند، همه آنها به برنامه نهایی اضافه می شوند. یک منبع در صورتی منحصر به فرد در نظر گرفته می شود که نام فایل آن هم در دایرکتوری نوع منبع و هم در واجد شرایط منبع (در صورت تعریف) منحصر به فرد باشد.

اگر دو یا چند نسخه مشابه از یک منبع وجود داشته باشد، تنها یک نسخه در برنامه نهایی گنجانده شده است. ابزارهای ساخت بر اساس ترتیب اولویت زیر (بالاترین اولویت در سمت چپ) انتخاب می کنند که کدام نسخه حفظ شود:

نوع ساخت > نوع ساخت > طعم محصول > مجموعه منبع اصلی > وابستگی های کتابخانه

به عنوان مثال، اگر مجموعه منبع اصلی شامل:

  • res/layout/example.xml
  • res/layout-land/example.xml

و نوع ساخت اشکال زدایی شامل موارد زیر است:

  • res/layout/example.xml

سپس برنامه نهایی شامل res/layout/example.xml از نوع ساخت اشکال زدایی و res/layout-land/example.xml از مجموعه منبع اصلی است.

با این حال، اگر پیکربندی ساخت شما چندین پوشه منبع را برای یک مجموعه منبع مشخص مشخص کند و بین آن منابع تداخل وجود داشته باشد، خطایی رخ می دهد و ادغام با شکست مواجه می شود زیرا هر فهرست منبع دارای اولویت یکسانی است.