Android kitaplığı oluşturma

Android kitaplığı, yapısal olarak Android uygulama modülüyle aynıdır. Kaynak kodu ve performans dahil olmak üzere bir uygulama derlemek için kaynak dosyalarını ve bir Android manifest'ini içerir.

Ancak bir cihazda çalışan APK'yı derlemek yerine, Android kitaplığı, indirebileceğiniz bir Android Arşivi (AAR) dosyası olarak derlenir. bağımlılığı olarak kullanabilirsiniz. JAR dosyalarının aksine AAR dosyaları, Android uygulamaları için aşağıdaki işlevleri sunar:

  • AAR dosyaları, Android kaynaklarını ve bir manifest dosyası içerebilir. Bu dosya, düzenler ve çekilebilir öğeler gibi paylaşılan kaynaklarda gruplandırırken aynı zamanda en iyi uygulamaları paylaşacağız.
  • AAR dosyalarında C/C++ kütüphaneler uygulama modülünün C/C++ kodu tarafından kullanılmak üzere tasarlanmıştır.

Kitaplık modülü aşağıdaki durumlarda yararlıdır:

  • Bu özelliklerden bazılarını kullanan birden fazla uygulama oluştururken etkinlikler, hizmetler veya kullanıcı arayüzü düzenleri gibi aynı bileşenler
  • Örneğin, birden fazla APK varyasyonunda bulunan bir uygulama oluştururken temel bileşenleri paylaşan ücretsiz ve ücretli bir sürüm

Her iki durumda da yeniden kullanmak istediğiniz dosyaları bir kitaplık modülüne taşıyın ve sonra kitaplığı her uygulama modülü için bağımlılık olarak ekleyin.

Bu sayfada Android kitaplığının nasıl oluşturulacağı ve kullanılacağı açıklanmaktadır. modülünü kullanabilirsiniz. Bir kitaplığın nasıl yayınlanacağıyla ilgili yardım için bkz. Kitaplığınızı yayınlama

Kitaplık modülü oluşturma

Projenizde yeni bir kitaplık modülü oluşturmak için aşağıdaki adımları uygulayın:

  1. Dosya > Yeni > Yeni Modül.
  2. Görüntülenen Yeni Modül Oluştur iletişim kutusunda, Android Kitaplığı'nı, ardından İleri'yi tıklayın.

    Kotlin veya Java kitaplığı oluşturma seçeneğiniz de vardır. bu standart, geleneksel bir JAR dosyası oluşturur. JAR dosyası birçok proje yöneticisi özellikle de Google’da başkalarıyla kod yazmak istediğinizde platformlar. Android kaynaklarını veya manifest dosyalarını eklemenize izin vermez. dosyalarından yararlanır. Bu, Android projelerinde kodun yeniden kullanımı için oldukça kullanışlıdır. Bu kılavuz Android kitaplıkları oluşturmaya odaklanıyor.

  3. Kitaplığınıza bir ad verin ve kod için minimum SDK sürümü seçin ve Son'u tıklayın.

Gradle projesi senkronizasyonu tamamlandıktan sonra kitaplık modülü Proje bölmesini açın. Yeni modülü görmüyorsanız klasörünüz varsa bölmede Android görünümünün gösterildiğinden emin olun.

Uygulama modülünü kitaplık modülüne dönüştürme

Yeniden kullanmak istediğiniz kodu içeren mevcut bir uygulama modülünüz varsa bunu aşağıdaki şekilde bir kitaplık modülüne dönüştürebilirsiniz:

  1. kullanıyorsanız modül düzeyinde build.gradle dosyasını açın Groovy veya Kotlin kullanıyorsanız build.gradle.kts dosyası komut dosyası.
  2. applicationId satırını silin. Bunu yalnızca bir Android uygulama modülü tanımlayabilir.
  3. Dosyanın üst kısmındaki şuna benzeyen "plugins" bloğunu bulun:

    Eski

      plugins {
          id 'com.android.application'
      }
      

    Kotlin

      plugins {
          id("com.android.application")
      }
      

    Şu şekilde değiştirin:

    Eski

      plugins {
          id 'com.android.library'
      }
      

    Kotlin

      plugins {
          id("com.android.library")
      }
      
  4. Dosyayı kaydedin ve Dosya > Projeyi Gradle Dosyalarıyla Senkronize Et'i tıklayın.

Modülün yapısı değişmedi ancak Android kitaplığı gibi çalışır. Derleme bir AAR dosyası oluşturur tercih edebilirsiniz.

AAR dosyasını oluşturmak istediğinizde, Proje penceresini tıklayın ve ardından Derleme > APK'yı Derleme.

Proje Yapısı iletişim kutusuyla bağımlılık ekleme

