2013-12-12 33 views
7

在阅读Google Play Services setup documentation时,听起来Google Play Services for Froyo Rev. 12应该与Android 2.3及更高版本兼容。Google Play Services for Froyo是否与Android 2.3及更高版本兼容?

但是,我在我的GPSTest app on Github中执行此操作时遇到了问题,其中包括Google Play Services for Froyo。

如果我尝试使用谷歌播放服务的Froyo版本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'). 

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

如果我从清单中删除这个元素,它通过Eclipse构建和调试应用程序时正常工作(正如我所期望的)。但是,当我导出APK时,请在设备上安装(Samsung Galaxy S3 Android 4.3,Google Play Services 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版本12,和这里的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> 

有没有一种方法,我可以部署单个APK到Google Play使用Google Play Services for Android 2.2及更高版本的Froyo Rev. 12?

如果我想保留对Froyo的支持,或者是否需要将两个APK部署到Google Play(一个使用Google Play for Froyo for Android 2.2,另一个使用Google Play Services for Android 2.3或更高版本)?

有没有人在Android 2.3及更高版本上成功部署Google Play Services for Froyo?

+1

我假设你已经正确引用了库。 “整数”应该存在于SDK文件夹中的“sdk \ extras \ google \ google_play_services \ libproject \ google-play-services_lib \ res \ values.xml”文件中。几周前我遇到了类似的错误。我正在使用Android Studio。在我的gradle构建文件中,我指定了“compile”com.google.android.gms:play-services:4.0。+“。我所做的就是做一个“干净的”,然后我点击“与Gradle文件同步项目”和中提琴!问题消失了。 – alpinescrambler

+0

@alpinescrambler - 用于Google Play服务(Gingerbread +),而不是Google Play Services for Froyo(仍然是Google Play服务的3.2.65版)。 – ianhanniballake

+0

Right,@alpinescrambler,在Google Play Services for Froyo包(sdk \ extras \ google \ google_play_services_froyo)中,该整数不存在。 –

回答

5

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

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

地图应用更新昨天开始(12/12/2013)开始推出,我的手机今天安装了它(新版本是v7.5.0)。在此之后,启动时崩溃的问题神奇地消失了。我甚至回去测试了Dropbox的一个旧版本,肯定会崩溃(只是为了防止Eclipse中的其他更改修复某些内容),现在也可以使用。 (请注意,如果您支持API级别8 - Android 2.2,则应该只使用Google Play Services for Froyo。如果您的minSdkVersion> = 9,那么您应该使用the most recent version of Google Play Services,因为没有新功能加入谷歌游戏服务升级Froyo)

+1

对于新读者来说,'Google Play for Froyo'是兼容的,但它不会获得任何新功能。只有当你的minSDK不是9或以上时才使用它。 – gian1200

+1

@ gian1200感谢您提到这一点,我会在上面添加一个注释来说明这一点。 –

+0

我的SDK管理器不显示“Google Play Services for Froyo”库 –

1

这是一个奇怪的错误,我解决了这个方式这个问题 - 只是改变机器人:值=“@整数/ GOOGLE_PLAY_SERVICES_VERSION”到3265130.

+0

在清单中包含以下内容并不能解决问题 - 同样的crash和stacktrace:

+0

@ SeanBarbeau好的,打开你的google.play.services库清单并检查版本代码。此版本应位于“android:value =” – whizzzkey

+1

在Google Play for Froyo包(sdk \ extras \ google \ google_play_services_froyo)中,该整数不存在。 –

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吗?

+0

我使用标准的“绿色播放按钮”启动在Eclipse中为Android应用程序运行配置。它使用Eclipse的默认调试密钥。是的,我已经尝试多次卸载/重新安装调试和导出APK(使用Eclipse“导出...”功能)。我正在装载导出的APK(从Dropbox下载) - 我没有将其上传到Google Play。是的,绝对是正确的APK - 我已经出口好几次了。您是否已成功在较新设备上为Froyo部署Google Play服务? –

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/

0

对于我来说,java.lang.IllegalStateException似乎发生,因为我以前曾联系到全Google Play服务(版本22),然后更改为用于Froyo的Google Play服务。版本22中一定还有剩余的版本,并且进行彻底清理并重建可以解决问题。

相关问题