运行从Internet下载的本机库

时间:2014-09-10 11:40:10

标签: android android-ndk

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

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

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

对我而言,这有点令人困惑(实际上很混乱)。

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

如果是这样,我们确定它将来会在新版本的Android中运行吗?

比如,Google对此有何正式建议?

1 个答案:

答案 0 :(得分:1)

是的,这适用于生产设备。但是如果你把它放在/ sdcard中它不适用于所有设备,你应该使用app private / internal文件夹(对应于/data/data/com.example.app/something)。在创建/下载之后,您可能需要在文件上执行等效的chmod + x。

我不确定谷歌是否有任何关于它的官方推荐,但你链接的帖子非常清楚地表明这是有效的,而且没有计划打破它。