Projenize bağımlılık eklemek için Proje Yapısı belirler. Aşağıdaki bölümlerde, ekleme yapmak için iletişim kutusunun nasıl kullanılacağı ve bildirmeyi konuştuk.

Kitaplığınızı aynı proje içinden kullanma

Yeni Android kitaplığınızın kodunu başka bir uygulama veya kitaplık modülünde kullanmak için proje düzeyinde bağımlılık ekleyin:

  1. Dosya > Proje'ye gidin. Yapı > Bağımlılıklar'ı tıklayın.
  2. Kitaplığı eklemek istediğiniz modülü seçin.
  3. Tanımlanan Bağımlılıklar sekmesinde simgesine dokunun ve Modül Bağımlılığı'nı seçin.

  4. Modül Bağımlılığı Ekle iletişim kutusunda kitaplık modülünüzü seçin.

    Proje Yapısına modül bağımlılığı ekleyin
İletişim

  5. Bu bağımlılığı gerektiren yapılandırmayı seçin veya uygulamanın tüm yapılandırmalar için geçerliyse Tamam'ı tıklayın.

Android Studio, modülünüzün build.gradle veya build.gradle.kts dosyasını şu şekilde düzenler: bağımlılığı aşağıdaki biçimde ekleyin:

Eski

  implementation project(path: ":example-library")

Kotlin

  implementation(project(":example-library"))

Kitaplığınızı başka projelerde kullanma

Bağımlılıkları (JAR'lar ve AAR'lar) paylaşmak için önerilen yöntem bir Maven kullanmaktır. bir hizmette barındırılan ve Maven Central veya dizin yapısıyla yeniden oluşturabilirsiniz. Daha fazla bilgi için Maven depoları için Remote depoları.

Maven deposunda Android kitaplığı yayınlandığında meta veriler Böylece kitaplığın bağımlılıklarını kitaplığa anlamına gelir. Bu yöntem, kitaplığın otomatik olarak tekilleştirilmesini sağlar. çeşitli yerlerde kullanılmaktadır.

Android kitaplığınızın kodunu farklı bir projedeki başka bir uygulama modülünde kullanmak için: şu şekilde devam edin:

  1. Şuraya git: Dosya > Proje Yapısı > Bağımlılıklar.
  2. Tanımlanan Bağımlılıklar sekmesinde simgesine dokunun ve Kitaplık Bağımlılığı'nı seçin.

  3. Kitaplık Bağımlılığı Ekle iletişim kutusunda, kitaplığını görürsünüz. Bu form, dependencyResolutionManagement { repositories {...}} blokunda settings.gradle veya settings.gradle.kts dosyası.

    Proje Yapısına kitaplık bağımlılığı ekleyin
İletişim

  4. Bu bağımlılığı gerektiren yapılandırmayı seçin veya uygulamanın tüm yapılandırmalar için geçerliyse Tamam'ı tıklayın.

Aşağıdakilerin geçerli olduğunu onaylamak için uygulamanızın build.gradle veya build.gradle.kts dosyasını kontrol edin: aşağıdakine benzer bir bildirim görünür (derleme yapılandırmasına bağlı olarak) seçin):

Eski

  implementation 'com.example:examplelibrary:1.0.0'

Kotlin

  implementation("com.example:examplelibrary:1.0.0")

AAR veya JAR'ınızı bağımlılık olarak ekleyin.

Android kitaplığınızın kodunu başka bir uygulama modülünde kullanmak için aşağıdaki adımları uygulayın:

  1. Dosya > seçeneğine gidin. Proje Yapısı > Bağımlılıklar.
  2. Tanımlanan Bağımlılıklar sekmesinde simgesine dokunun ve Jar'ı seçin. Bağımlılık'ı seçin.

  3. Jar/Aar Bağımlılığı Ekle iletişim kutusunda, AAR'nizin yolunu girin veya JAR dosyasını seçin, ardından bağımlılığın geçerli olur. Kitaplık tüm yapılandırmalarda kullanılabiliyorsa application yapılandırmasını ifade eder.

    Proje Yapısına AAR bağımlılığı ekleme
İletişim

    Aşağıdakilerin geçerli olduğunu onaylamak için uygulamanızın build.gradle veya build.gradle.kts dosyasını kontrol edin: aşağıdakine benzer bir bildirim görünür (derleme yapılandırmasına bağlı olarak) seçin):

    Eski

      implementation files('my_path/my_lib.aar')
    

    Kotlin

      implementation(files("my_path/my_lib.aar"))
    

Android Studio dışında çalışan Gradle derlemesine bir bağımlılığı içe aktarmak için: bağımlılığa bir yol ekleyin uygulamanızın build.gradle veya build.gradle.kts dosyasına ekleyin. Örnek:

