تحميل مكتبتك

لمنح الإذن بالوصول إلى مكتبتك، عليك اختيار مستودع. ترشدك هذه الصفحة خلال الاعتبارات المتعلقة باختيار نوع المستودع وتوضّح كيفية إنشاء جهة نشر باستخدام المكوّن الإضافي Maven Publish.

قبل تحميل مكتبتك، تأكد من إعداد مكتبتك الإصدار وضبط أي خطوات ضرورية إصدارات جهة النشر أو تجهيزات الاختبار.

اختيار نوع المستودع

يتم نشر المكتبات كملفات AAR. تحتوي هذه الملفات على تعليمات برمجية مجمعة رمز البايت والمكتبات الأصلية وبيان Android والموارد. الطرد نفسها لا تعلن عن أي هوية أو إصدار أو اعتماديات على المكتبات.

بشكل عام، يكون توفير الاقتراحات المطبّقة تلقائيًا من خلال مستودع من توزيع ميزة "الاقتراحات المطبّقة تلقائيًا" مباشرةً أُنشأها جون هنتر، الذي كان متخصصًا تساعد المستخدمين في فهم مصدر المكتبة بشكل أفضل بدلاً من الاضطرار إلى التعامل مع ملف name.aar بدون تقديم تفاصيل مهمة، مثل الإصدار. عند الترقية إلى إصدار أحدث من المكتبة، استخدم للتأكد من أن التبعيات المطلوبة فقط من الإصدار الأحدث حتى لا يضطر المستخدمون إلى تحديث التبعيات يدويًا.

هناك مزايا متعددة لاستخدام المستودع لنشر مكتبتك:

  • بإمكان Gradle إضافة تبعيات مكتبتك تلقائيًا إلى تبعية الرسم البياني.
  • تضمن واجهة Gradle وجود إصدار واحد من مكتبتك في الاعتمادية. حل التعارضات إذا تم تضمين المكتبة بشكل مؤقت أكثر من مرة واحدة بإصدارات مختلفة.
  • يمكن للمكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP) إجراء عملية إزالة أكثر فعالية إذا كان المكتبة تستخدم Java 8 أو ميزات لغة أعلى، ما يقلل من مدة إنشاء المستخدمين.
  • يمكن لمكتبتك استخدام ميزة نشر خيارات المنتج وتضمين ميزات مثل الاختبار. والتجهيزات.

لا يوفّر توزيع ميزة "الاقتراحات المطبّقة تلقائيًا" أي معلومات للمستخدم المتعلقة بهوية مكتبتك أو إصدارها أو تبعياتها. فعندما النشر في مستودع، تتم معالجة التوزيع من خلال ملف منفصل في آلية المستودع. بالنسبة إلى مستودعات Maven، يشكّل ذلك النموذج ملف POM وبالتالي، ننصح بشدة بنشر المكتبات باستخدام بدلاً من توزيع ملفات AAR يدويًا.

أنواع المستودعات

هناك ثلاثة أنواع من المستودعات:

  • من خلال المستودعات المجانية على الإنترنت، مثل Maven Central، يمكن لأي مستخدم تحميل المحتوى تنزيل المكتبات.
  • تسمح المستودعات الخاصة بالوصول عن طريق تسجيل الدخول بتوزيعها بشكل خاضع للرقابة المكتبات الخاصة.
  • تسمح المستودعات المحلية المستندة إلى المجلدات بتوزيع المكتبات من خلال التنزيل اليدوي.

يشبه استخدام المستودعات المحلية المستندة إلى المجلدات إلى حد كبير توفير المتطلبات اللازمة للمستخدمين باستخدام رابط تنزيل يدوي إلى ميزة "التطبيق التلقائي للاقتراحات" أو بإرسالها عبر البريد الإلكتروني. المصدر الرئيسي الاختلاف هو أنك لا ترسل AAR فقط ولكن أيضًا المعلومات حول الهوية والإصدار والتبعيات.

