Android Nougat:检测到应用程序本机库的问题

时间:2017-04-04 11:05:51

标签: android sqlcipher

我们只需将Nexus 96升级到Android N,现在可以在使用我们的应用时获得以下弹出窗口: enter image description here

给我一​​些建议

2 个答案:

答案 0 :(得分:4)

检查报告的同一问题: https://github.com/litehelpers/Cordova-sqlcipher-adapter/issues/41

现在它已经解决了。

供参考:

sqlcipher/android-database-sqlcipher#216

您可以在以下链接中查看SQLCipher for Android Release-Android N支持:

https://discuss.zetetic.net/t/sqlcipher-for-android-release-android-n-support/1465

修改

您也可以查看 NDK Apps Linking to Platform Libraries用于私人图书馆使用。

检查" 更新您的应用"提供修复这些类型错误的步骤的部分。

答案 1 :(得分:0)

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