SharedUserId: безопасно менять, когда приложение уже находится на рынке?
В следующей версии нашего приложения я хочу изменить sharedUserId, так как теперь мы используем приложение панели управления внутреннего контроля, которое должно записываться в другие файлы настроек приложения.
Но поскольку приложение уже установлено на многих телефонах, это будет проблемой? Я проверил небольшое испытание на эмуляторе, и я вижу исключения в журналах устройств, что *.bak версии файлов настроек не могут быть записаны. Не уверен, насколько это важно. Любопытно, что настройки безопасности все еще работают, хотя папка shared_prefs была создана с использованием другого идентификатора пользователя Linux.
Кто-нибудь пробовал это раньше?
Ответы
Ответ 1
И чтобы снова ответить на свой вопрос:
Нет, это не безопасно.. Поскольку обновление приложения через Android Market не приведет к удалению файлов базы данных и файлов предпочтений, новая версия не сможет читать или записывать эти файлы (поскольку они были созданы под другим идентификатором пользователя Linux), и приложение будет аварийно завершено после обновления. Вы должны попросить своих пользователей полностью удалить и переустановить приложение, что, безусловно, не рекомендуется.
Как правило, я заключаю:
Всякий раз, когда вы начинаете разрабатывать новое приложение, обязательно установите ручной атрибут android:process
и android:sharedUserId
! Это не повредит, если вам это не нужно, но он дает вам полный контроль над тем, какие приложения имеют доступ к этим частным ресурсам приложения.
Ответ 2
Нет решения на данный момент, но в главной роли в зарегистрированных проблемах может заставить Google исправить это:
http://code.google.com/p/android/issues/detail?id=1227
http://code.google.com/p/android/issues/detail?id=14074