يتم توزيع ملف ZIP للمستودع المستند إلى المجلد والذي يحتوي على AAR بالإضافة إلى بيانات التعريف. يمكن للمستخدمين بعد ذلك استخراج محتوى الملف وإضافة وتوجيهه إلى مشروعه، وتوجيه Gradle إليها. من ذلك الحين فصاعدًا، يمكن للمستخدمين الإعلان عن تبعية المكتبة باستخدام إحداثيات Maven، كما لو كانت المكتبة كانت في مستودع عبر الإنترنت، وتستفيد من جميع المزايا المذكورة سابقًا.

إنشاء جهة النشر

النشر باستخدام مكوّن Gradle Maven Publish الإضافي. تتيح لك مكوّن Maven Publish الإضافي الإعلان عن جهات النشر إنشاء المستودعات وإنشاء مهام لنشر جهات النشر هذه في المستودعات. تستهلك جهات النشر هذه مثال SoftwareComponent المكون الإضافي الذي يقود عملية الإنشاء، والذي قد يكون AGP أو المكون الإضافي java-library.

لاحظ أنه عند تشغيل المكوّن الإضافي Maven Publish باستخدام AGP، مباشرة عند تطبيق المكون الإضافي. وهم بدلاً من ذلك تم إنشاؤه أثناء afterEvaluate() خطوة معاودة الاتصال. وبالتالي، فإن جهة النشر التي تختار مكوّن البرنامج يجب ضبطه أيضًا خلال خطوة afterEvaluate().

ينشئ مقتطف الرمز التالي لملف build.gradle على مستوى الوحدة جهة نشر لخيار منتج معيّن تم إنشاؤه باستخدام singleVariant() أو multipleVariants():

Groovy

publishing {
  publications {
    release(MavenPublication) {
      groupId = 'com.my-company'
      artifactId = 'my-library'
      version = '1.0'

      afterEvaluate {
        from components.release
      }
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      groupId = "com.my-company"
      artifactId = "my-library"
      version = "1.0"

      afterEvaluate {
        from(components["release"])
      }
    }
  }
}

في المثال السابق، اسم المكوِّن (components.release) هو استنادًا إلى الاسم الذي تمّ منحه إلى "singleVariant()" أو multipleVariants().

بعد الإعلان عن جهة نشر، عليك إنشاء مستودع مستهدف.

النشر على مستودع محلي

يشبه النشر على مستودع محلي إلى حد كبير النشر على جهاز تحكّم عن بُعد المستودع، باستثناء بيان المستودع. اقرأ القسم السابق من أجل يمكنك التعرّف على كيفية النشر في مستودع بعيد لإنشاء جهة النشر التي تنشر خيار المنتج أو خيارات المنتج المطلوبة ثم أنشئ مخططًا محليًا المستودع:

Groovy

publishing {
  publications {
    release(MavenPublication) {
      ...
    }
  }
  repositories {
    maven {
      name = 'myrepo'
      url = layout.buildDirectory.dir("repo")
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      ...
    }
  }
  repositories {
    maven {
      name = "myrepo"
      url = uri(layout.buildDirectory.dir("repo"))
    }
  }
}

يؤدي هذا إلى إنشاء مهمة تسمى publishReleaseToMyRepoRepository الذي يتكون من اسم جهة النشر واسم المستودع تنفيذ هذه المَهمّة لإنشاء المستودع في الموقع المحدد. في هذا المثال، تشير يتم إنشاء مستودع داخل الإصدار المشروع ضمن دليل repo.

إذا كنت تريد إنشاء ملف ZIP للمستودع تلقائيًا، لذلك باستخدام التعليمة البرمجية التالية:

Groovy

tasks.register('generateRepo', Zip) {
  def publishTask = tasks.named('publishReleasePublicationToMyrepoRepository')
  from publishTask.map { it.getRepository().getUrl() }
  into 'mylibrary'
  archiveFileName.set('mylibrary.zip')
}

Kotlin

tasks.register<Zip>("generateRepo") {
  val publishTask = tasks.named(
    "publishReleasePublicationToMyrepoRepository",
    PublishToMavenRepository::class.java)
  from(publishTask.map { it.repository.url })
  into("mylibrary")
  archiveFileName.set("mylibrary.zip")
}

ينشئ هذا الرمز مهمة Zip باسم generateRepo تستهلك المحتوى. مهمة النشر ويضغطها مع التأكد من أن إدخالات zip في مستوى أعلى يسمى mylibrary. يقع الإخراج ضمن build/distributions