由于GCM SenderId Android,无法生成APK发布

时间:2015-09-04 16:43:41

标签: android google-cloud-messaging lint

我已在我的应用中实施了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。我该如何解决这个问题?

5 个答案:

答案 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如下:

  1. 在文件夹 ... / android / res 中创建一个新的语言文件夹 values-de (用您的语言代码替换de)。

  2. 在语言文件夹中创建名为google-services.xml的文件。

  3. 插入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_idga_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)

如果您想/需要升级到更新版本:

  • lint(带有内置lint的androidstudio)
  • 构建工具
  • compileSdkVersion
  • gradle plugin
  • gradle这个
  • google-services(插件)
  • google-services dedendencies(例如play-services-gcm)
  • (不幸)其他依赖关系如果过渡依赖于google-services

你需要一起选择所有这些部分的版本。因为这些都需要兼容。不幸的是,没有兼容性表(我发现的只有一年多,所以我不在这里链接。如果有人知道请分享链接)。

因此,解决方案是调查哪个部分阻止其他任何内容。这可能是噩梦,所以很多建议是恢复到最后一个已知的功能配置。但迟早我们会强行升级。

我检查了每个部分的主页以查找任何版本信息,但最后我仍然通过test-and-try方法解决它。

以下是对我有用的功能:

  • androidstudio 1.5
  • 构建工具23.0.2
  • compileSdkVersion 23
  • gradle plugin 1.5.0
  • gradle 2.8
  • google services plugin 1.5.0
  • google services dependencies 8.3.0
  • 幸运的是,没有其他外部GS依赖项(显然所有内部模块都需要使用相同版本)