在Android Studio中使用共享库时出现不满意的链接错误
我在Android studio中有一个NDK项目,它可以加减2个数字在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
@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中