android - 如何从 android 使用 c lib(.so)?

标签 android c android-studio android-ndk shared-libraries

目前我正在开发 Android NDK,并成功在 jni 中实现 C 代码,并在 android studio 1.5 上使用 jni 调用 C 代码。

但现在根据我的项目要求,我没有在我的 Android 项目上使用 C 代码,所以我只使用 .so 共享库

我得到了这个link并使用了sqlcipher,但我仍然对如何添加或调用 .so 共享库没有足够的了解。

引用上面的链接和示例,更新我的项目,但出现错误

java.lang.UnsatisfiedLinkError:dlopen失败:“/data/app/com.abc.xyz-2/lib/arm/libV1.so”有错误的ELF魔法

问题:

  1. 如何从android调用.so共享库。

  2. 如何在我的项目中包含 .so 文件。

最佳答案

首先阅读我的答案以添加 *.so 库:

https://stackoverflow.com/a/33164947/3626214

现在,请阅读此处如何解决 Android 6.X 设备上的 java.lang.UnsatisfiedLinkError: dlopen failed:,因为当您添加 *.so 库时,您会在此设备上收到错误消息:

build.gradle

android
        {

            //23 or higher
            compileSdkVersion 23
            buildToolsVersion "23.0.3"


 defaultConfig
                    {
                        ...
                        //important code, write API 22
                        targetSdkVersion 22
                       ...
                    }

...
}

关于android - 如何从 android 使用 c lib(.so)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38145641/

相关文章:

c - 使用 GNU GCC 编译器编译 C 项目时出现 "undefined reference to "错误

Cygwin malloc 覆盖堆中的另一个内存

java - 在模拟器中打开后,Android应用程序崩溃

android - 使用一个 admob 帐户和两个 google play 帐户?

android - 使用 Retrofit 和 RxJava,当 JSON 不直接映射到模型对象时,如何反序列化 JSON?

java - 我正在测试一个变量,并且不断收到 android.widget.EditText@

android - 由于 "multiple process",即时运行不起作用

html - 服务器显示文本而不是 HTML

android - 在 textview Android Studio 中预览文本

android - AAR ProGuard 不混淆