在阅读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服务?
答案 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)
创建一个整数资源似乎可以解决问题。
但我最终碰到了对方。
没有包“ ads.AdActivity ”。 甚至添加了froyo版本:
compile 'com.google.android.gms:play-services:3.2.65'
文档中没有提到froyo版本:
答案 4 :(得分:0)
对我来说,java.lang.IllegalStateException
似乎是因为我之前已经链接到完整的Google Play服务(第22版),然后才更改为Froyo的Google Play服务。必须在构建中留下一些剩余的版本22并进行完全清理并重建修复了问题。