Есть ли способ для песочницы частей Java-процесса на Android? - PullRequest
1 голос
/ 03 апреля 2012

Я хочу использовать SDK в Android, но я не хочу, чтобы у этого SDK был какой-либо доступ к разрешениям, которые я ему явно не предоставил.Кроме того, если SDK генерирует необработанное исключение, я не хочу, чтобы оно закрывало все мое приложение.

В C # существует концепция AppDomain, где вы можете обрабатывать код, работающий внутриэто как песочница, предоставление (или ограничение) разрешений и предоставление доступа только к тем данным, которыми вы явно хотите поделиться.

Есть ли что-нибудь, что работает в Java для платформы Android?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Здесь есть два вопроса.Первый имеет дело с обработкой исключений в части ненадежного кода;Об этом должен позаботиться тщательно написанный блок try / catch, если недоверяемый элемент - это чистая Java.Если собственный код разрешен, ничто, кроме изоляции на уровне процесса, не поможет.Чтобы запустить код в отдельном процессе, ознакомьтесь со службами Android;Вы можете назначить сервис для запуска в назначенном процессе.Тогда исключения (неуправляемый вид) не приведут к отключению основного приложения.Вы просто получите исключение «служба умерла».

Еще одна проблема заключается в снижении набора разрешений.Насколько я знаю, нет никакого способа уменьшить набор разрешений в приложении.Даже суррогатный процесс не поможет.Если вы поставите целое приложение (в смысле Android) для упаковки и запуска пользовательского кода, это может помочь.Но логика установки приложения будет сложнее.Google Market не поддерживает идею взаимозависимости приложений или предварительных условий.

0 голосов
/ 03 апреля 2012

Все разрешения, которые вы даете своему приложению, являются разрешениями, которые разрешены, в противном случае оно не будет иметь разрешения практически ни за что. вы устанавливаете свои разрешения в вашем Manifest.xml иначе, чем в том, что вы не можете устанавливать другие виды разрешений.

...