Android NDK build cmake включает в себя библиотеку .so, включенную в библиотеку .aar

у меня есть android_library.aar файл, содержащий library.so и некоторые другие ресурсы и файлы Java.

Я импортировал android_library.aar в мой проект. Мой проект использует код C ++ с NDK. Моя проблема в том, что я не могу скомпилировать код C ++, который зависит от library.so с CMake. Как я мог извлечь library.so от AAR до компиляции CMake? Я хочу включить library.so в мой код C ++ напрямую без Java. Я знаю как включить .так в проекте, но я не знаю, как это сделать изнутри.

Обновление (решение):

Я пишу ответ здесь, потому что у меня еще нет разрешения на Stackoverflow.

Я нашел решение самостоятельно после 1-недельного исследования. Я нашел код из кода Google GVR. Но это не сработало для моего случая. Я изменился build.dependsOn в preBuild.dependsOn тогда это сработало. Это может помочь некоторым людям в будущем.

Вот пример кода:

В файле build.gradle модуля:

sourceSets {
main {
jniLibs.srcDirs = ["jniLibs"]
}
}

task extractSo(type: Copy) {
println 'Extracting *.so file(s)....'

from zipTree("${project.rootDir}/ModuleName/ModuleName.aar")
into "${project.rootDir}/${project.name}/src/main/jniLibs/"include "jni/**/*.so"
eachFile {
def segments = it.getRelativePath().getSegments() as List
println segments
it.setPath(segments.tail().join("/"))
return it
}
includeEmptyDirs = false
}

preBuild.dependsOn extractSo

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]