کتابخانه خود را برای انتشار آماده کنید

این صفحه ویژگی‌ها و گزینه‌های مورد نیاز برای آماده‌سازی پروژه کتابخانه Android خود را برای انتشار با استفاده از افزونه Android Gradle (AGP) توضیح می‌دهد. حتی اگر برخی از این ویژگی ها را در ابتدای ایجاد کتابخانه خود تنظیم کرده اید، دستورالعمل زیر را برای بهینه سازی تنظیمات خود مرور کنید.

یک فضای نام انتخاب کنید

کتابخانه های اندروید باید یک فضای نام را اعلام کنند تا بتوانند در هنگام کامپایل شدن منابع خود یک کلاس R منحصر به فرد ایجاد کنند. این فضای نام باید دقیقاً با بسته کلاس ریشه کتابخانه مطابقت داشته باشد تا وقتی کاربران کلاس‌های معمولی را از کتابخانه و کلاس R آن وارد می‌کنند دچار سردرگمی نشود.

با شروع با AGP 7.0، می توانید فضای نام را در فایل build.gradle برنامه تنظیم کنید، همانطور که در مثال کد زیر نشان داده شده است:

شیار

android {
  namespace = 'com.example.library'
}

کاتلین

android {
  namespace = "com.example.library"
}

فضای نام یکی از ویژگی های کتابخانه رو به توسعه دهنده است. به هویت برنامه که با استفاده از ویژگی applicationId تنظیم شده است، ارتباطی ندارد.

در نسخه‌های قبلی AGP، هم ویژگی applicationId (برای یک برنامه) و هم ویژگی namespace (برای یک کتابخانه) را می‌توان با استفاده از ویژگی package مانیفست تنظیم کرد که منجر به سردرگمی شد.

مقدار minSdkVersion را انتخاب کنید

انتخاب minSdkVersion برای کتابخانه شما یکی از جنبه های مهم انتشار کتابخانه شما است. minSdkVersion باید حداقل نسخه اندرویدی را که کد شما می تواند پشتیبانی کند را نشان دهد.

هنگام انتخاب minSdkVersion به نکات زیر توجه داشته باشید:

  • انتخاب یک minSdkVersion کم به طور کلی امکان توزیع گسترده تری از کتابخانه شما را فراهم می کند.

    کد یک کتابخانه معمولاً اجرا نمی شود مگر اینکه برنامه به صراحت آن را فراخوانی کند. یک برنامه همچنان می‌تواند روی نسخه‌ای از Android اجرا شود که کمتر از مقدار مورد نیاز وابستگی کتابخانه است - اگر کتابخانه برای عملکرد اصلی برنامه ضروری نباشد - با انجام بررسی‌های زمان اجرا قبل از تماس با کتابخانه. بنابراین، minSdkVersion کتابخانه خود را به اندازه ای پایین تنظیم کنید که بتوان آن را در برنامه ها جاسازی کرد و در صورت امکان تماس گرفت تا به کاربران بیشتری دسترسی پیدا کند.

  • انتخاب minSdkVersion بالا ممکن است از گنجاندن کتابخانه توسط برنامه‌ها جلوگیری کند.

    ادغام مانیفست، که مرحله‌ای در AGP است که فایل‌های مانیفست را از برنامه و وابستگی‌های آن ادغام می‌کند، باعث می‌شود هیچ وابستگی دارای minSdkVersion بالاتری نسبت به برنامه نباشد.

  • انتخاب یک minSdkVersion بالا ممکن است توسعه دهندگان برنامه را وادار کند که بررسی های ایمنی ادغام مانیفست را غیرفعال کنند و در مراحل بعدی ایجاد مشکلاتی ایجاد کند.

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

  • انتخاب یک minSdkVersion بالا ممکن است در موارد خاصی ضروری باشد که مانیفست کتابخانه شامل یک گیرنده پخش یا مکانیسم دیگری است که توسط آن کد آن به طور خودکار فعال می شود.

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

برای اجازه دادن به جاسازی در برنامه ها، از حاشیه نویسی RequiresApi در کتابخانه خود استفاده کنید تا به تماس گیرندگان خود نشان دهید که باید بررسی های زمان اجرا را انجام دهند. Android Lint از اطلاعات RequiresApi برای بازرسی های خود استفاده می کند. برای منابع بیشتر در مورد استفاده از حاشیه نویسی برای بهبود کد API و API های خود، به بهبود بازرسی کد با حاشیه نویسی مراجعه کنید.

متادیتا AAR را تنظیم کنید

یک کتابخانه اندروید در قالب یک فایل بایگانی اندروید (AAR) بسته بندی شده است. ابرداده AAR شامل ویژگی هایی است که به AGP در مصرف کتابخانه ها کمک می کند. اگر کتابخانه شما توسط یک پیکربندی ناسازگار مصرف شود، و ابرداده AAR راه‌اندازی شده باشد، پیام خطایی به کاربران ارائه می‌شود تا به آنها کمک کند مشکل را حل کنند.

مقدار minCompileSdk را انتخاب کنید

با شروع نسخه 4.1، AGP از minCompileSdk پشتیبانی می کند. این نشان دهنده حداقل compileSdk است که پروژه های مصرف کننده می توانند استفاده کنند. اگر کتابخانه شما حاوی ورودی‌های مانیفست یا منابعی است که از ویژگی‌های پلتفرم جدیدتر استفاده می‌کنند، باید این مقدار را تنظیم کنید.

مقدار minCompileSdk را می‌توان در بلوک‌های defaultConfig{} ، productFlavors{} و buildTypes{} در فایل build.gradle سطح ماژول تنظیم کرد:

شیار

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

کاتلین

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

اگر minCompileSdk در چندین مکان تنظیم کنید، Gradle مکان های تنظیمات را به صورت زیر در طول فرآیند ساخت اولویت بندی می کند:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

در مثال قبلی، جایی که minCompileSdk در defaultConfig{} و productFlavors{} تعریف شده است، productFlavors{} اولویت بندی شده و minCompileSdk روی 30 تنظیم شده است.

برای آشنایی بیشتر با نحوه اولویت بندی Gradle تنظیمات هنگام ترکیب کد و منابع، به ساخت با مجموعه های منبع مراجعه کنید.

تجهیزات تست را فعال کنید

دستگاه های تست معمولاً برای تنظیم کد مورد آزمایش یا تسهیل تست های یک جزء استفاده می شوند. با شروع نسخه 7.1، AGP می‌تواند تجهیزات آزمایشی را برای پروژه‌های کتابخانه‌ای علاوه بر پروژه‌های کاربردی و با ویژگی‌های پویا ایجاد کند.

هنگام انتشار یک کتابخانه برای مصرف دیگران، ایجاد تجهیزات تست برای API خود را در نظر بگیرید. تجهیزات تست را می توان در فایل build.gradle در سطح ماژول روشن کرد:

شیار

android {
  testFixtures {
    enable = true
  }
}

کاتلین

android {
  testFixtures {
    enable = true
  }
}

وقتی تجهیزات تست را روشن می کنید، Gradle به طور خودکار یک مجموعه منبع src/testFixtures ایجاد می کند که در آن می توانید وسایل آزمایشی را بنویسید.

برای اطلاعات بیشتر، به مستندات Gradle در مورد استفاده از تجهیزات تست مراجعه کنید.