iOS vs Android - у Apple развяжется пупок?

User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: iOS vs Android - у Apple развяжется пупок?

Post by Интеррапт »

Ljolja wrote:на 0.0001%
А как ты посчитала? Например, у тебя есть код, который использует вибратор. Прописан пермишен android.permission.VIBRATE. А юзер его отключил. Т.е. теперь вызов
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
будет крешать программу с exception. Аналогично с сетью, файлами и еще десятком других возможностей. Сотни разных функций могут зависеть от десятков разных пермишинов.

Как минимум тебе нужно пройтись по всему своему коду (в тысячи и десятки тысяч строк) и прикинуть, какая строчка кода может вызвать exception (а это unchecked exception, т.е. компилятором не энфорсится) по причине того, что какой-то пермишен не указан. И быть готовым или обрабатывать этот exception или использовать какой-то Context.checkCallingPermission() перед каждым потенциально опасным вызовом (а их не так просто и найти, особенно если не с нуля код пишешь, а нужно модифицировать уже написанный код). Я лично вижу дофигища работы и еще и с неплохой вероятностью ошибки.

А теперь, если несложно обоснуй, каким образом у тебя почти нулевой эффорт получился?
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: iOS vs Android - у Apple развяжется пупок?

Post by dotcom »

Там же в тексте написано, что программа "сама говорит". Я уверен, что программы с таким развитым интеллектом могут и сами решить проблему. :P
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: iOS vs Android - у Apple развяжется пупок?

Post by Интеррапт »

dotcom wrote:Там же в тексте написано, что программа "сама говорит". Я уверен, что программы с таким развитым интеллектом могут и сами решить проблему. :P
Ну мне просто интересно послушать о решении. Люблю готовые решения.
User avatar
АццкоМото
Уже с Приветом
Posts: 15276
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: iOS vs Android - у Apple развяжется пупок?

Post by АццкоМото »

Интеррапт wrote:Т.е. теперь вызов
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
будет крешать программу с exception. Аналогично с сетью, файлами и еще десятком других возможностей.
Ты это знаешь или предполагаешь? Я сейчас за 2 минуты глянул - работа с сетью, например, не регулируется этой фичей. Работа с файловой системой - тоже. А ничего особенного приложение не делает. Пуш-сообщения не приходили, но зарегистрироваться никто не мешает.
Единственное действие, которое я быстро смог выжать из своей аппы - это copy/paste. Делаешь его - выскакивает в Апп Опс. Запрещаешь действие - и все, копи/пейст исчезают из приложения
Поэтому есть версия - просто версия, догадка, что никаких эксепшенов кидаться не будет. А управлять пермишенами можно будет только теми, которые могут gracefully послать нафиг приложение. Контакты прочитать? Да пожалуйста, их нету. Сообщение получить? Да оно просто не будет доставлено. Отослать? Либо молча не отошлется, либо какой-нибудь дженерик/нетворк еррор.
Еще раз, чисто предположение. Ибо ТАК сломать существующие приложения новым хендлингом пермишенов гугл не должен решиться
Мат на форуме запрещен, блдж!
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: iOS vs Android - у Apple развяжется пупок?

Post by Zorkus »

Я, в принципе,противник checked exceptions в Java (со времен EJB). Но подумываю, что может, экспешены которые выкидываются по пермишенам должны быть checked?

Вообще, на такие случай, в языке должна быть опция пометить заданный Exception class, скажем, PermissionAccessViolationException, compile-time аннотацией @Checkable. И кастомный процессор аннотаций должен при выставленной опции -DcheckCheckableException показывать их как ошибки.

Интеррапт, я поди велосипед изобретаю же, есть такое? :-)
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: iOS vs Android - у Apple развяжется пупок?

Post by Интеррапт »

АццкоМото wrote: Ты это знаешь или предполагаешь? Я сейчас за 2 минуты глянул - работа с сетью, например, не регулируется этой фичей. Работа с файловой системой - тоже.
Без понятия даже - факт, что Гугл пока вообще эту фичу "спрятал". Работа с файловой системой может и не регулируется, а вот чтение с SD карты - вполне может.
АццкоМото wrote: Поэтому есть версия - просто версия, догадка, что никаких эксепшенов кидаться не будет. А управлять пермишенами можно будет только теми, которые могут gracefully послать нафиг приложение. Контакты прочитать? Да пожалуйста, их нету. Сообщение получить? Да оно просто не будет доставлено. Отослать? Либо молча не отошлется, либо какой-нибудь дженерик/нетворк еррор.
В принципе у iOS подобный подход, если отказался дать читать контакты, то вернется пустой список контактов.
АццкоМото wrote: Еще раз, чисто предположение. Ибо ТАК сломать существующие приложения новым хендлингом пермишенов гугл не должен решиться
Да, я тоже не думаю, что Гугл так захочет все сломать, но с другой стороны Гугл публично и не выкатил эту фичу. Поиграюсь потом, напишу какое-то простенькое приложение, которое читает адресную книгу (ну или гугл example запущу) и через эту 3rd party app - отключу пару пермишинов. Посмотрим, выкинет ли оно с exception.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: iOS vs Android - у Apple развяжется пупок?

Post by Интеррапт »

Zorkus wrote:Я, в принципе,противник checked exceptions в Java (со времен EJB). Но подумываю, что может, экспешены которые выкидываются по пермишенам должны быть checked?

Вообще, на такие случай, в языке должна быть опция пометить заданный Exception class, скажем, PermissionAccessViolationException, compile-time аннотацией @Checkable. И кастомный процессор аннотаций должен при выставленной опции -DcheckCheckableException показывать их как ошибки.

Интеррапт, я поди велосипед изобретаю же, есть такое? :-)
Для этого нужно, чтобы методы в Android API были помечены подобными аннотациями, но ничего подобного там нет. Собственно и в стандартной Джаве такого нет. Например коннектишься ты к сети, а твой Security Manager запрещает это делать. Никак ты это в compile time не отловишь. Т.е. как бы твой поинт я понимаю, но обычно "системные" фреймворки такое не энфорсят.
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: iOS vs Android - у Apple развяжется пупок?

Post by Zorkus »

Интеррапт wrote:
Zorkus wrote:Я, в принципе,противник checked exceptions в Java (со времен EJB). Но подумываю, что может, экспешены которые выкидываются по пермишенам должны быть checked?

Вообще, на такие случай, в языке должна быть опция пометить заданный Exception class, скажем, PermissionAccessViolationException, compile-time аннотацией @Checkable. И кастомный процессор аннотаций должен при выставленной опции -DcheckCheckableException показывать их как ошибки.

Интеррапт, я поди велосипед изобретаю же, есть такое? :-)
Для этого нужно, чтобы методы в Android API были помечены подобными аннотациями, но ничего подобного там нет.
Написать утилиту, которая будет принимать джар на вход и список желаемых эксепшенов, и через BCEL или подобные тулзы модифицировать джар?
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: iOS vs Android - у Apple развяжется пупок?

Post by Zorkus »

А вообще интересно попробовать..
User avatar
Ljolja
Уже с Приветом
Posts: 2924
Joined: 01 Apr 2004 04:22

Re: iOS vs Android - у Apple развяжется пупок?

Post by Ljolja »

Интеррапт wrote:
Ljolja wrote:на 0.0001%
А как ты посчитала? Например, у тебя есть код, который использует вибратор. Прописан пермишен android.permission.VIBRATE. А юзер его отключил. Т.е. теперь вызов
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
будет крешать программу с exception. Аналогично с сетью, файлами и еще десятком других возможностей. Сотни разных функций могут зависеть от десятков разных пермишинов.
I usually use try ... catch block in questionable cases. I'd put an assumption that you do have permission from the beginning as wrong. So, if the code is written with catch exception, there shouldn't be an issue, it you got a piece of code from somewhere in internet and it's not as great as you'd expect - don't complain :-) .
Интеррапт wrote:
прикинуть, какая строчка кода может вызвать exception (а это unchecked exception
I'd expect you make this yet while you write the code, not thereafter when something bad happened
Интеррапт wrote:
(а их не так просто и найти, особенно если не с нуля код пишешь, а нужно модифицировать уже написанный код). Я лично вижу дофигища работы и еще и с неплохой вероятностью ошибки.

А теперь, если несложно обоснуй, каким образом у тебя почти нулевой эффорт получился?
debug somebody else code is always more laborious work than to write your own :cry:
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: iOS vs Android - у Apple развяжется пупок?

Post by Интеррапт »

Ljolja wrote: I'd put an assumption that you do have permission from the beginning as wrong. So, if the code is written with catch exception, there shouldn't be an issue, it you got a piece of code from somewhere in internet and it's not as great as you'd expect - don't complain :-) .
Тут не нужно "I'd put an assumption that you do have permission from the beginning as wrong.". Все эти assumptions прописываются в manifest файле.
А каждую строчку кода ты случайно на java.lang.OutOfMemoryError не проверяешь? Эх, жаль, что я никогда твоего Андроид кода не видел :)
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: iOS vs Android - у Apple развяжется пупок?

Post by Интеррапт »

Но склоняюсь к мнению Аццко, что Гугл эту фичу или вообще public не выкатит или будет возвращать валидный инстанс класса, который ничего не будет делать. Например, если это сервис вибратора, то инстанс возвратится, но вибрировать не будет.
User avatar
АццкоМото
Уже с Приветом
Posts: 15276
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: iOS vs Android - у Apple развяжется пупок?

Post by АццкоМото »

Интеррапт wrote: Работа с файловой системой может и не регулируется, а вот чтение с SD карты - вполне может.
Я не могу этого гарантировать, но похоже, что не регулируется. Все пермишены, которые можно отключить (и которые я видел) можно представить, как отключить аккуратно. А вот уже чтение c sd card я представить не могу, как отключить без эксепшенов
Мат на форуме запрещен, блдж!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: iOS vs Android - у Apple развяжется пупок?

Post by Интеррапт »

АццкоМото wrote:
Интеррапт wrote: Работа с файловой системой может и не регулируется, а вот чтение с SD карты - вполне может.
Я не могу этого гарантировать, но похоже, что не регулируется. Все пермишены, которые можно отключить (и которые я видел) можно представить, как отключить аккуратно. А вот уже чтение c sd card я представить не могу, как отключить без эксепшенов
Ну чтение с SD card как бы в правильном коде вообще должно проверяться заранее, т.к. этой самой карты может и не быть. Вот похоже список отрубаемых exceptions:
location
read calendar
modify calendar
read contacts
read call log
modify contacts
modify call log
read SMS
write SMS
receive SMS
receive MMS
send SMS
receive WAP push
vibrate
modify settings
access notifications
call phone
record audio
camera
draw on top
post notification
User avatar
АццкоМото
Уже с Приветом
Posts: 15276
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: iOS vs Android - у Apple развяжется пупок?

Post by АццкоМото »

Интеррапт wrote: Ну чтение с SD card как бы в правильном коде вообще должно проверяться заранее, т.к. этой самой карты может и не быть.
Да, но это другая проверка, которую можно сделать очень по-разному. Плюс, хоть это и странный подход, но я же могу сделать приложение доступным только для некоторых моделей телефонов - во всех из них, как я точно знаю, карта впаяна и проверка типа как излишняя. (Да, я знаю, что и впаянную карту можно unmount)
Интеррапт wrote: Вот похоже список отрубаемых exceptions:
все вроде тривиально должно отключаться, но как отключить камеру - нипанятна. можно, конечно, транслировать картинку "хрен вам, а не камера", но не верится. хотя....
Мат на форуме запрещен, блдж!

Return to “Вопросы и новости IT”