有没有办法在Android上沙箱部分java进程?

时间:2012-04-03 18:16:56

标签: java android appdomain

我想在Android中使用SDK,但我不希望SDK能够访问我没有明确指出的权限。最重要的是,如果SDK抛出未捕获的异常,我不希望它导致整个应用程序崩溃。

在C#中有一个AppDomain概念,您可以在其中处理在其中运行的代码,如沙箱,授予(或限制)权限,并且只提供对您明确要共享的数据的访问权。

Android平台的Java中是否有类似的功能?

2 个答案:

答案 0 :(得分:2)

这里有两个问题。第一个涉及处理一段不受信任的代码中的异常;只要不受信任的片段是纯Java,精心编写的try / catch块就应该处理好这个问题。如果允许本机代码,那么过程级别隔离的任何内容都会有所帮助。要在单独的进程中运行代码,请阅读Android服务;您可以指定在指定进程中运行的服务。然后异常(非托管类)不会降低主应用程序。你只会得到一个“服务已经死亡”的例外。

另一个问题是降低权限集。据我所知,没有办法降低应用程序中的权限集。即使是代理过程也无济于事。如果您运送整个应用程序(在Android的意义上)来包装和运行自定义代码,那可能会有所帮助。但是应用程序安装的后勤工作会变得棘手。 Google Market不支持应用程序相互依赖或先决条件的概念。

答案 1 :(得分:0)

您为应用提供的所有权限都是允许的权限,否则它几乎没有任何权限。 您在Manifest.xml中设置权限,而不是设置其他类型的权限。