0

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

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

4

1 回答 1

0

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

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

  1. 您不能将View来自子进程的 a添加到ViewGroup来自主机进程的 a。
  2. 为插件提供应用服务现在需要 IPC。Binder 和 AIDL 使这变得非常容易 - 但不要让它变得更便宜。
  3. 从插件中获取任何结果也需要 IPC。也许你可以使用 Binder 进行双向通信——我还没有研究过——但也许你将不得不使用原始的 Linux IPC 机制。
于 2013-09-17T18:28:52.623 回答