在Android Studio中使用共享库时出现不满意的链接错误

在Android Studio中使用共享库时出现不满意的链接错误,android,c++,android-studio,android-ndk,android-gradle-plugin,Android,C++,Android Studio,Android Ndk,Android Gradle Plugin,我在Android studio中有一个NDK项目,它可以加减2个数字 @Override protected void onCreate(Bundle savedInstanceState) { JniAdapter jniAdapter = new JniAdapter(); Log.d(LOG_TAG, "Sum of 1 and 1 is: " + jniAdapter.add(1, 1)); Log.d(LOG_TAG, "Di

我在Android studio中有一个NDK项目,它可以加减2个数字

@Override
    protected void onCreate(Bundle savedInstanceState) {

        JniAdapter jniAdapter = new JniAdapter();
        Log.d(LOG_TAG, "Sum of 1 and 1 is: " + jniAdapter.add(1, 1));
        Log.d(LOG_TAG, "Difference of 1 and 1 is: " + jniAdapter.subtract(1, 1));
    }
加法操作由外部静态库提供,减法操作由外部共享库提供,这两个库都是用ol'school ndk build构建的;我希望我的gradle文件编译这两个库并构建另一个共享库。但是它看起来像是在编译静态库,而不是在共享库中,我得到了一个共享库的unsatifiedLinkError。没有共享库,一切正常。出什么事了

我的gradle文件

apply plugin: 'com.android.model.application'

model {
    android {
        .....

        defaultConfig.with {
          .......
        }
    }
    android.ndk {
        moduleName = "native"
        ldLibs += ["mySharedLib"] 
        ldLibs += ["myStaticLib"]
        cppFlags += "-I${staticLibIncludeRoot}".toString() 
        cppFlags += "-I${sharedLibIncludeRoot}".toString()
    }
    android.productFlavors {
        create ("arm7") {
            ndk.abiFilters += "armeabi-v7a"
            ndk.ldFlags += "-L${staticLibRoot}/armeabi-v7a".toString() 
            ndk.ldFlags += "-L${sharedLibRoot}/armeabi-v7a".toString()
        }
    }
}
dependencies {
   .....
}

这正是共享库的本质。没有常规的过程来“编译”、链接或以其他方式将共享库转换为更大的库(一些工具有助于对共享库进行条带化或收缩,但这是另一回事)

在androidstudio项目中使用预先构建的共享库,并通过gradle处理它们是完全可以的

最简单的方法是将这些共享库的路径添加到
jniLibs.srcDirs
。Android插件将相关二进制文件复制到生成的APK中