java - 缺少 Google Play 游戏服务类

标签 java android android-studio android-gradle-plugin

我这几天一直在努力解决一个问题。我最近从 Eclipse 切换到 Android Studio,在尝试使用 Google 的游戏服务(排行榜和成就)设置我的新项目后,我注意到一堆类似乎丢失了,而其他类却完好无损。我可以登录谷歌服务,我可以显示广告(另一个包,但它仍然工作得很好),其他一切似乎都工作正常;除了加载 Intent 。 SDK 管理器似乎忘记将“com.google.android.gms.games.ui...”包包含到我的 SDK 中。这意味着我无法加载任何 Intent (无法显示排行榜或成就。我的应用程序不会崩溃,但我确实在 LogCat 中收到一条错误消息和一堆“无法找到类/无法加载方法”警告。

这是我在尝试对 Google 游戏服务的游戏设置 Intent 调用 startActivityForResult(....) 时的日志,请记住排行榜和成就也会弹出相同的错误:

08-06 22:59:07.937 430-1614/? I/ActivityManager: START {act=com.google.android.gms.games.SHOW_SETTINGS dat=version:9452000 flg=0x4000000 pkg=com.google.android.play.games cmp=com.google.android.play.games/com.google.android.gms.games.ui.client.main.ClientSettingsActivity (has extras) u=0} from pid 10924 08-06 22:59:07.997 430-1615/? I/ActivityManager: Start proc com.google.android.play.games.ui for activity com.google.android.play.games/com.google.android.gms.games.ui.client.main.ClientSettingsActivity: pid=11180 uid=10086 gids={1028} E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.google.android.gms.games.ui.client.ClientFragmentActivity.instantiateGoogleApiClient** 08-06 22:59:08.317 11180-11180/? W/dalvikvm: VFY: unable to resolve new-instance 27 (Landroid/app/ActivityManager$TaskDescription;) in Lcom/google/android/gms/games/ui/client/ClientFragmentActivity; 08-06 22:59:08.327 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x22 at 0x0084 08-06 22:59:08.327 11180-11180/? D/dalvikvm: DexOpt: unable to opt direct call 0x007b at 0x86 in Lcom/google/android/gms/games/ui/client/ClientFragmentActivity;.instantiateGoogleApiClient 08-06 22:59:08.347 11180-11180/? W/dalvikvm: Unable to resolve superclass of Lcom/google/android/gms/games/ui/GamesFragmentActivity$1; (55) 08-06 22:59:08.347 11180-11180/? W/dalvikvm: Link of class 'Lcom/google/android/gms/games/ui/GamesFragmentActivity$1;' failed 08-06 22:59:08.347 11180-11180/? E/dalvikvm: Could not find class 'com.google.android.gms.games.ui.GamesFragmentActivity$1', referenced from method com.google.android.gms.games.ui.GamesFragmentActivity.onCreate 08-06 22:59:08.347 11180-11180/? W/dalvikvm: VFY: unable to resolve new-instance 4724 (Lcom/google/android/gms/games/ui/GamesFragmentActivity$1;) in Lcom/google/android/gms/games/ui/GamesFragmentActivity; 08-06 22:59:08.347 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x22 at 0x0086 08-06 22:59:08.347 11180-11180/? I/dalvikvm: Could not find method android.view.Window.setStatusBarColor, referenced from method com.google.android.gms.games.ui.GamesFragmentActivity.updateStatusBar 08-06 22:59:08.347 11180-11180/? W/dalvikvm: VFY: unable to resolve virtual method 8409: Landroid/view/Window;.setStatusBarColor (I)V 08-06 22:59:08.347 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x6e at 0x0030 08-06 22:59:08.347 11180-11180/? I/dalvikvm: Could not find method android.view.Window.setStatusBarColor, referenced from method com.google.android.gms.games.ui.GamesFragmentActivity.updateStatusBar 08-06 22:59:08.347 11180-11180/? W/dalvikvm: VFY: unable to resolve virtual method 8409: Landroid/view/Window;.setStatusBarColor (I)V 08-06 22:59:08.347 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x6e at 0x0034 08-06 22:59:08.347 11180-11180/? E/dalvikvm: Could not find class 'android.app.ActivityManager$TaskDescription', referenced from method com.google.android.gms.games.ui.GamesFragmentActivity.updateTaskDescription 08-06 22:59:08.347 11180-11180/? W/dalvikvm: VFY: unable to resolve new-instance 27 (Landroid/app/ActivityManager$TaskDescription;) in Lcom/google/android/gms/games/ui/GamesFragmentActivity; 08-06 22:59:08.347 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x22 at 0x0040 08-06 22:59:08.347 11180-11180/? W/dalvikvm: Unable to resolve superclass of Lcom/google/android/gms/games/ui/GamesFragmentActivity$1; (55) 08-06 22:59:08.347 11180-11180/? W/dalvikvm: Link of class 'Lcom/google/android/gms/games/ui/GamesFragmentActivity$1;' failed 08-06 22:59:08.347 11180-11180/? D/dalvikvm: DexOpt: unable to opt direct call 0x6ab7 at 0x88 in Lcom/google/android/gms/games/ui/GamesFragmentActivity;.onCreate 08-06 22:59:08.347 11180-11180/? D/dalvikvm: DexOpt: unable to opt direct call 0x007c at 0x4f in Lcom/google/android/gms/games/ui/GamesFragmentActivity;.updateTaskDescription 08-06 22:59:08.357 11180-11180/? I/dalvikvm: Could not find method android.app.Activity.finishAfterTransition, referenced from method android.support.v4.app.FragmentActivity.onBackPressed 08-06 22:59:08.357 11180-11180/? W/dalvikvm: VFY: unable to resolve virtual method 88: Landroid/app/Activity;.finishAfterTransition ()V 08-06 22:59:08.357 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x6e at 0x0012 08-06 22:59:08.377 963-1448/? D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 0ms 08-06 22:59:08.557 963-1448/? D/dalvikvm: GC_EXPLICIT freed 564K, 14% free 9888K/11399K, paused 4ms+6ms, total 179ms 08-06 22:59:08.577 11180-11180/? W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;) 08-06 22:59:08.577 11180-11180/? I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onSearchRequested 08-06 22:59:08.577 11180-11180/? W/dalvikvm: VFY: unable to resolve interface method 8386: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z 08-06 22:59:08.577 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 08-06 22:59:08.577 11180-11180/? I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.internal.view.WindowCallbackWrapper.onWindowStartingActionMode 08-06 22:59:08.577 11180-11180/? W/dalvikvm: VFY: unable to resolve interface method 8390: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; 08-06 22:59:08.577 11180-11180/? D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 08-06 22:59:08.597 892-894/? D/dalvikvm: GC_CONCURRENT freed 3308K, 27% free 14043K/19015K, paused 12ms+14ms, total 74ms 08-06 22:59:08.627 11180-11183/? D/dalvikvm: GC_CONCURRENT freed 230K, 5% E/AndroidUtils: getCallingContext(): couldn't find calling package name from com.google.android.gms.games.ui.client.main.ClientSettingsActivity@41d70410 08-06 22:59:08.867 11180-11180/? E/ClientUiFragAct: Client UI activities must be started with startActivityForResult 08-06 22:59:08.867 11180-11180/? E/GamesFragmentActivity: Unable to instantiate GoogleApiClient; bailing out...

