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 к приложению