Eski

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"])
}

Kotlin

dependencies {
    implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
}

Gradle bağımlılıkları ekleme hakkında daha fazla bilgi için Derleme bağımlılıkları ekleyin.

Herkese açık bir kaynağı bildirme

Kaynaklar, projenizin res/ dizinindeki tüm dosyaları içerir. kullanır. Bir kitaplıktaki tüm kaynaklar varsayılan olarak herkese açıktır. Tümünü gizli kaynaklar için en az bir tane belirli özellik herkese açık olarak ayarlanır.

Bir herkese açık kaynağı bildirmek için <public> bildirimi ekleyin kitaplığınızdaki public.xml dosyasına. Herkese açık eklemediyseniz dışa aktarmadan önce public.xml dosyasını Kitaplığınızın res/values/ dizini.

Aşağıdaki örnek kod adları mylib_app_name ve mylib_public_string:

<resources>
    <public name="mylib_app_name" type="string"/>
    <public name="mylib_public_string" type="string"/>
</resources>

Kitaplığınızın kullanıcılarının, istenen kaynaklara erişmesini engellemek yalnızca dahili kullanım için, bu otomatik gizli tanımlamayı kullanın bir veya daha fazla herkese açık kaynak bildirerek söz konusu mekanizmayı etkinleştirmeniz gerekir. Alternatif olarak, boş bir <public /> etiketi ekleyerek tüm kaynakları gizli tutabilirsiniz. Bu hiçbir şeyi herkese açık olarak işaretlemeden tüm kaynakları gizli hale getirir.

Görünür kalmasını istediğiniz tüm kaynaklar kitaplığınızı kullanan geliştiricilerin herkese açık hale getirilmesi gerekir.

Özelliklerin dolaylı olarak gizli yapılması, kitaplığınızın kullanıcılarını engeller dahili kitaplık kaynaklarından kod tamamlama önerileri alma Ayrıca kullanıcıların özel kaynakları bozmadan yeniden adlandırmasına veya kaldırmasına olanak tanır. yardımcı olur. Özel kaynaklar filtrelenerek kod tamamlama dışında tutulur, Ayrıca lint aracı, çalışırken kullanabilirsiniz.

Android Gradle eklentisi bir kitaplık oluştururken herkese açık kaynağı alır tanımlar ve bunları public.txt dosyasına çıkarır. daha sonra AAR dosyası içinde paketlenir.

Kütüphane modülleri için geliştirmeyle ilgili dikkat edilmesi gereken noktalar

