有没有办法在Android上对java进程的某些部分进行沙箱处理?

有没有办法在Android上对java进程的某些部分进行沙箱处理?,java,android,appdomain,Java,Android,Appdomain,我想在android中使用SDK,但我不希望该SDK拥有我没有明确授予它的任何权限。最重要的是,如果SDK抛出一个未捕获的异常,我不希望它破坏我的整个应用程序 在C#中有一个AppDomain的概念,您可以将其中运行的代码视为沙箱,授予(或限制)权限,并仅提供对您明确希望共享的数据的访问 在Android平台的Java中,是否有类似的功能?您为应用程序授予的所有权限都是允许的权限,否则它几乎没有任何权限。 您可以在Manifest.xml中设置权限,但不能设置其他类型的权限。这里有两个问题。第一

我想在android中使用SDK,但我不希望该SDK拥有我没有明确授予它的任何权限。最重要的是,如果SDK抛出一个未捕获的异常,我不希望它破坏我的整个应用程序

在C#中有一个AppDomain的概念,您可以将其中运行的代码视为沙箱,授予(或限制)权限,并仅提供对您明确希望共享的数据的访问


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

您为应用程序授予的所有权限都是允许的权限,否则它几乎没有任何权限。
您可以在
Manifest.xml
中设置权限,但不能设置其他类型的权限。

这里有两个问题。第一种是处理一段不可信代码中的异常;仔细编写的try/catch块应该考虑到这一点,只要不受信任的部分是纯Java的。如果允许使用本机代码,那么除了进程级隔离之外,没有任何东西会有所帮助。要在单独的进程中运行代码,请阅读Android服务;您可以指定在指定进程中运行的服务。然后异常(非管理类)不会关闭主应用程序。您将得到一个“服务已终止”异常


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

是的,我希望我使用的SDK只能访问这些权限的子集。这项服务的优点是,我认为这也可以捕捉到库中出现单独线程的情况(这一个也可以)。但这种许可是不幸的。我将把这个问题留得更久一些,也许有一些魔法调用没有被高度宣传,并且确实有效。如果你想要的是没有被高度宣传的东西,开始挖掘Android的来源。为什么这个问题-1?我已经投了赞成票:-)谢谢。由于某种原因,它降到了-2。憎恨者必须憎恨。