2

假设我们现在可以在纯本机库上定义依赖项,但我在添加多个依赖项时遇到了问题。

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.

4

0 回答 0