Intereting Posts
Как скрыть разделитель, когда удаление анимации происходит в режиме ресайклера Разница между каталогами / res и / assets Как удалить объект из Realm Database Android? Параметры низкоэнергетического подключения Bluetooth для Android, iOS и Win8 Как сохранить мягкую клавиатуру от открытия активности в Android? Непредвиденная ошибка при анализе ввода недопустимого файла иерархии uiautomator Настройка WebView для просмотра рабочего стола, а не для мобильного сайта Добавление версии сервисов Google Play в манифест вашего приложения? Android: QCMediaPlayer не может быть расположен Зачем использовать Fragment # setRetainInstance (boolean)? Как выполнять операции с базой данных с помощью Async Task Доступ к электронной почте пользователя с помощью нового Android Android SDK Какая лучшая среда разработки для разработки приложений для Android? Установка Android Plugin Error с помощью Eclipse Juno 4.2.0 Право на левый прогрессБар?

Конфликт разрешений Android L между версиями и debug apks

Я обновился до Android L и выпустил как выпущенную версию моего приложения в Google Play, так и версию отладки, которую мы используем для разработки.

Они подписаны разными ключами.

Моя проблема в том, что я устанавливаю версию Google play, а затем, когда я пытаюсь установить версию отладки, которая определяется следующим образом:

debug { debuggable true packageNameSuffix ".debug" buildConfigField BOOLEAN, IS_DEV, TRUE } 

И это ошибка, которую я получаю:

 Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.app.name.permission.C2D_MESSAGE pkg=com.app.name] 

Это проблематичное разрешение:

 <permission android:name="com.app.name.permission.C2D_MESSAGE" android:protectionLevel="signature"/> <uses-permission android:name="com.app.name.permission.C2D_MESSAGE"/> 

Я знаю ( http://commonsware.com/blog/2014/08/04/custom-permission-vulnerability-l-developer-preview.html ) и того факта, что это было создано из-за проблемы с безопасностью, но Мне все еще нужно иметь возможность работать с командой, у каждой из которых есть свой собственный ключ подписи отладки.

Я попытался удалить с помощью удаления adb ( https://stackoverflow.com/a/27090838/2746924 ), и я попытался очистить кэш всех приложений на устройстве.

Solutions Collecting From Web of "Конфликт разрешений Android L между версиями и debug apks"

Я могу успешно одновременно release debug и release версии клиентского приложения GCM, установленного на одном Android 5.0 Nexus 9, путем внесения изменений в манифест, чтобы использовать заполнители:

 <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> 

Обратите внимание, что вы также должны использовать ${applicationId} в своем <receiver> для <category> :

  <receiver android:name="GCMBroadcastReceiverCompat" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE"/> <category android:name="${applicationId}" /> </intent-filter> </receiver> 

(Честно говоря, я не убежден, что пользовательское <permission> даже больше необходимо, учитывая, что я попытался удалить его и все еще могу получать сообщения GCM)

Если вы затем определите свой build.gradle как у вас, с помощью applicationIdSuffix для одного из типов сборки (например, debug ), вы получите отдельные пользовательские разрешения по типу сборки, и вы сможете установить их на стороне .