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

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

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

کتابخانه‌های Android باید فضای نامی را اعلام کنند تا بتوانند هنگام کامپایل شدن منابعشان، کلاس 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 باید نشان‌دهنده حداقل نسخه Android باشد که کد شما می‌تواند پشتیبانی کند.

هنگام انتخاب minSdkVersion، به ملاحظات زیر توجه داشته باشید:

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

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

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

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

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

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

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

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

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

راه‌اندازی فراداده‌های AAR

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

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

از نسخه ۴.۱، 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 روی ۳۰ تنظیم شده است.

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

فعال کردن ابزارهای آزمایشی

ثابت‌های آزمایشی معمولاً برای راه‌اندازی کد درحال آزمایش یا تسهیل آزمایش‌های یک مؤلفه استفاده می‌شوند. از نسخه ۷.۱، AGP می‌تواند علاوه‌بر پروژه‌های برنامه و ویژگی پویا، برای پروژه‌های کتابخانه نیز وسایل آزمایش ایجاد کند.

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

شیک

android {
  testFixtures {
    enable = true
  }
}

کاتلین

android {
  testFixtures {
    enable = true
  }
}

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

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