Google Play Services for Froyo是否与Android 2.3及更高版本兼容?
在阅读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?
答案是肯定的,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)
对于新读者来说,'Google Play for Froyo'是兼容的,但它不会获得任何新功能。只有当你的minSDK不是9或以上时才使用它。 – gian1200
@ gian1200感谢您提到这一点,我会在上面添加一个注释来说明这一点。 –
我的SDK管理器不显示“Google Play Services for Froyo”库 –
这是一个奇怪的错误,我解决了这个方式这个问题 - 只是改变机器人:值=“@整数/ GOOGLE_PLAY_SERVICES_VERSION”到3265130.
在清单中包含以下内容并不能解决问题 - 同样的crash和stacktrace:
@ SeanBarbeau好的,打开你的google.play.services库清单并检查版本代码。此版本应位于“android:value =” – whizzzkey
在Google Play for Froyo包(sdk \ extras \ google \ google_play_services_froyo)中,该整数不存在。 –
你不需要
<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吗?
我使用标准的“绿色播放按钮”启动在Eclipse中为Android应用程序运行配置。它使用Eclipse的默认调试密钥。是的,我已经尝试多次卸载/重新安装调试和导出APK(使用Eclipse“导出...”功能)。我正在装载导出的APK(从Dropbox下载) - 我没有将其上传到Google Play。是的,绝对是正确的APK - 我已经出口好几次了。您是否已成功在较新设备上为Froyo部署Google Play服务? –
创建一个整数的资源似乎解决了问题。
但我最终碰到了对方。
没有包 “ads.AdActivity”。 即使添加了升级Froyo版本:
compile 'com.google.android.gms:play-services:3.2.65'
文档只字未提的Froyo版本:
对于我来说,java.lang.IllegalStateException
似乎发生,因为我以前曾联系到全Google Play服务(版本22),然后更改为用于Froyo的Google Play服务。版本22中一定还有剩余的版本,并且进行彻底清理并重建可以解决问题。
我假设你已经正确引用了库。 “整数”应该存在于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
@alpinescrambler - 用于Google Play服务(Gingerbread +),而不是Google Play Services for Froyo(仍然是Google Play服务的3.2.65版)。 – ianhanniballake
Right,@alpinescrambler,在Google Play Services for Froyo包(sdk \ extras \ google \ google_play_services_froyo)中,该整数不存在。 –