[*] Содержит Librga.so и заголовки. Эта часть будет библиотекой (libmlrga.so), которая зависит от librga.so.
Пользователь может реализовать AAR в Gradle File и find_package в файле cmake, чтобы связать libmlrga.so или librga. Prefab Dir, зависимый Librga.so упакован в JNI Dir, который находится за пределами Prefab Module Dir. Пользователь может получить доступ к заголовкам и libmlrga.so, но не может ссылаться на Librga.so.
Вот моя структура AAR: < /p>
Введите описание изображения здесь < /p>
Есть два libmlrga.so в jni и prefab с различным размером.
Код: Выделить всё
cmake_minimum_required(VERSION 3.22.1)
project(mlrga)
include_directories(./ ./public_headers/)
file(GLOB SRC *.cpp)
add_library(mlrga SHARED ${SRC})
set(librga_path ${CMAKE_CURRENT_LIST_DIR}/../../../jniLibs/${ANDROID_ABI}/librga.so)
message("librga_path: ${librga_path}")
message("CMakeInstallDir: ${CMAKE_INSTALL_PREFIX}")
add_library(rga SHARED IMPORTED)
set_target_properties(
rga PROPERTIES
IMPORTED_LOCATION ${librga_path}
# 关键:禁止AGP自动将其打包到jniLibs
# IMPORTED_NO_SONAME ON
# 声明头文件目录(需与gradle中prefab.rga.headers对应)
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/public_headers
)
target_link_libraries(
mlrga
log
android
rga
)
target_include_directories(
mlrga PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/public_headers"
)
Подробнее здесь: https://stackoverflow.com/questions/797 ... into-a-aar
Мобильная версия