由于GCM无法生成APK发布SenderId Android
我在我的应用中实施了GCM(Google Cloud Messaging)。谷歌Play服务库已经自动生成了values.xml
在我senderId
是:由于GCM无法生成APK发布SenderId Android
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="gcm_defaultSenderId">123</string>
</resources>
的问题是,我还有其他的语言环境和应用程序发行期间Lint是给我的错误: Error:(3) Error: "gcm_defaultSenderId" is not translated in "fr" (French) [MissingTranslation]
因为它是自动生成的,我不能设置translable = false
。我应该如何解决这个问题?
我假设你正在使用Android Studio。
有与Android Studio 1.4完全相同的问题。
我尝试的第一件事是编辑“文件 - 设置 - 编辑器 - 检查 - Android Lint - 不完整翻译”严重性设置为其他错误。
那样做不是帮助!我仍然无法构建释放APK。
我结束了“翻译”的XML如下:
- 文件夹在
... /安卓/ RES创建一个新的语言文件夹值德(替换用去你的语言码)。
在语言文件夹中创建一个名为google-services.xml的文件。
-
插入XML文件:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="gcm_defaultSenderId"><YOUR_SENDERID></string> </resources>
之后,我是能够建立的释放。
你可能有这样的自动生成的代码,另一位:
String token = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
获得来自谷歌云控制台有效的发件人ID,那么你可以从上面的代码,也是去除R.string.gcm_defaultSenderId资源文件中的gcm_defaultSenderId。
自从Android Studio(1.5)的最新更新以来,我也遇到过这个问题。我通过将Google服务依赖项更新为latest version来解决此问题。
根据这一link,的确,
这个问题应该固定8.3.0谷歌播放服务和1.5.0-β2依赖。
希望这会有所帮助!:)
编辑集成:实际上,虽然gcm_defaultSenderId
字符串现在可以正确生成(与translatable="false"
属性),google_app_id
和ga_trackingID
字符串,例如,都没有。
对于那些仍然有问题,我来到了,我们必须等待谷歌的家伙来解决这个问题,并通过向应用级build.gradle
文件
...
android {
lintOptions {
abortOnError false
}
}
...
如果忽略其间错误的结论你想/需要升级到较新的版本:
- 皮棉(androidstudio与内置的皮棉)
- 构建工具
- compileSdkVersion
- 插件的gradle
- gradle这个
- 谷歌的服务(插件)
- 谷歌服务dedendencies(例如发挥服务-GCM)
- (可惜的)其他相关性,如果是transitivelly依赖于谷歌的服务
你需要wiselly选择所有这些部分的版本一起。因为这些都需要一起兼容。不幸的是,没有兼容性表格(我发现的只有一年多了,所以我没有链接到这里,如果有人知道,请分享链接)。
因此,解决方案是调查哪个部分的哪个版本阻止别的。这可能是噩梦,所以很多建议是恢复到最后已知的功能配置。但迟早我们会强制升级。
我检查了每个部分的主页以查找任何版本信息,但最后我仍然通过测试 - 尝试方法解决它。
这里是什么对我来说是功能:
- androidstudio 1.5
- 构建工具23.0.2
- compileSdkVersion 23
- gradle这个插件1.5.0
- gradle这个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>
这将现在皮棉被忽略 - 你可以配置要忽略的属性,你将不必等待来自谷歌的服务团队的更新特性,他们都没有想到的。
落针仍会捕获所有其他错误,所以您仍然可以享受其他功能。
没有为我工作 – crubio
作品描述完美。这似乎是对我来说最正确的解决方案。直截了当,而不是像其他一些答案一样的黑客攻击。提示:将lint.xml放入应用程序/文件夹中。 – nilsmagnus
此外,它并没有为我工作:( – Thanos
这里提出了一个问题:https://code.google.com/p/analytics-issues/issues/detail?id=733。请明星,这是注意到和修复。 – Oliv
你是英雄安德烈;非常感谢你做的这些! – Eenvincible
如果您不介意使用Alpha通道,则问题是[自2.0.0-alpha3'](https://code.google.com/p/android/issues/detail?id=195824)[固定]。我可以用'2.0.0-alpha6'确认它WFM – yuval