我已在我的应用中实施了GCM(Google Cloud Messaging)。 Google Play服务库已自动生成values.xml
,其中senderId
为:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="gcm_defaultSenderId">123</string>
</resources>
问题是我有其他语言环境,App Release期间的Lint给了我一个错误:
Error:(3) Error: "gcm_defaultSenderId" is not translated in "fr" (French) [MissingTranslation]
因为它是自动生成的,所以我无法设置translable = false
。我该如何解决这个问题?
答案 0 :(得分:15)
在项目应用程序根目录中(在app /下)添加lint.xml
文件,并添加要忽略的缺失翻译:
<lint>
<issue id="MissingTranslation">
<ignore regexp="ga_trackingId"/>
<ignore regexp="gcm_defaultSenderId"/>
<ignore regexp="google_app_id"/>
</issue>
</lint>
lint现在会忽略这些内容 - 您可以配置要忽略的属性,并且您不必等待Google服务团队针对他们未曾想到的属性进行更新。< / p>
Lint-ing仍会捕获所有其他错误,因此您仍然可以享受其他功能。
答案 1 :(得分:6)
我假设您使用的是Android Studio。
Android Studio 1.4存在完全相同的问题。
我尝试的第一件事就是编辑&#34;文件 - 设置 - 编辑器 - 检查 - Android Lint - 不完整的翻译&#34;严重性设置为其他内容&#39;错误&#39;。
不帮助!我仍然无法建立发布APK。
我最终翻译了#39; XML如下:
在文件夹 ... / android / res 中创建一个新的语言文件夹 values-de (用您的语言代码替换de)。
在语言文件夹中创建名为google-services.xml的文件。
插入xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="gcm_defaultSenderId"><YOUR_SENDERID></string>
</resources>
之后我就能够构建发布版本。
答案 2 :(得分:3)
自上次更新Android Studio(1.5)以来,我也遇到了这个问题。我通过将Google服务依赖项更新为latest version来解决此问题。
根据link确实,
这个问题应该通过8.3.0 Google Play服务和1.5.0-beta2依赖来解决。
希望这有帮助! :)
编辑整合:实际上,现在gcm_defaultSenderId
字符串已正确生成(包含translatable="false"
属性),google_app_id
和ga_trackingID
字符串,例如,不是。
对于那些仍有问题的人,我得出的结论是,我们必须等待Google员工解决此问题并在此期间通过添加到应用级别build.gradle
文件来忽略错误
...
android {
lintOptions {
abortOnError false
}
}
...
答案 3 :(得分:0)
你可能会有另外一些自动生成的代码:
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
从Google云端控制台获取有效的发件人ID,然后您可以从上面的代码中删除R.string.gcm_defaultSenderId,也可以从资源文件中删除gcm_defaultSenderId。
答案 4 :(得分:0)
如果您想/需要升级到更新版本:
你需要一起选择所有这些部分的版本。因为这些都需要兼容。不幸的是,没有兼容性表(我发现的只有一年多,所以我不在这里链接。如果有人知道请分享链接)。
因此,解决方案是调查哪个部分阻止其他任何内容。这可能是噩梦,所以很多建议是恢复到最后一个已知的功能配置。但迟早我们会强行升级。
我检查了每个部分的主页以查找任何版本信息,但最后我仍然通过test-and-try方法解决它。
以下是对我有用的功能: