Froyo的Google Play服务是否与Android 2.3及更高版本兼容?

时间:2013-12-12 02:46:47

标签: android eclipse google-play-services

在阅读Google Play Services setup documentation时,听起来像Froyo Rev. 12的Google Play服务应该与Android 2.3及以上版本兼容。

但是,我在我的GPSTest app on Github中遇到了一些问题,目前其中包括Froyo的Google Play服务。

如果我尝试使用Google Play服务为Froyo Rev. 12构建项目,其元素为:

<meta-data android:name="com.google.android.gms.version"
       android:value="@integer/google_play_services_version" />

...包含在AndroidManifest.xml中,我收到了构建错误:

Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

这是预期的(根据我目前的理解),因为Froyo项目的Google Play服务中不存在此整数(sdk \ extras \ google \ google_play_services_froyo \ res \ values)。

如果我从清单中删除了这个元素,那么在通过Eclipse构建和调试应用程序时它会正常工作(正如我所料)。但是,当我导出APK时,安装在设备上(三星Galaxy S3 Android 4.3,谷歌播放服务v4.0.34 - 从Dropbox下载导出的APK),并运行,我在启动时收到以下错误,应用程序崩溃:

java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml
does not have the right value.  Expected 4030500 but found 0.  You must have the 
following declaration within the <application> element:     
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
        at com.google.android.gms.common.b.a(Unknown Source)
        at com.google.android.gms.maps.a.bn.a(Unknown Source)
        at com.google.android.gms.maps.m.g(Unknown Source)
        at com.google.android.gms.maps.m.a(Unknown Source)
        at com.google.android.gms.a.b.a(Unknown Source)
        at com.google.android.gms.a.b.a(Unknown Source)
        at com.google.android.gms.maps.SupportMapFragment.onCreate(Unknown Source)
        at android.support.v4.app.Fragment.performCreate(Unknown Source)
        at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
        at android.support.v4.app.FragmentManagerImpl.moveToState(Unknown Source)
        at android.support.v4.app.BackStackRecord.run(Unknown Source)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(Unknown Source)
        at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(Unknown Source)
        at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(Unknown Source)
        at android.support.v4.view.ViewPager.populate(Unknown Source)
        at android.support.v4.view.ViewPager.populate(Unknown Source)
        at android.support.v4.view.ViewPager.onMeasure(Unknown Source)
        at android.view.View.measure(View.java:16848)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at android.view.View.measure(View.java:16848)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302)
        at android.view.View.measure(View.java:16848)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2586)
        at android.view.View.measure(View.java:16848)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2189)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1352)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1535)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6364)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
        at android.view.Choreographer.doCallbacks(Choreographer.java:591)
        at android.view.Choreographer.doFrame(Choreographer.java:561)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5455)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
        at dalvik.system.NativeStart.main(Native Method)

我正在使用Froyo Rev. 12的Google Play服务,这里是带有完整版信息的AndroidManifest.xml:

<manifest android:versionName="3.2.65 (834000-30)" android:versionCode="3265130" 
    package="com.google.android.gms" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-sdk android:minSdkVersion="8"/>  </manifest>

我是否可以使用适用于Android 2.2及更高版本的Froyo Rev. 12的Google Play服务将单个APK部署到Google Play?

或者,如果我想保留对Froyo的支持,我是否需要将两个APK部署到Google Play(一个使用适用于Android 2.2的Froyo的Google Play服务,另一个使用适用于Android 2.3的Google Play服务)?

有没有人在Android 2.3及更高版本上成功部署过Froyo的Google Play服务?

5 个答案:

答案 0 :(得分:11)

你不需要

<meta-data android:name="com.google.android.gms.version"
   android:value="@integer/google_play_services_version" />

这是针对最新的Google Play服务修订版。如果您使用“Google Play Services for Froyo”库,那么您不需要它。

现在,谈论另一个问题。你究竟是如何“通过Eclipse调试应用程序”的?您使用的是调试密钥还是发布密钥?你是如何在设备内安装APK的?你试过卸载 - >安装吗?您是否使用ADB安装或上传了APK作为Alpha / Beta测试?你确定要安装正确的APK吗?

答案 1 :(得分:5)

答案是肯定的,Froyo的Google Play服务向前兼容Android 2.3及更高版本,并且不需要清单元素。

看起来这个问题实际上是Google地图应用中的一个错误。

地图应用更新昨天开始推出(2013年12月12日),我的手机今天安装了它(新版本是v7.5.0)。在此之后,启动时的崩溃问题神奇地消失了。我甚至回去测试了一个来自Dropbox的旧版APK,它确实崩溃了(以防我在Eclipse中的其他更改修复了一些东西),现在也可以。

(请注意,如果您支持API级别8 - Android 2.2,则应该只使用Froyo的Google Play服务。如果您的minSdkVersion是&gt; = 9,那么您应该使用{{3}因为没有新功能添加到Froyo的Google Play服务中。)

答案 2 :(得分:1)

这是一个奇怪的错误,我通过这种方式解决了这个问题 - 刚刚将android:value =“@ integer / google_play_services_version”改为3265130。

答案 3 :(得分:0)

enter image description here

创建一个整数资源似乎可以解决问题。

但我最终碰到了对方。

enter image description here

enter image description here

没有包“ ads.AdActivity ”。 甚至添加了froyo版本:

compile 'com.google.android.gms:play-services:3.2.65'

文档中没有提到froyo版本:

https://developers.google.com/mobile-ads-sdk/docs/

答案 4 :(得分:0)

对我来说,java.lang.IllegalStateException似乎是因为我之前已经链接到完整的Google Play服务(第22版),然后才更改为Froyo的Google Play服务。必须在构建中留下一些剩余的版本22并进行完全清理并重建修复了问题。