Ответ 1
Существует несколько разных ресурсов, которые говорят вам, что ошибка 505 является конфликтом разрешения. Начиная с Android Lollipop, вы больше не можете дублировать пользовательские разрешения с тем же именем https://developer.android.com/about/versions/android-5.0-changes.html#custom_permissions. Если вы проверите stackoverflow для этой ошибки, вы найдете несколько отчетов о том, как люди предлагают это решение. Хотя иногда это может быть причиной этой ошибки, есть несколько других причин, по которым этот и другие конфликты могут произойти.
1. Более одного приложения определяет одно и то же разрешение
Если два совершенно разных приложения определяют одно и то же разрешение, например, если у вас есть приложение пользователя и менеджера, и у обоих из них есть что-то вроде строк:
<permission
android:name="same.package.name.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
2. То же приложение, подписанное разными клавишами
У вас есть одно и то же приложение, но подписано разными ключами. Например, если у вас была версия выпуска и отладочная версия, вы столкнетесь с конфликтом, потому что система видит это как два разных приложения, запрашивающих одно и то же разрешение.
3. Конфликтные органы
Но есть совершенно другая ситуация, которая может произойти, что менее очевидно. Ошибка 505 также может возникать в конфликтующих органах. Если два разных приложения объявляют один и тот же провайдер, например
<provider
android:name=".provider.YourProvider"
android:authorities="com.roqbot.client.YourProvider"
android:exported="false" />
Это также может привести к конфликту.
Последний и самый сложный конфликт, который может произойти с Google Play Services 8.1 и выше. Если вы не определяете идентификатор приложения в файле build.gradle, например:
defaultConfig {
applicationId "com.example.my.app"
}
возможно, что он автоматически сгенерирует поставщика, который может конфликтовать с другими приложениями. Чтобы проверить это, перейдите в свою сборку > промежуточные продукты > манифесты > полный > выпуск > AndroidManifest.xml и найдите
<provider
android:name="com.google.android.gms.measurement.AppMeasurementContentProvider"
android:authorities="com.google.android.gms.google_measurement_service"
android:exported="false" />
Здесь имя авторизации будет конфликтовать с другими приложениями. Если вы добавите applicationId в конфигурацию по умолчанию, он изменит этот авторитет на
<provider
android:name="com.google.android.gms.measurement.AppMeasurementContentProvider"
android:authorities="com.example.my.app.google_measurement_service"
android:exported="false" />
Это очень тонкий и, похоже, ошибка, возникающая в сервисах Google Play 8.1. О проблеме можно судить здесь. https://code.google.com/p/android/issues/detail?id=189079&can=1&q=error%20505&sort=-opened&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened
Следует помнить, что это может быть несколько вещей, и единственное, что вы можете проверить с ошибкой 505, - это конфликт какого-то рода и что это может быть или не обязательно быть пользовательским разрешением конфликт.