Линт жалуется на не переведенную строку gcm_defaultSenderId

Я следил за учебником https://developers.google.com/cloud-messaging/android/client. Он работает - я могу отправлять и получать уведомления.

Но когда я пытаюсь создать приложение для выпуска, Android Lint жалуется:

Error: "gcm_defaultSenderId" is not translated in ...

Поэтому я могу отключить сбой сборки, когда Lint жалуется на это в build.gradle:

lintOptions{
    abortOnError false
}

Но, очевидно, это не решение. Hardcoding senderId в моем приложении также не очень хорошая идея (у нас есть действительный gcm_defaultSenderId в любом случае в google-services.json, поэтому удвоение в будущем задает проблемы).

Есть ли какой-либо путь вокруг этого очевидного контроля со стороны разработчиков Google Play Services?


РЕДАКТИРОВАТЬ 02 декабря 2015 г. О, МОЙ БОГ! Сегодня google actallt начал делать что-то по этой проблеме, см. Здесь.


Отказ от ответственности: это не дубликат Невозможно сгенерировать выпуск APK из-за GCM SenderId Android - принятый ответ мне неприемлем.

Ответ 1

Я думаю, что этот вопрос на самом деле дублируется Невозможно сгенерировать выпуск APK из-за GCM SenderId Android, даже если я согласен с вашим мнением относительно принятого ответа.

Решение намного проще, вам просто нужно обновить версию зависимостей Google Services, взгляните на ответ , который я дал там для подробности.


EDIT Решение, которое я дал, недостаточно для решения проблемы. Я думал, что все в порядке, потому что я работаю над многопользовательским приложением, и по причинам, которые я до сих пор изучаю, плагин Google Services gradle генерирует только строку gcm_defaultSenderId в ароматах, отличных от основного.

В соответствии с этим ссылка,

Эта проблема должна быть исправлена ​​с помощью 8.3.0 Служб Google Play и зависимостей 1.5.0-beta2.

Но на самом деле, в то время как строка gcm_defaultSenderId теперь генерируется правильно (с атрибутом translatable="false"), строки google_app_id и ga_trackingID не являются.

TL; DR. Я пришел к выводу, что мы должны ждать, пока ребята из Google исправят эту проблему и проигнорируют эту ошибку, добавив к файлу уровня build.gradle

>
...
android {
    lintOptions {
        abortOnError false
    }
}
...

Ответ 2

Попробуйте это

android {
 lintOptions {
    disable 'MissingTranslation'
}

}