Android Gradle eklentisiyle yerel bağımlılıklar

AAR kitaplıkları, Android Gradle Eklentisi'nin tüketebileceği yerel bağımlılıklar içerebilir. AGP, yerel kitaplıkları tüketicilere gösteren AAR'ler de oluşturabilir.

Yerel bağımlılıkları kullanma

Android Gradle eklentisi 4.0 ile başlayarak, C/C++ bağımlılıkları build.gradle dosyanıza bağlı AAR'lerden içe aktarılabilir. Gradle, bunları otomatik olarak yerel derleme sisteminde kullanılabilir hale getirir ancak derleme sisteminiz, içe aktarılan kitaplıkları ve üst bilgileri kullanacak şekilde yapılandırılmalıdır. C/C++ bağımlılıkları AAR'ler olarak dağıtıldığından genel AAR'lerle ilgili aşağıdaki bağlantılar yararlı olabilir:

  • Özellikle AAR'yi yerel bir C/C++ bağımlılığı olarak kullanmak istediğinizde, genel AAR belgeleri için Android Kitaplığı oluşturma ve bu kitaplığı projenize entegre etme.
  • Özellikle uzaktan bağımlılıklar için build.gradle dosyanıza bağımlılık ekleme hakkında bilgi edinmek için derleme bağımlılıkları ekleyin.

Bu belge yerel derleme sisteminizi nasıl yapılandıracağınıza odaklanmaktadır ve projenizin Gradle derleme ortamına zaten bir C/C++ bağımlılık AAR'si eklediğiniz varsayılır.

AAR'lerde yerel bağımlılıklar

Gradle modüllerinizin AAR bağımlılıkları, uygulamanızın kullanması için yerel kitaplıkları açığa çıkarabilir. AAR'nin içindeki prefab dizini, yerel bağımlılığın başlıklarını ve kitaplıklarını içeren bir Prefab paketi içerir.

Her bağımlılık, bir veya daha fazla modül içeren en fazla bir Prefab paketi sunabilir. Prefab modülü paylaşılan, statik veya yalnızca başlık kitaplığı olabilen tek bir kitaplıktır.

Kitaplıklardan yararlanabilmek için paket ve modül adlarının bilinmesi gerekir. Kural olarak, paket adı Maven yapı adıyla, modül adı da C/C++ kitaplık adıyla eşleşir ancak bu zorunlu değildir. Kullandığı adları öğrenmek için bağımlılığın belgelerine bakın.

Derleme sistemi yapılandırması

prefab özelliği, Android Gradle modülünüz için etkinleştirilmiş olmalıdır.

Bunu yapmak için modülünüzün build.gradle dosyasındaki android bloğuna aşağıdaki kodu ekleyin:

Kotlin

buildFeatures {
  prefab = true
}

Modern

buildFeatures {
  prefab true
}

İsteğe bağlı olarak projenizin gradle.properties dosyasında bir sürümü yapılandırın:

android.prefabVersion=2.0.0

Genellikle, seçilen AGP varsayılan sürümü ihtiyaçlarınıza uygundur. Düzeltmeniz gereken bir hata veya istediğiniz yeni bir özellik varsa farklı bir sürüm seçmeniz gerekir.

Bir AAR'den içe aktarılan bağımlılıklar CMAKE_FIND_ROOT_PATH üzerinden CMake'e uygulanır. Bu değer, CMake çağrıldığında Gradle tarafından otomatik olarak ayarlanır. Bu nedenle, derlemeniz bu değişkeni değiştiriyorsa atamak yerine değişkeni eklediğinizden emin olun.

Her bağımlılık, derlemenize bir yapılandırma dosyası paketi sunar. Bunlar find_package komutuyla içe aktarılır. Bu komut, belirtilen paket adı ve sürümüyle eşleşen yapılandırma dosyası paketlerini arar ve tanımladığı hedefleri derlemenizde kullanılmak üzere gösterir. Örneğin, uygulamanız libapp.so öğesini tanımlıyorsa ve cURL kullanıyorsa CMakeLists.txt aşağıdakileri içermelidir:

add_library(app SHARED app.cpp)

# Add these two lines.
find_package(curl REQUIRED CONFIG)
target_link_libraries(app curl::curl)

app.cpp artık #include "curl/curl.h" yapabiliyor. libapp.so, derleme sırasında libcurl.so ile otomatik olarak bağlanacak ve libcurl.so uygulamaya dahil edilecek.

AAR'lerde 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 kitaplık projenizin build.gradle.kts dosyasındaki android bloğuna şunu ekleyin:

Kotlin


buildFeatures {
    prefabPublishing = true
}

prefab {
    create("mylibrary") {
      headers = "src/main/cpp/mylibrary/include"
    }

    create("myotherlibrary") {
        headers = "src/main/cpp/myotherlibrary/include"
    }
}

Modern


buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
      headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}

Bu örnekte, ndk-build veya CMake harici yerel derlemenizdeki mylibrary ve myotherlibrary kitaplıkları, derlemeniz tarafından oluşturulan AAR'de paketlenir ve her biri, başlıkları belirtilen dizinden bağlı dosyalarına dışa aktarır.