无法找到com.google.android.gms.common.GooglePlayServicesUtil方法

时间:2014-07-14 08:40:41

标签: java android eclipse

我知道这个问题已经有了很多答案和解决方法......但是没有任何对我有用......

我正在尝试将推送通知添加到我的Android应用中。为此,我使用“google-play-services_lib”和“google-play-services.jar”。我按照Google Setting Up Google Play Services为Eclipse提供的教程。

我做了什么:

  • 使用Eclipse中的SDK Manager安装Google Play服务
  • 将现有的Android代码导入Workspace(/ android-sdks / extras / google / google_play_services / libproject / google-play-services_lib),并选中“将项目复制到工作区”...基于google建议

      

    注意:您应该引用复制到开发工作区的库的副本 - 您不应该直接从Android SDK目录引用该库。

  • 将库引用到我的项目中(右键单击 - >属性 - > Android - >库 - >添加 - > google-play-services_lib)

  • 在我的projetc libs文件夹中添加了google-play-services.jar的副本。

  • 将jar文件添加到我的构建路径中......我必须取消选中Order and export选项卡下的jar文件以避免以下错误:

      

    [2014-07-14 09:41:56 - Dex Loader]无法执行dex:多个dex文件定义Lcom / google / android / gms / internal / a;
      [2014-07-14 09:41:56]转换为Dalvik格式失败:无法执行dex:多个dex文件定义Lcom / google / android / gms / internal / a;

  • 在我的清单文件中添加了以下内容:

    <meta-data android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
    
  • 创建专业保护例外

    -keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
    }
    
    -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
     public static final *** NULL;
     }
    
     -keepnames @com.google.android.gms.common.annotation.KeepName class *
     -keepclassmembernames class * {
     @com.google.android.gms.common.annotation.KeepName *;
     }
    
     -keepnames class * implements android.os.Parcelable {
     public static final ** CREATOR;
     }
    

当我尝试简单地检查设备是否具有以下

的Google Play服务APK时
    GooglePlayServicesUtil.isGooglePlayServicesAvailable(this)

我总是看到这个错误:

Could not find method com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable, referenced from method com.example.testpush.MainActivity.onCreate

并且:

07-14 10:34:53.631: E/AndroidRuntime(421): FATAL EXCEPTION: main
07-14 10:34:53.631: E/AndroidRuntime(421): java.lang.NoClassDefFoundError: com.google.android.gms.common.GooglePlayServicesUtil
07-14 10:34:53.631: E/AndroidRuntime(421):  at com.example.testpush.MainActivity.onCreate(MainActivity.java:16)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.os.Looper.loop(Looper.java:123)
07-14 10:34:53.631: E/AndroidRuntime(421):  at android.app.ActivityThread.main(ActivityThread.java:3683)
07-14 10:34:53.631: E/AndroidRuntime(421):  at java.lang.reflect.Method.invokeNative(Native Method)
07-14 10:34:53.631: E/AndroidRuntime(421):  at java.lang.reflect.Method.invoke(Method.java:507)
07-14 10:34:53.631: E/AndroidRuntime(421):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-14 10:34:53.631: E/AndroidRuntime(421):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-14 10:34:53.631: E/AndroidRuntime(421):  at dalvik.system.NativeStart.main(Native Method)

我在这里错过了什么吗???? 谢谢你的任何想法。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。开始清理eclipse工作区(使用ADT 23.0.3.1327240)。通过SDK Manager下载最新的Play服务库(v 5.0.89-000)。遵循所有正确的instructions,当应用程序启动时,仍然会出现链接器问题。

我的解决方案是使用较旧版本的Play Serices库(幸运的是,在我的一个旧项目中仍然使用了v4.4.52-000. Download mine here。)在导入之后执行刷新和清理构建旧版本似乎现在解决了这个问题。

希望有人会对logged bug发表评论并给我们一个真正的解决方案。