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

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:

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.

Bir AAR'den içe aktarılan bağımlılıklar, CMAKE_FIND_ROOT_PATH. Bu değer, şu durumlarda Gradle tarafından otomatik olarak ayarlanacaktır: CMake çağrılır. Bu nedenle, derlemeniz bu değişkeni değiştiriyorsa bir öğedir.

Her bağımlılık, derlemenize bir yapılandırma dosyası paketi sunar. Bunlar: find_package komutuyla içe aktarılır. Bu komut, yapılandırma dosyasını arar. belirtilen paket adı ve sürümüyle eşleşen paketleri ve hedefleri gösterir. kullanılacak kodu tanımlar. Örneğin, uygulamanız libapp.so ve cURL kullanıyorsa CMakeLists.txt şunları 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" 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.