【问题标题】:Google Play Services Unity3d PluginGoogle Play 服务 Unity3d 插件
【发布时间】:2014-07-08 16:29:22
【问题描述】:

我之前为 Unity3d 实现了 Google play services 插件,一切运行良好,我正在更改项目名称并更新开发者控制台以从测试项目变为实际游戏,这时一切都崩溃了。我知道应用 ID 需要匹配,我再次按照所有指示进行操作,但似乎我做错了什么,无法找出问题所在。

自从这个插件发布以来,Unity3d 和 Android SDK 都已更新,我还想验证它是否仍在工作,因为 Google play 服务有几个 chan![在此处输入图片描述][1]ges。

下面是发生错误时我的 logcat。截至目前,我将其限制为仅尝试登录,即应用关闭并失败。

--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
E/gpop.InstalledAppsGrid( 2351): Hidden list size 77
E/gpop.InstalledAppsGrid( 2351): Hidden list size 77
E/KeyMappingDownloader( 2351): No keymapping for com.DPGaming.Evolution
E/SQLiteDatabase( 2885): close() was never explicitly called on database '/data/data/com.google.android.gms/databases/metrics.db' 
E/SQLiteDatabase( 2885): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
E/SQLiteDatabase( 2885):    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:779)
E/SQLiteDatabase( 2885):    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:231)
E/SQLiteDatabase( 2885):    at fyc.d(SourceFile:96)
E/SQLiteDatabase( 2885):    at fyc.a(SourceFile:220)
E/SQLiteDatabase( 2885):    at com.google.android.gms.googlehelp.service.ClearHelpHistoryIntentService.onHandleIntent(SourceFile:47)
E/SQLiteDatabase( 2885):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
E/SQLiteDatabase( 2885):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/SQLiteDatabase( 2885):    at android.os.Looper.loop(Looper.java:137)
E/SQLiteDatabase( 2885):    at android.os.HandlerThread.run(HandlerThread.java:60)
E/System  ( 2885): Uncaught exception thrown by finalizer
E/System  ( 2885): java.lang.IllegalStateException: Don't have database lock!
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178)
E/System  ( 2885):  at android.util.LruCache.trimToSize(LruCache.java:197)
E/System  ( 2885):  at android.util.LruCache.evictAll(LruCache.java:285)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
E/System  ( 2885):  at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
E/System  ( 2885):  at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
E/System  ( 2885):  at java.lang.Thread.run(Thread.java:856)
E/SQLiteDatabase( 2885): close() was never explicitly called on database '/data/data/com.google.android.gms/databases/help_responses.db' 
E/SQLiteDatabase( 2885): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
E/SQLiteDatabase( 2885):    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:779)
E/SQLiteDatabase( 2885):    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:231)
E/SQLiteDatabase( 2885):    at fxy.c(SourceFile:122)
E/SQLiteDatabase( 2885):    at fxy.b(SourceFile:506)
E/SQLiteDatabase( 2885):    at com.google.android.gms.googlehelp.service.ClearHelpHistoryIntentService.onHandleIntent(SourceFile:48)
E/SQLiteDatabase( 2885):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
E/SQLiteDatabase( 2885):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/SQLiteDatabase( 2885):    at android.os.Looper.loop(Looper.java:137)
E/SQLiteDatabase( 2885):    at android.os.HandlerThread.run(HandlerThread.java:60)
E/System  ( 2885): Uncaught exception thrown by finalizer
E/System  ( 2885): java.lang.IllegalStateException: Don't have database lock!
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178)
E/System  ( 2885):  at android.util.LruCache.trimToSize(LruCache.java:197)
E/System  ( 2885):  at android.util.LruCache.evictAll(LruCache.java:285)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
E/System  ( 2885):  at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
E/System  ( 2885):  at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
E/System  ( 2885):  at java.lang.Thread.run(Thread.java:856)
E/SQLiteDatabase( 2885): close() was never explicitly called on database '/data/data/com.google.android.gms/databases/history_query.db' 
E/SQLiteDatabase( 2885): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
E/SQLiteDatabase( 2885):    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:779)
E/SQLiteDatabase( 2885):    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
E/SQLiteDatabase( 2885):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
E/SQLiteDatabase( 2885):    at fzm.a(SourceFile:92)
E/SQLiteDatabase( 2885):    at com.google.android.gms.googlehelp.service.ClearHelpHistoryIntentService.onHandleIntent(SourceFile:49)
E/SQLiteDatabase( 2885):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
E/SQLiteDatabase( 2885):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/SQLiteDatabase( 2885):    at android.os.Looper.loop(Looper.java:137)
E/SQLiteDatabase( 2885):    at android.os.HandlerThread.run(HandlerThread.java:60)
E/System  ( 2885): Uncaught exception thrown by finalizer
E/System  ( 2885): java.lang.IllegalStateException: Don't have database lock!
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178)
E/System  ( 2885):  at android.util.LruCache.trimToSize(LruCache.java:197)
E/System  ( 2885):  at android.util.LruCache.evictAll(LruCache.java:285)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
E/System  ( 2885):  at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
E/System  ( 2885):  at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
E/System  ( 2885):  at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
E/System  ( 2885):  at java.lang.Thread.run(Thread.java:856)
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/Constants( 2351): Getting new oem
E/Constants( 2351): product.oem not found
E/Constants( 2351): Getting new oem
E/Constants( 2351): product.oem not found
E/Constants( 2351): Getting new oem
E/Constants( 2351): product.oem not found
E/Sensor-AccelerometerUI( 2377): java.io.IOException: Connection refused
E/PGA     ( 4346): :::::::: PgaUtilsEnumToStr: invalid e 0x30e2
E/dalvikvm( 4346): Could not find class 'org.onepf.oms.appstore.TStoreRequestCallback', referenced from method org.onepf.oms.appstore.TStoreBillingService.launchPurchaseFlow
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/NativeActivity( 4346): channel 'b321ddb0 com.DPGaming.Evolution/com.unity3d.player.UnityPlayerNativeActivity (client)' ~ Failed to receive dispatch signal.  status=-11
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/NativeActivity( 4346): channel 'b321ddb0 com.DPGaming.Evolution/com.unity3d.player.UnityPlayerNativeActivity (client)' ~ Failed to receive dispatch signal.  status=-11
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/NativeActivity( 4346): channel 'b321ddb0 com.DPGaming.Evolution/com.unity3d.player.UnityPlayerNativeActivity (client)' ~ Failed to receive dispatch signal.  status=-11
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/NativeActivity( 4346): channel 'b321ddb0 com.DPGaming.Evolution/com.unity3d.player.UnityPlayerNativeActivity (client)' ~ Failed to receive dispatch signal.  status=-11
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/NativeActivity( 4346): channel 'b321ddb0 com.DPGaming.Evolution/com.unity3d.player.UnityPlayerNativeActivity (client)' ~ Failed to receive dispatch signal.  status=-11
E/InputDispatcher( 2155): Motion event has invalid pointer count 0; value must be between 1 and 16.
E/NativeActivity( 4346): channel 'b321ddb0 com.DPGaming.Evolution/com.unity3d.player.UnityPlayerNativeActivity (client)' ~ Failed to receive dispatch signal.  status=-11
E/dalvikvm( 4346): Could not find class 'android.support.v4.app.FragmentActivity', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.showErrorDialogFragment
E/dalvikvm( 4346): Could not find class 'android.support.v4.app.FragmentActivity', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.showErrorDialogFragment
E/libEGL  ( 4346): call to OpenGL ES API with no current context (logged once per thread)

E/dalvikvm( 4409): Could not find class 'org.onepf.oms.appstore.TStoreRequestCallback', referenced from method org.onepf.oms.appstore.TStoreBillingService.launchPurchaseFlow 

另一个具有更多输出和调试的 LogCat 我找到了看起来是问题所在的区域,但是我不知道从哪里开始修复它。以下日志在 Social.localUser.Authenticate 之后立即发生

*******************************LOGCAT*************************
I/SystemUpdateService( 5243): cancelUpdate (empty URL)

W/System.err( 4501): Error: /data/data/libqemu_wl.user.txt: open failed: ENOENT (No such file or directory)

I/ActivityManager( 4501): package `com.android.providers.downloads` whitelisting status = false

I/dalvikvm( 5725): Could not find method android.view.View.getDisplay, referenced from method com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1.h

W/dalvikvm( 5725): VFY: unable to resolve virtual method 800: Landroid/view/View;.getDisplay ()Landroid/view/Display;

D/dalvikvm( 5725): VFY: replacing opcode 0x6e at 0x0009

I/dalvikvm( 5725): Could not find method android.view.ViewTreeObserver.removeOnGlobalLayoutListener, referenced from method com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1.g

W/dalvikvm( 5725): VFY: unable to resolve virtual method 845: Landroid/view/ViewTreeObserver;.removeOnGlobalLayoutListener (Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V

D/dalvikvm( 5725): VFY: replacing opcode 0x6e at 0x0037

W/PopupManager( 5725): You have not specified a View to use as content view for popups. Falling back to the Activity content view which may not work properly in future versions of the API. Use setViewForPopups() to set your content view.

【问题讨论】:

    标签: unity3d google-play-services


    【解决方案1】:

    好的,所以我已经修复了导致它崩溃的任何问题,下面是我所做的更改:

    第一步:创建全新的项目并完成开发者控制台,发布一个简单的登录按钮。有用。我现在知道我的 Unity3d、Android APK 和开发者控制台程序都是正确的。

    第二步:转到我正在尝试开始工作并创建一个新场景的项目,再次只添加一个登录按钮。有用。所以我现在我的项目很好,与代码有关。

    第三步:我把所有的代码和对象都注释掉了,然后慢慢地一一添加回来。。这很痛苦。但我找到了问题的根源,问题是新玩家在尝试从云加载时没有存储数据,因此返回的数据数组未初始化,我通过执行 if(data.length > 0) 但是无论如何这都会导致崩溃,所以一个简单的尝试和捕获并使用返回的数据,就好像假设它的正确效果很好。

    【讨论】:

      【解决方案2】:

      您提到更改项目名称,这是否包括包名称?我建议查看 Android Manifest,以防活动管理器尝试调用错误的包/活动。

      【讨论】:

      • 项目的实际名称保持不变,APK的名称以及安装名称(产品名称)我确实改变了。我查看了清单(其中 4 个用于各种插件)并且每个都有自己的包名,但是我的包名位于 Plugins/Android 文件夹下方我将包名设置为 package="com.unity3d.player" 这个作为 Unity 提供的模板的默认设置。如果您能想到任何其他可能的问题,请开火。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      相关资源
      最近更新 更多