2012-04-03 3 views
1

Ich möchte ein SDK in Android verwenden, aber ich möchte nicht, dass das SDK Zugriff auf Berechtigungen hat, die ich nicht explizit angegeben habe. Wenn das SDK eine nicht erfasste Ausnahme auslöst, möchte ich nicht, dass es meine gesamte Anwendung herunterfährt.Gibt es eine Möglichkeit, Teile eines Java-Prozesses auf Android zu sandboxieren?

In C# gibt es das Konzept einer AppDomain, wo Sie den darin ausgeführten Code wie eine Sandbox behandeln, Berechtigungen gewähren (oder einschränken) und nur Zugriff auf Daten gewähren können, die Sie explizit freigeben möchten.

Gibt es irgendetwas, das in Java für die Android-Plattform so funktioniert?

+0

warum -1 für diese Frage? Ich habe es gewählt – Monojit

+0

:-) Danke. Es war aus irgendeinem Grund -2. Hasser müssen hassen. – Hounshell

Antwort

2

Hier sind zwei Fragen. Der erste behandelt die Behandlung von Ausnahmen in einem nicht vertrauenswürdigen Code. Ein sorgfältig geschriebener try/catch-Block sollte dafür sorgen, solange das nicht vertrauenswürdige Stück reines Java ist. Wenn systemeigener Code zulässig ist, würde eine Isolation auf Prozessebene helfen. Weitere Informationen zum Ausführen von Code in einem separaten Prozess finden Sie unter Android-Dienste. Sie können einen Dienst festlegen, der in einem bestimmten Prozess ausgeführt wird. Dann werden Ausnahmen (die nicht verwalteten) die Haupt-App nicht herunterfahren. Sie erhalten nur eine Ausnahme "Service ist gestorben".

Ein ganz anderes Problem ist das Senken des Berechtigungssatzes. Soweit ich weiß, gibt es keine Möglichkeit, den Berechtigungssatz in einer App zu verringern. Selbst ein Ersatzprozess wird nicht helfen. Wenn Sie eine ganze Anwendung (im Android-Sinne des Wortes) zum Einwickeln und Ausführen von benutzerdefinierten Code senden, könnte das helfen. Aber die Logistik der App-Installation würde schwierig werden. Google Market unterstützt den Begriff der App-Abhängigkeit oder -voraussetzungen nicht ohne weiteres.

+0

Guter Punkt über den Dienst, ich denke, das wird auch Situationen erfassen, in denen die Bibliothek separate Threads aufruft (was dieser tut). Die Erlaubnis ist jedoch unglücklich. Ich werde das etwas länger offen lassen, vielleicht gibt es eine magische Invokation, die nicht sehr öffentlich gemacht wird und * funktioniert *. – Hounshell

+0

Wenn Sie nach nicht sehr publizierten Sachen suchen, beginnen Sie in den Android-Quellen zu graben. –

0

Alle Berechtigungen, die Sie Ihrer App erteilen, sind die Berechtigungen, die zulässig sind, da sie sonst für fast nichts Berechtigungen haben. Sie Ihre Berechtigungen in Ihrem Manifest.xml anderen als dass Sie keine anderen Berechtigungen festlegen können.

+0

Ja, ich möchte ein SDK, das ich verwende, um nur auf einen Teil dieser Berechtigungen zugreifen zu können. – Hounshell

Verwandte Themen