у меня есть 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
Задача ещё не решена.
Других решений пока нет …