【问题标题】:Android Nougat: Detected problems with app native librariesAndroid Nougat:检测到应用程序本机库的问题
【发布时间】:2017-04-04 11:05:50
【问题描述】:

我们刚刚将 Nexus 96 升级到 Android N,现在在使用我们的应用程序时会出现以下弹出窗口:

给我一​​些建议

【问题讨论】:

  • 你使用哪个版本的sqlcipher?
  • 检查我更新的答案。

标签: android sqlcipher


【解决方案1】:

检查报告了相同的问题: 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 供私人图书馆使用。

选中“更新您的应用”部分,该部分提供了修复这些类型错误的步骤。

【讨论】:

    【解决方案2】:

    您可能正在使用直接访问私有 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 问题似乎已经解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 2017-05-08
      • 2016-04-05
      相关资源
      最近更新 更多