Kitaplık modüllerinizi ve bunlara bağlı uygulamalarınızı geliştirirken lütfen unutmayın.

  • Kitaplıklar öncelik sırasına göre birleştirilir.

    Android uygulama modülünüze kitaplık modüllerine referanslar ekledikten sonra, göreceli önceliklerini belirleyebilirsiniz. Derleme sırasında Kitaplıklar, en alt kattan başlayarak teker teker uygulamayla birleştirilir en yüksek önceliğe sahiptir.

  • Kaynak birleştirme çakışmalarını önleyin.

    Derleme araçları, bir kitaplık modülündeki kaynakları, isteğe bağlı uygulama modülü. Belirli bir kaynak kimliği her iki modülde de tanımlanmışsa bu kaynak kullanılıyor.

    Birden fazla AAR kitaplığı arasında çakışma olursa bağımlılık listesinde ilk sırada yer alan kitaplık ( dependencies blok) kullanılır.

    Kaynak çakışmalarını önlemek için geçişli olmayan R sınıfları. Bu mümkün değilse bir önek veya modüle özgü diğer tutarlı adlandırma şeması (ya da tüm proje modüllerinde benzersiz olması gerekir.

  • Çok modüllü derlemelerde JAR bağımlılıkları geçişli bağımlılıklar olabilir.

    AAR üreten bir kitaplık projesine JAR bağımlılığı eklediğinizde, JAR, kitaplık modülü tarafından işlenir ve AAR ile paketlenir.

    Ancak projenizde bir uygulama tarafından kullanılan bir kitaplık modülü varsa modülünü kullanarak kitaplığın yerel JAR bağımlılığını geçişli bağımlılık. Bu durumda, yerel JAR, uygulama tarafından işlenir. tarafından tüketilmesi gerekir. Bu şekilde bir kitaplığın kodundaki değişikliklerin neden olduğu artımlı derlemeler.

    Yerel JAR bağımlılıklarından kaynaklanan tüm Java kaynak çakışmaları giderilmelidir. inceleyebilirsiniz.

  • Kitaplık modülü harici bir JAR kitaplığına bağlı olabilir.

    Harici bir kitaplığa bağlı bir kitaplık modülü geliştirebilirsiniz. Bu durumda, bağımlı modül harici kitaplığı içeren bir hedefe göre sıralanır.

    Hem kitaplık modülünün hem de bağımlı uygulamanın harici kitaplığı, manifest dosyalarında bir <uses-library> öğesi.

  • Uygulama modülünün minSdkVersion değeri şuna eşit olmalıdır: veya kitaplık tarafından tanımlanan sürümden daha büyük olmalıdır.

    Bağımlı uygulama modülünün bir parçası olarak bir kitaplık derlendiğinden, API'ler sürümü, uygulamanın yüklü olduğu platform sürümüyle uyumlu olmalıdır. modülünü kullanabilirsiniz.

  • Her kitaplık modülü kendi R sınıfını oluşturur.

    Bağımlı uygulama modüllerini derlediğinizde kitaplık modülleri, uygulama modülüne eklenen bir AAR dosyası oluşturur. Dolayısıyla her kütüphanenin kendine özgü R sınıfı.

    Ana modülden ve kitaplık modülünden oluşturulan R sınıfı: ana modülün paketi de dahil olmak üzere gereken tüm paketlerde oluşturulur. ve kütüphanelerin pakettir.

  • Bir kitaplık modülü kendi ProGuard yapılandırmasını içerebilir dosyası olarak kaydedin.

    AAR oluşturmak ve yayınlamak için kullandığınız bir kitaplık projeniz varsa kitaplığınızın derleme yapılandırmasına bir ProGuard yapılandırma dosyası ekleyebilirsiniz. Şu durumda: Android Gradle eklentisi, belirttiğiniz ProGuard kurallarını uygular. Derleme araçları, bu dosyayı kitaplık için oluşturulan AAR dosyasına yerleştirir. modülünü kullanabilirsiniz. Kitaplığı bir uygulama modülüne eklediğinizde, kitaplığın ProGuard dosyası ProGuard yapılandırma dosyasına (proguard.txt) eklendi inceleyeceğiz.

    Kitaplık modülünüze bir ProGuard dosyası yerleştirerek kitaplığınıza bağlı uygulama modüllerinin, manuel olarak güncellenmesi gerekmez. ProGuard dosyaları da kullanabilirsiniz. Android Studio derleme sistemi oluşturulduğunda hem uygulama modülündeki hem de kitaplıktaki yönergeleri kullanır. ODK ayrı bir adımda kitaplıkta bir kod daraltıcı çalıştırmanız gerekmez.

    ProGuard kurallarını kitaplık projenize eklemek için, consumerProguardFiles özelliğine sahip bir dosyanın adını Kitaplığınızın build.gradle bloğunun defaultConfig bloğu veya build.gradle.kts dosyası.

    Örneğin, aşağıdaki snippet Kitaplığın ProGuard yapılandırması olarak lib-proguard-rules.txt dosya:

    Eski

    android {
        defaultConfig {
            consumerProguardFiles 'lib-proguard-rules.txt'
        }
        ...
    }

    Kotlin

    android {
        defaultConfig {
            consumerProguardFiles("lib-proguard-rules.txt")
        }
        ...
    }

    Ancak, kitaplık modülünüz çok modüllü bir yapının parçasıysa bir APK'ya derler ve AAR oluşturmaz, kod çalıştırma yalnızca kitaplığı kullanan uygulama modülünde daraltılır. Daha fazla bilgi edinmek için daha fazla bilgi edinmek için Reklam öğelerinizi daraltarak, uygulamasında gösterilir.

  • Kitaplık modülünü test etmek uygulamayı test etme

    Aralarındaki temel fark, kütüphanenin ve bağımlılıklarının otomatik olarak test APK'sının bağımlılıkları olarak dahil edilir. Bunun anlamı, test APK'sı yalnızca kendi kodunu değil, aynı zamanda kitaplığın AAR'sini de içerir ve tüm bağımlılıklarını fark edeceksiniz. Test edilen ayrı bir uygulama olmadığından, androidTest görevi yalnızca testi yükler (ve kaldırır) APK'ya dokunun.

    Birleştirmesırasında birden fazla manifest dosyası varsa Gradle, varsayılan öncelik sırasını izler ve kitaplığın manifest dosyasını test APK'sının ana manifestiyle birleştirir.

AAR dosyasının anatomisi

AAR dosyasının dosya uzantısı .aar ve Maven yapısı türü: aar. Dosyanın kendisi bir ZIP dosyasıdır. Tek zorunlu giriş /AndroidManifest.xml

Bir AAR dosyası aşağıdaki isteğe bağlı öğelerden birini veya daha fazlasını da içerebilir: giriş sayısı: