INSTALL_FAILED_SHARED_USER_INCOMPATIBLE при использовании общего идентификатора пользователя
Я работаю над приложением android, которое будет совместно использовать базу данных. Для этого я использую android:sharedUserId
в обоих файлах манифеста приложения. Когда я пытаюсь запустить приложение после добавления этого sharedUserId, он показывает мне следующие ошибки в консоли.
[2013-03-04 19:37:32 - MainActivity] Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
[2013-03-04 19:37:32 - MainActivity] Please check logcat output for more details.
[2013-03-04 19:37:32 - MainActivity] Launch canceled!
Пожалуйста, помогите мне решить эту проблему.
Ответы
Ответ 1
Я выполнил следующие шаги:
- Удалено существующее приложение (если оно уже установлено)
- Удален общий идентификатор пользователя из манифеста android.
- Заблокировать приложение.
- Теперь снова введите общий идентификатор пользователя.
- создать приложение еще раз
Ответ 2
Это означает, что что-то о вашем приложении было неправильно удалено. Эти шаги помогают принудительно удалить из внутренних команд:
- Подключите телефон к ПК с помощью usb
- От запуска оболочки:
$ adb shell
[email protected]:/ $ su
[email protected]:/ # pm list packages | grep <part of package>
package:com.android.providers.applications
package:com.android.providers.calendar
package:com.android.providers.contacts
package:com.android.providers.downloads
...
[email protected]:/ # pm uninstall <package>
[email protected]:/ # exit
[email protected]:/ $ exit
$
В принципе, вы входите в оболочку android, становитесь суперпользователем, находите проблемные пакеты и удаляете его
Ответ 3
В моем случае у меня было два варианта сборки (один для устройства и один общий).
Я запускал специфичную для устройства сборку на эмуляторе при появлении этой ошибки.
Ответ 4
Хотя вы приняли ответ, я также хочу поговорить о моей ситуации, в которой я встретил эту ошибку. Мой проект - Launcher, который просто использует какой-то системный грант, например Manifest.xml, имеет два элемента:
<uses-permission android:name="android.permission.STATUS_BAR" />
or
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
и выход в консоль:
Error using StatusBarManagerService - java.lang.SecurityException on android.permission.STATUS_BAR
Наконец, мой коллега дал мне подсказку, используя "ключ отладки платформы", я не уверен, что это будет вам подходит, но для других парней возможность для такого рода вопроса.
Нижеследующее изображение - мое решение:
снимок экрана из структуры проекта
вы также можете заметить "Signing Config" для "Flavors" и "Build Types", вы можете выбрать "Name:" of "Signing".
Ответ 5
Я сделал несколько иной подход.
В моей работе используется модифицированная ОС Android вместе с измененным инструментом adb. Приложение (app1) Я работаю над "совместным использованием пользователя" с другим приложением (app2) другой командой. Для того, чтобы заставить отладчик Android Studio работать, я должен был выполнить следующие шаги:
- используйте Build (из меню Android Studio) → Создать подписанный APK
- создать отладочную версию apk (app1) с информацией о хранилище ключей, используемой (app1 и app2)
- используйте adb для удаления предыдущего apk
- используйте adb для установки подписанного debug-apk
- используйте adb для запуска приложения в режиме отладки
- подключите отладчик Android Studio к приложению