Android是否可以在本地模式下从SD卡加载DLL文件?

5

我想将我写的程序移植到Android上。该程序在Windows和Linux上使用C++编写。该程序使用dll文件实现插件架构。可以通过下载dll文件并将其放置在特定文件夹中来向程序添加新插件。 我的问题是... 是否可能将为Android构建的dll文件下载到SD卡上的目录,然后从本地代码加载和使用这些dll文件。


Dll不意味着Windows吗?Android库不必须是.so文件吗? - I82Much
1个回答

7

我认为不行,因为外部存储是以noexec选项挂载的。你可以从应用程序的私有目录加载库。


你所说的私有目录是指 assets 和 raw 文件夹吗?如果是,我认为它们已经打包在 apk 文件中了。安装后是否可以从网络下载它们,还是必须发布程序更新才能获取它们? - roguetreasure
不,我的意思是你应该将.so文件放置在我给你链接的getFilesDir()方法返回的目录中。这必须发生在运行时,可以来自互联网或资产和原始目录。 - ognian
谢谢,感谢回答。 - roguetreasure
1
从技术上讲,您可以将代码从sdcard加载到可执行内存中,只是mmap将拒绝从noexec文件系统映射可执行页面,因此bionic的链接器(使用mmap)将拒绝为您执行此操作 - 因此,您必须编写自己的链接器,它将加载到匿名映射的可执行页面。这将是很多工作,并意味着您加载的所有代码都在实际需要之前使用真正的物理内存而不是虚拟内存。 - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接