2014-09-12 64 views
3

根据Google Play服务的不同,推荐的做法是保持Android应用的最大后向兼容性?最大限度地提高Google Play服务的向后兼容性

使用过Android Studio开发人员实现文档表明对编译V5 + compile 'com.google.android.gms:play-services:5.+'与我使用似乎最终使用的版本5208000.可用下载在这一点,我得到的错误和警告,同时测试应用程序返回:

W/GooglePlayServicesUtil Google Play services out of date. Requires 5208000 but found 5089036 
E/GooglePlayServicesUtil GooglePlayServices not available due to error 2

但是,我对Google Play服务的依赖Admob似乎正常工作。如果您按照Google的建议致电isGooglePlayServicesAvailable()GooglePlayServicesUtil.getErrorDialog(),系统会通知用户应用程序需要升级才能运行并发送到没有可用更新的商店。

在其他地方维护向后兼容性意味着编译支持您需要的功能的最早的API版本。所以,我想与V4 compile 'com.google.android.gms:play-services:4.+'产生的另错误:

E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

搜索周围的结果表明是虚假报告,可以忽略不计。

如果我针对更新的API版本进行编译,并且它不存在于设备上,那么情况会起作用吗?或者我必须哄用户升级?针对较旧的API版本进行编译并假定事情与设备上运行的较新版本正确向后兼容是否更好?

回答

3

我是一个可选择依赖于Google Play服务的SDK的开发人员,正如您所提到的,我的方法是针对包含我需要的API的最早版本的Google Play服务进行编译,例如下游客户不会遇到类似这样的问题。

如果您需要的API在v4中可用,则可以安全地根据进行编译,并遵循Google的指示向用户显示升级提示。用户只会看到升级对话框,如果他们正在运行旧版本的v4,或者他们仍然在v3上。无论哪种情况,升级对话框都应该将他们正确引导至Play商店,在那里确实会有可用的升级。

如果您需要的API仅在v5中可用,请勿使用通配符版本(即5.+)。您应该编译一个可能很普遍的旧版本,如com.google.android.gms:play-services:5.0.89。使用通配符意味着您将针对您安装在Android SDK管理器中的最新版本的Google Play服务进行编译,无论您正在编译的是哪种计算机/环境,对于我而言,只是感觉错误 - 我不'不管是Google建立图书馆,我都很想知道我在编辑我的应用程序。此外,如果您始终使SDK管理器保持更新,那么无论何时编译您的应用的发布版本,然后将其推送到Google Play,您都可能只是针对Play服务的一个版本发布了一个应用并不普遍,甚至更糟糕 - 甚至还没有可用于每个设备上的下载,在这种情况下,用户将获得对话并且无法升级,就像您在开发过程中看到的一样。

+0

感谢您的评论,他们重申我的理解。令人困惑的部分是Google文档为什么建议做一些不是最佳实践的事情,而且实际上存在问题。 – ertyu 2014-09-12 18:37:14