Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';由于GCM SenderId Android,无法生成APK版本_Android_Google Cloud Messaging_Lint - Fatal编程技术网

Can';由于GCM SenderId Android,无法生成APK版本

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

我已经在我的应用程序中实现了GCM(谷歌云消息)。Google Play Services库自动生成了
值.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,如下所示:

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

  • 在language文件夹中创建一个名为google-services.xml的文件

  • 在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-level
    build.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依赖项(显然所有内部模块都需要使用相同的版本)

    在项目应用程序根目录(app/)中添加一个
    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我会看一看,再次感谢您提供有关如何继续的链接和信息。