根据Google Play服务,有哪些建议的做法可以保持Android应用最广泛的向后兼容性?
使用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
Admob,我对Google Play服务的依赖,似乎正常工作。如果您按照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版本进行编译,并假设事物与设备上运行的较新版本正确向后兼容?
答案 0 :(得分:3)
我是可选择依赖Google Play服务的SDK的开发者,正如您所提到的,我的方法是针对包含我需要的API的最旧版本的Google Play服务进行编译,例如下游客户不会遇到这样的问题。
如果您需要的API在v4中可用,则可以安全地针对com.google.android.gms:play-services:4.+
进行编译,并按照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服务版本的应用程序在所有设备上都可以下载广泛或更糟糕的内容,在这种情况下,用户将获得对话而无法升级,正如您在开发过程中看到的那样。