请记住,我尝试过使用不同的 sdk 目标(17、21、23、24),我尝试过混合和匹配不同版本的库,我尝试过添加所有服务并仅使用最少的服务(游戏、附加、广告)。我已经尝试了我能想到的一切,但我对 gradle 还很陌生,我想我只是忽略了一些相对简单的东西。我只是无法使用我的日志和我能想到的各种单词变体在谷歌上找到任何提示来找到线索。如有任何帮助,我们将不胜感激。

更新:

这是我调用 showleaderboards 方法的地方(在为游戏循环创建的更新线程中):

@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {
    if (pSceneTouchEvent.isActionDown()) {

        GSGoogleServices.getInstance().showLeaderboards();

        return true;
    }

    return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
}

这是 showLeaderboards 方法本身,它启动新 Activity ,导致 logcat 中出现错误:

public void showLeaderboards(){
    if(mHelper.isSignedIn()){
        mActivity.startActivityForResult(Games.getSettingsIntent(getApiClient()), RC_UNUSED);
    } else {
        mHelper.beginUserInitiatedSignIn();
    }
}

最佳答案

解决办法已经找到了。我将 startropicityforresult 中的 RC_UNUSED 设置为 -1,这将在没有排行榜 Activity 类上下文的情况下启动新 Activity 。将其设置为非负值解决了问题

关于java - 缺少 Google Play 游戏服务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38811151/

相关文章:

Android Studio 拒绝接受已安装 Google Repository

Java 一个函数,支持多个查询

java - 我需要关闭连接吗

java - 评估值为另一个占位符的 FreeMarker 模板

android - 为不同的 Activity 实现 admob

Android.mk 相对路径还是绝对路径?

android - 自定义资源文件夹名称(例如 res\drawable-gamepad)

android - 无法在小米 Mi 4c 上从 Android Studio 运行应用程序(认为设备可能是原因)

java - 在流中创建新对象并使用 setter

android - ViewPager android 中 ImageView 下方不需要的空白