将apk添加到AOSP后,System.loadLibrary()失败

问题描述 投票:3回答:3

我用android studio开发了android项目。它使用其他开发人员为语音识别而构建的android本机库。当我在Android设备上安装时,APK工作正常。

我需要将此APK放入AOSP,因为我将仅为我们的系统制作Android设备。 (我已经定制了AOSP)但是在将APK添加到AOSP后,APK无法加载库。

错误日志:

 java.lang.UnsatisfiedLinkError: dlopen failed: can't protect segments for "../libsengine.so": Permission denied

请帮我解决这个问题。

android android-source
3个回答
3
投票

如果你将apk添加到AOSP系统/ app / path作为预建的应用程序,这可能会有所帮助:Error adding prebuilt apk with shared libraries to AOSP http://blog.csdn.net/a462533587/article/details/46380795问题是你的apk中打包的共享库从未被提取到/ data / app-lib目录,所以它无法联系。


2
投票

您正在使用的库似乎正在使用某种动态代码加载,严格禁止在Android 26+ (Writable and Executable Segments Enforced for API level >= 26)上使用。您可以在以下blog上阅读有关TEXTREL安全风险的更多信息。

我假设在使用Android Studio进行编译时代码的工作原因是因为build.gradle定义了一个不强制执行TEXTREL检查的minSdkVersion / targetSdkVersion。通过AOSP make进行编译时,targetSdkVersion很可能被定义为强制执行TEXTREL检查的“当前”版本。

这些只是假设,所以我猜您可以检查或者提供更多信息,例如您正在构建的平台和Android.mk + build.gradle文件。


0
投票

我认为这与从OpenSSL到BoringSSL的Marshmallow切换有关。

您的异常发生在引用的库代码中。请与供应商联系以获取修复程序,或手动包含OpenSSL库以避免此问题。

你可以看到这个链接:https://sourcedna.com/blog/20150806/predicting-app-crashes-on-android-m.html

© www.soinside.com 2019 - 2024. All rights reserved.