【发布时间】:2017-04-04 11:05:50
【问题描述】:
【问题讨论】:
-
你使用哪个版本的sqlcipher?
-
检查我更新的答案。
【问题讨论】:
检查报告了相同的问题: https://github.com/litehelpers/Cordova-sqlcipher-adapter/issues/41
现在已经解决了。
供参考:
sqlcipher/android-database-sqlcipher#216
您可以在以下链接查看 SQLCipher for Android Release—Android N Support:
https://discuss.zetetic.net/t/sqlcipher-for-android-release-android-n-support/1465
编辑:
您也可以查看 NDK Apps Linking to Platform Libraries 供私人图书馆使用。
选中“更新您的应用”部分,该部分提供了修复这些类型错误的步骤。
【讨论】:
您可能正在使用直接访问私有 API 的本机库。问题描述如下。
来自 Android 开发者博客https://android-developers.googleblog.com/2016/06/android-changes-for-ndk-developers.html:
私有 API(自 API 24 起强制执行)
本机库必须仅使用公共 API http://developer.android.com/ndk/guides/stable_apis.html?utm_campaign=android_discussion_ndkchanges_062716&utm_source=anddev&utm_medium=blog,并且不得链接到非 NDK 平台库。从 API 24 开始强制执行此规则,并且应用程序不再能够加载非 NDK 平台库。该规则由动态链接器强制执行,因此无论代码尝试加载它们的方式如何,都无法访问非公共库:System.loadLibrary(...)、DT_NEEDED 条目和对 dlopen(...) 的直接调用将以完全相同的方式失败。
(...)
潜在问题:从 API 24 开始,动态链接器将不会加载私有库,从而阻止应用程序加载。
解决方案:重写您的本机代码以仅依赖公共 API。作为短期解决方法,可以将没有复杂依赖项的平台库 (libcutils.so) 复制到项目中。作为长期解决方案,必须将相关代码复制到项目树中。不应从本机代码访问 SSL/Media/JNI 内部/绑定 API。必要时,本机代码应调用适当的公共 Java API 方法。
在 NDK 中,
platforms/android-API/usr/lib下提供了完整的公共库列表。
正如其他答案所指出的,这个 API 24 问题似乎已经解决了。
【讨论】: