我几天来一直在努力解决这个问题。我最近从Eclipse切换到Android Studio,在尝试使用Google的游戏服务(排行榜和成就)设置我的新项目之后,我发现很多课程似乎都缺失了,而其他人完好无损。我可以登录谷歌服务,我可以展示广告(另一个包,但它完美无缺),其他一切似乎工作正常;除了加载意图。似乎SDK管理员忘记包含“com.google.android.gms.games.ui ....”#。打包到我的sdk。这意味着我无法加载任何意图(无法显示排行榜或成就。我的应用程序没有崩溃,但我收到错误消息,并且有一堆"无法找到课程/无法在LogCat中加载方法"警告。
这是我的日志,只要我尝试在Google游戏服务的游戏设置意图上调用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 (有额外的)u = 0}来自pid 10924 08-06 22:59:07.997 430-1615 /? I / ActivityManager:启动proc com.google.android.play.games.ui for 活动 com.google.android.play.games/com.google.android.gms.games.ui.client.main.ClientSettingsActivity: pid = 11180 uid = 10086 gids = {1028} E / dalvikvm:找不到 class' android.app.ActivityManager $ TaskDescription',引用自 方法 com.google.android.gms.games.ui.client.ClientFragmentActivity.instantiateGoogleApiClient ** 08-06 22:59:08.317 11180-11180 /? W / dalvikvm:VFY:无法解决 新实例27(Landroid / app / ActivityManager $ TaskDescription;)in LCOM /谷歌/安卓/ GMS /游戏/ UI /客户/ ClientFragmentActivity; 08-06 22:59:08.327 11180-11180 /? D / dalvikvm:VFY:替换操作码0x22 at 0x0084 08-06 22:59:08.327 11180-11180 /? D / dalvikvm:DexOpt:无法 选择直接调用0x007b在0x86 in LCOM /谷歌/安卓/ GMS /游戏/ UI /客户/ ClientFragmentActivity; .instantiateGoogleApiClient 08-06 22:59:08.347 11180-11180 /? W / dalvikvm:无法解决 超类 LCOM /谷歌/安卓/ GMS /游戏/ UI / GamesFragmentActivity $ 1; (55)08-06 22:59:08.347 11180-11180 /? W / dalvikvm:班级的链接 ' LCOM /谷歌/安卓/ GMS /游戏/ UI / GamesFragmentActivity $ 1;'失败 08-06 22:59:08.347 11180-11180 /? E / dalvikvm:找不到上课 ' com.google.android.gms.games.ui.GamesFragmentActivity $ 1',引用 从方法 com.google.android.gms.games.ui.GamesFragmentActivity.onCreate 08-06 22:59:08.347 11180-11180 /? W / dalvikvm:VFY:无法解决 新实例4724 (Lcom / google / android / gms / games / ui / GamesFragmentActivity $ 1;)in LCOM /谷歌/安卓/ GMS /游戏/ UI / GamesFragmentActivity; 08-06 22:59:08.347 11180-11180 /? D / dalvikvm:VFY:替换操作码0x22 at 0x0086 08-06 22:59:08.347 11180-11180 /?我/ dalvikvm:找不到 方法android.view.Window.setStatusBarColor,从方法引用 com.google.android.gms.games.ui.GamesFragmentActivity.updateStatusBar 08-06 22:59:08.347 11180-11180 /? W / dalvikvm:VFY:无法解决 虚方法8409:Landroid / view / Window; .setStatusBarColor(I)V 08-06 22:59:08.347 11180-11180 /? D / dalvikvm:VFY:替换操作码 0x6e在0x0030 08-06 22:59:08.347 11180-11180 /?我/ dalvikvm:不能 find方法android.view.Window.setStatusBarColor,引用自 方法 com.google.android.gms.games.ui.GamesFragmentActivity.updateStatusBar 08-06 22:59:08.347 11180-11180 /? W / dalvikvm:VFY:无法解决 虚方法8409:Landroid / view / Window; .setStatusBarColor(I)V 08-06 22:59:08.347 11180-11180 /? D / dalvikvm:VFY:替换操作码 0x6e在0x0034 08-06 22:59:08.347 11180-11180 /? E / dalvikvm:不能 找到class' android.app.ActivityManager $ TaskDescription',引用 从方法 com.google.android.gms.games.ui.GamesFragmentActivity.updateTaskDescription 08-06 22:59:08.347 11180-11180 /? W / dalvikvm:VFY:无法解决 新实例27(Landroid / app / ActivityManager $ TaskDescription;)in LCOM /谷歌/安卓/ GMS /游戏/ UI / GamesFragmentActivity; 08-06 22:59:08.347 11180-11180 /? D / dalvikvm:VFY:替换操作码0x22 at 0x0040 08-06 22:59:08.347 11180-11180 /? W / dalvikvm:无法解决 超类 LCOM /谷歌/安卓/ GMS /游戏/ UI / GamesFragmentActivity $ 1; (55)08-06 22:59:08.347 11180-11180 /? W / dalvikvm:班级的链接 ' LCOM /谷歌/安卓/ GMS /游戏/ UI / GamesFragmentActivity $ 1;'失败 08-06 22:59:08.347 11180-11180 /? D / dalvikvm:DexOpt:无法选择 直接调用0x6ab7在0x88 in Lcom / google / android / gms / games / ui / GamesFragmentActivity; .onCreate 08-06 22:59:08.347 11180-11180 /? D / dalvikvm:DexOpt:无法选择直接 在0x4f处调用0x007c LCOM /谷歌/安卓/ GMS /游戏/ UI / GamesFragmentActivity; .updateTaskDescription 08-06 22:59:08.357 11180-11180 /? I / dalvikvm:无法找到方法 android.app.Activity.finishAfterTransition,从方法引用 android.support.v4.app.FragmentActivity.onBackPressed 08-06 22:59:08.357 11180-11180 /? W / dalvikvm:VFY:无法解析虚拟 方法88:Landroid / app / Activity; .finishAfterTransition()V 08-06 22:59:08.357 11180-11180 /? D / dalvikvm:VFY:替换操作码0x6e at 0x0012 08-06 22:59:08.377 963-1448 /? d / dalvikvm: WAIT_FOR_CONCURRENT_GC阻止0ms 08-06 22:59:08.557 963-1448 /? D / dalvikvm:GC_EXPLICIT释放564K,14%免费9888K / 11399K,暂停 4ms + 6ms,总计179ms 08-06 22:59:08.577 11180-11180 /? W / dalvikvm:VFY: 无法找到签名中引用的类 (Landroid / view / SearchEvent;)08-06 22:59:08.577 11180-11180 /? I / dalvikvm:找不到方法 android.view.Window $ Callback.onSearchRequested,从方法引用 android.support.v7.internal.view.WindowCallbackWrapper.onSearchRequested 08-06 22:59:08.577 11180-11180 /? W / dalvikvm:VFY:无法解决 接口方法8386: Landroid /视图/窗口$回调; .onSearchRequested (Landroid / view / SearchEvent;)Z 08-06 22:59:08.577 11180-11180 /? D / dalvikvm:VFY:将代码0x72替换为0x0002 08-06 22:59:08.577 11180-11180 /? I / dalvikvm:找不到方法 android.view.Window $ Callback.onWindowStartingActionMode,引用 从方法 android.support.v7.internal.view.WindowCallbackWrapper.onWindowStartingActionMode 08-06 22:59:08.577 11180-11180 /? W / dalvikvm:VFY:无法解决 接口方法8390: Landroid /视图/窗口$回调; .onWindowStartingActionMode (Landroid /视图/ ActionMode $回调; I)Landroid /视图/ ActionMode; 08-06 22:59:08.577 11180-11180 /? D / dalvikvm:VFY:替换操作码0x72 at 0x0002 08-06 22:59:08.597 892-894 /? D / dalvikvm:GC_CONCURRENT被释放 3308K,27%免费14043K / 19015K,暂停12ms + 14ms,总计74ms 08-06 22:59:08.627 11180-11183 /? D / dalvikvm:GC_CONCURRENT释放230K,5% 的 E / AndroidUtils: getCallingContext():无法从中找到调用包名 com.google.android.gms.games.ui.client.main.ClientSettingsActivity@41d70410 08-06 22:59:08.867 11180-11180 /? E / ClientUiFragAct:客户端UI 必须使用startActivityForResult 08-06启动活动 22:59:08.867 11180-11180 /? E / GamesFragmentActivity:无法 实例化GoogleApiClient;救人......
请记住,我尝试过使用不同的sdk目标(17,21,23,24),我尝试过混合和匹配不同版本的库,我尝试过添加所有服务并且仅使用最小值(游戏,加号,广告)。我已经尝试了所有我能想到的东西,但我很陌生,我想我只是忽略了一些相对简单的东西。我只是无法使用我的日志在谷歌上找到一个提示,而且我能想到的每一个字词变化都能找到线索。任何帮助表示赞赏。
更新
这是我调用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方法本身,它启动导致logcat错误的新活动:
public void showLeaderboards(){
if(mHelper.isSignedIn()){
mActivity.startActivityForResult(Games.getSettingsIntent(getApiClient()), RC_UNUSED);
} else {
mHelper.beginUserInitiatedSignIn();
}
}
答案 0 :(得分:0)
已找到解决方案。我将startacticityforresult中的RC_UNUSED设置为-1,这将启动一个没有排行榜活动类上下文的新活动。将其设置为非负值可解决问题