Can';由于GCM SenderId Android,无法生成APK版本
我已经在我的应用程序中实现了GCM(谷歌云消息)。Google Play Services库自动生成了Can';由于GCM SenderId Android,无法生成APK版本,android,google-cloud-messaging,lint,Android,Google Cloud Messaging,Lint,我已经在我的应用程序中实现了GCM(谷歌云消息)。Google Play Services库自动生成了值.xml,其中我的senderId是: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="gcm_defaultSenderId">123</string> </resources> 123 问题是我有其他语言环境,而在应用程序发布期间Lin
值.xml
,其中我的senderId
是:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="gcm_defaultSenderId">123</string>
</resources>
123
问题是我有其他语言环境,而在应用程序发布期间Lint给了我一个错误:
错误:(3)错误:“gcm_defaultSenderId”未翻译成“fr”(法语)[缺少翻译]
因为它是自动生成的,所以我无法设置
translable=false
。我应该如何解决这个问题?您可能会有另一段自动生成的代码,如下所示:
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
从谷歌云控制台获取一个有效的发件人id,然后您可以从上述代码中删除R.string.gcm_defaultSenderId,并从资源文件中删除gcm_defaultSenderId。我假设您使用的是Android Studio Android Studio 1.4也有同样的问题 我尝试的第一件事是将“文件-设置-编辑器-检查-Android Lint-不完全翻译”严重性设置编辑为“错误” 那没有帮助!我仍然无法构建一个发布APK 我最终“翻译”了XML,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="gcm_defaultSenderId"><YOUR_SENDERID></string>
</resources>
在那之后,我能够构建发布版自从上次更新Android Studio(1.5)以来,我也遇到了这个问题。我通过将Google服务依赖项更新到 确实如此, 这个问题应该通过8.3.0 Google Play服务和1.5.0-beta2依赖项解决 希望这有帮助!:)
编辑集成:实际上,
gcm\u defaultSenderId
字符串现在已正确生成(使用translateable=“false”
属性),google\u app\u id
和ga\u trackingID
字符串则不正确
对于那些仍然存在问题的人,我得出的结论是,我们必须等待谷歌的人来解决这个问题,同时通过添加到app-levelbuild.gradle
文件来忽略错误
...
android {
lintOptions {
abortOnError false
}
}
...
如果您想要/需要升级到更新版本的:
- lint(带内置lint的androidstudio)
- 构建工具
- 编译DK版本
- 渐变插件
- 格拉德尔
- 谷歌服务(插件)
- 谷歌服务DeDeDendendencies(例如,play services gcm)
- (不幸的是)其他依赖项如果是过渡依赖于谷歌服务的
- androidstudio 1.5
- 构建工具23.0.2
- 编译DK23版
- gradle插件1.5.0
- 梯度2.8
- 谷歌服务插件1.5.0
- 谷歌服务依赖8.3.0
- 幸运的是,没有其他外部GS依赖项(显然所有内部模块都需要使用相同的版本)
lint.xml
文件,并添加要忽略的缺失翻译:
<lint>
<issue id="MissingTranslation">
<ignore regexp="ga_trackingId"/>
<ignore regexp="gcm_defaultSenderId"/>
<ignore regexp="google_app_id"/>
</issue>
</lint>
lint现在将忽略这些属性-您可以配置要忽略的属性,并且您不必等待google服务团队更新他们没有想到的属性
Lint-ing仍将捕获所有其他错误,因此您仍然可以享受其他功能。对此存在一个问题:。请将其设置为星形,以便引起注意并修复。问题是如果您不介意使用alpha通道。我可以用
2.0.0-alpha6
确认WFM工作正常。对我来说,这似乎是最正确的解决办法。直截了当地说,而不是像这里的其他一些答案那样的胡扯。提示:将lint.xml放在app/文件夹中。@Thanos请确保lint.xml文件位于正确的位置-我每周从这个配置部署几次,在Android中没有任何其他特殊处理Studio@MatsLindh我试了几次,但都没用。我发现唯一适合我的解决方案是禁用编译。示例lintOptions{disable'missingtransation'}
感谢您花时间和精力帮助我。@Thanos有关如何手动运行lint的示例,请参阅-这可能有助于找出它失败的原因。我强烈建议保留警告,因为它会在打包时捕获错误。@MatsLindh我会看一看,再次感谢您提供有关如何继续的链接和信息。