Android:动态类加载到沙箱

时间:2013-06-16 14:52:38

标签: android sandbox dexclassloader

我想从不受信任的来源加载动态类。

我找到了使用this加载动态类的DexClassLoader教程。如何防止加载的类入侵我的数据库或对我的应用程序造成任何损害?有可能吗?

1 个答案:

答案 0 :(得分:0)

The article you cite有点过时了。 SDK的build-tools目录中的dx脚本是一种更简单的方法来添加classes.dex文件;只需将代码导出到.jar文件,然后运行dx --dex --output result.jar exported.jar

但这不能回答你的问题!这是我自己看过的东西。我没有我认为的确定答案,但是,我确定没有看到任何方法来沙箱部分你的应用程序:你加载的任何插件将运行您的应用程序的权限。到目前为止,我提出的最佳解决方案是在一个单独的进程中运行你的插件,权限有限,但当然这有其自身的问题:

  1. 您无法从主进程向View添加ViewGroup子进程。
  2. 现在为插件提供应用服务需要IPC。 Binder和AIDL使这很容易 - 但不要让它更便宜。
  3. 从插件中获取任何结果也需要IPC。也许你可以使用Binder进行双向通信 - 我还没有看过 - 但也许你将不得不使用原始的Linux IPC机制。