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:
- Dosya > Yeni > Yeni Modül.
- 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.
- 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:
- kullanıyorsanız modül düzeyinde
build.gradle
dosyasını açın Groovy veya Kotlin kullanıyorsanızbuild.gradle.kts
dosyası komut dosyası. applicationId
satırını silin. Bunu yalnızca bir Android uygulama modülü tanımlayabilir.- 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") }
- 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:
- Dosya > Proje'ye gidin. Yapı > Bağımlılıklar'ı tıklayın.
- Kitaplığı eklemek istediğiniz modülü seçin.
- Tanımlanan Bağımlılıklar sekmesinde
simgesine dokunun ve Modül Bağımlılığı'nı seçin.
Modül Bağımlılığı Ekle iletişim kutusunda kitaplık modülünüzü seçin.
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:
- Şuraya git: Dosya > Proje Yapısı > Bağımlılıklar.
- Tanımlanan Bağımlılıklar sekmesinde
simgesine dokunun ve Kitaplık Bağımlılığı'nı seçin.
Kitaplık Bağımlılığı Ekle iletişim kutusunda, kitaplığını görürsünüz. Bu form,
dependencyResolutionManagement { repositories {...}}
blokundasettings.gradle
veyasettings.gradle.kts
dosyası.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:
- Dosya > seçeneğine gidin. Proje Yapısı > Bağımlılıklar.
- Tanımlanan Bağımlılıklar sekmesinde
simgesine dokunun ve Jar'ı seçin. Bağımlılık'ı seçin.
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.
Aşağıdakilerin geçerli olduğunu onaylamak için uygulamanızın
build.gradle
veyabuild.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 paketlerini ekleyebilirsiniz.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ınbuild.gradle
bloğunundefaultConfig
bloğu veyabuild.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ı:
/classes.jar
/res/
/R.txt
/public.txt
/assets/
/libs/name.jar
/jni/abi_name/name.so
. (burada abi_name, Android destekli ABI'ler)/proguard.txt
/lint.jar
/api.jar
- Yerel verileri dışa aktarmak için
/prefab/
kitaplıklar