AAR kitaplıkları, Android Gradle Eklentisi'nin yapabileceği yerel bağımlılıklar içerebilir. tüketim. AGP aynı zamanda yerel kitaplıkların açık olduğu AAR'ler de üretebilir. teşvik etmek anlamına gelir.
Yerel bağımlılıkları kullanma
Android Gradle eklentisi 4.0 ile başlayarak C/C++ bağımlılıkları şuradan içe aktarılabilir:
AAR'ler build.gradle dosyanızda bağlandı. Gradle şunları otomatik olarak yapar:
kullanılabilir ancak derleme sisteminizin yapılandırılması gerekir
içe aktarılan kitaplık ve başlıkları kullanın. C/C++ bağımlılıkları
dağıtıldığı için genel AAR'lerle ilgili aşağıdaki bağlantılar yararlı olabilir:
- Genel AAR dokümanları için Android Kitaplığı oluşturma ve bunu projenize nasıl entegre edeceğinizi AAR'yi yerel C/C++ bağımlılığı olarak kullanmak.
build.gradledosyanıza bağımlılık ekleme hakkında bilgi için derleme bağımlılıkları ekleyin, özellikle de uzaktan bağımlılıkları konuştuk.
Bu belgede, yerel derleme sisteminizi nasıl yapılandıracağınıza odaklanılmakta ve daha önce projenizin Gradle derleme ortamına bir C/C++ bağımlılık AAR'si ekledi.
AAR'lerde yerel bağımlılıklar
Gradle modüllerinizin AAR bağımlılıkları,
en iyi yoludur. AAR'daki prefab dizini bir Prefab (Prefab) içerir
paketine (bu belge, yerel bağımlılığın başlıklarını ve kitaplıklarını) ekler.
Her bağımlılık en fazla bir Prefab paketi ortaya çıkarabilir. Bu paket, üzerinde çalışıyoruz. Prefabrik modülü tek bir kitaplıktır. paylaşılan, statik veya yalnızca başlık içeren kitaplıklar.
Kitaplıklardan yararlanabilmeniz için paket ve modül adlarının bilinmesi gerekir. Ölçüt kuralınız, paket adı Maven yapısı adıyla ve modülle eşleşir. ad, C/C++ kitaplığının adıyla eşleşecektir, ancak bu zorunlu değildir. Destek için: bağımlılık belgelerini inceleyin.
Derleme sistem yapılandırması
Android Gradle modülünüz için prefab özelliği etkinleştirilmiş olmalıdır.
Bunu yapmak için, aşağıdakileri modülünüzün android bloğuna ekleyin:
build.gradle dosyası:
Kotlin
buildFeatures { prefab = true }
Eski
buildFeatures { prefab true }
İsteğe bağlı olarak bir sürüm yapılandırın
projenizin gradle.properties dosyasında:
android.prefabVersion=2.0.0
Genellikle, seçilen varsayılan AGP sürümü ihtiyaçlarınıza uygundur. Yalnızca düzeltilmesi gereken bir hata varsa farklı bir sürüm seçmeniz gerekir. yeni bir özellik ekleyin.
Her bağımlılık, derlemenize bir Android.mk dosyası sunar. Bunlar:
import-module komutuyla içe aktarılır. Bu komut Android.mk sorgusunu arar
derlemenin içe aktarma dizinlerinde belirtilen yola sahip dosyalar (yapılandırıldığı şekliyle)
tarafından import-add-path tarafından) ve tanımlanan modüllerin uygulamanızda
seçeceğiz. Örneğin, uygulamanız libapp.so öğesini tanımlıyorsa ve cURL kullanıyorsa,
Android.mk dosyanız şunları içermelidir:
include $(CLEAR_VARS)
LOCAL_MODULE := libapp
LOCAL_SRC_FILES := app.cpp
LOCAL_SHARED_LIBRARIES := curl
include $(BUILD_SHARED_LIBRARY)
# If you don't need your project to build with NDKs older than r21, you can omit
# this block.
ifneq ($(call ndk-major-at-least,21),true)
$(call import-add-path,$(NDK_GRADLE_INJECTED_IMPORT_PATH))
endif
$(call import-module,prefab/curl)
Açık import-add-path değerinin yalnızca önceki NDK'lar kullanılırken gerekli olduğunu unutmayın
r21'e. 21. sürüm itibarıyla NDK_GRADLE_INJECTED_IMPORT_PATH otomatik olarak
içe aktarma yollarına eklenir.
app.cpp artık #include "curl/curl.h" yapabilir. libapp.so olacak
oluşturma sırasında libcurl.so ile otomatik olarak bağlanacak ve libcurl.so,
ve uygulamaya dahil edilmelidir.
AAR'larda yerel kitaplıklar yayınlama
Yerel AAR'ler oluşturma özelliği ilk olarak AGP 4.1'de eklenmiştir.
Yerel kitaplıklarınızı dışa aktarmak için aşağıdakileri android bloğuna ekleyin:
kitaplık projenizin build.gradle.kts dosyası:
Kotlin
buildFeatures { prefabPublishing = true } prefab { create("mylibrary") { headers = "src/main/cpp/mylibrary/include" } create("myotherlibrary") { headers = "src/main/cpp/myotherlibrary/include" } }
Eski
buildFeatures { prefabPublishing true } prefab { mylibrary { headers "src/main/cpp/mylibrary/include" } myotherlibrary { headers "src/main/cpp/myotherlibrary/include" } }
Bu örnekte, mylibrarymyotherlibrary
ndk-build veya CMake harici yerel derlemesi,
içerir ve her biri belirtilen dizinden başlıkları
yardımcı oluyorum.