android - 运行从互联网下载的 native 库

标签 android android-ndk

我之前在 G+ Android 社​​区上发布了这个问题,但到目前为止还没有答案。 这是关于下载和加载 native 库。

我一直在阅读和了解到,理论上可以下载“.so”文件,并使用 System.load 方法加载它。

但我也在这里阅读了以下内容(https://groups.google.com/forum/#!topic/android-ndk/0uY4qgam1Ws):“此外,您不应该通过正常方式在 ARM 系统上从 SDCARD 加载 .so,因为 ARM 支持不可执行的页面和 android 的实现mmap() 拒绝映射由 noexec 文件系统支持的可执行页面。”

公平让我有点困惑(实际上很困惑)。

所以这是我的问题:在生产设备上,是否可以下载库,将其粘贴在手机上的某个位置,然后加载它,然后将其与 JNI 一起使用。

如果是这样,我们确定它在未来仍可用于新版本的 Android 吗?

例如,Google 对此的官方建议是什么?

最佳答案

是的,这适用于生产设备。但是如果你把它放在/sdcard 中,它并不适用于所有设备,你应该为此使用应用程序私有(private)/内部文件夹(对应于/data/data/com.example.app/something)。不过,您可能需要在创建/下载文件后对文件执行相当于 chmod +x 的操作。

虽然我不确定是否有关于它的任何官方 Google 推荐,但您链接的帖子非常清楚地表明这是为了工作并且没有计划破坏它。

关于android - 运行从互联网下载的 native 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764458/

相关文章:

java - 如何保护我的 Android 应用程序中同步的数据?

Android ViewPagerIndicator 不刷新

java - 将 mat 从 java 传递到 c++ jni android arm64-v8a 32/64 位的问题

链接期间 Android NDK undefined reference

c++ - Android NDK r5 不能包含 STL 头文件

安卓KTX : how to override Kotlin added property extension

android - 无法在 Android 设备的 Facebook 页面中看到类似选项

Android Photo Background Eraser 需要帮助-不删除位图,只是画黑线

android - 发现多个文件的操作系统独立路径为 'lib/x86/libusb.so'

Android Studio 原生代码编译速度慢