假设我们现在可以在纯本机库上定义依赖项,但我在添加多个依赖项时遇到了问题。
apply plugin: 'com.android.model.library'
model {
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion.apiLevel 11
targetSdkVersion.apiLevel 22
versionCode = 1
versionName = "1.0"
}
sources {
//noinspection GroovyAssignabilityCheck
main {
jni {
dependencies {
project ":libraw"
project ":libjpeg"
}
}
}
}
ndk {
moduleName "rawprocessor"
cppFlags.add("-fexceptions")
ldLibs.add("log")
stl "gnustl_shared"
}
}
}
这两个库是com.android.model.native
并且它们会正确生成 .so。
标头是从 foo 加载的,但不是从 bar 加载的。如果我交换这些行,它们将从 bar 而不是 foo 加载。有没有办法加载多个依赖项?
更新(实际错误信息,完整的 build.gradle 添加)
undefined reference to 'jpeg_std_error'
undefined reference to 'jpeg_CreateDecompress'
undefined reference to 'jpeg_mem_src'
这些继续用于聚合库中对 libjpeg 的任何引用。如果我将 libjpeg 交换为第一个,我将获得对另一个库中任何调用的相同未定义引用。
undefined reference to `open_file(char const*, long long)'
undefined reference to `recycle()'
更新 2
我刚刚注意到,当我添加聚合库模块(上面的 build.gradle)时,构建过程不会构建第二个库。如果我注释掉该库,它会构建两个纯本机库。我现在开始怀疑是否存在一些问题,因为这libraw
也取决于libjpeg
.