Google Play 游戏 C++ SDK 示例失败,找不到库“ButtonClickerNativeActivity”

Posted

技术标签:

【中文标题】Google Play 游戏 C++ SDK 示例失败,找不到库“ButtonClickerNativeActivity”【英文标题】:Google Play Games C++ SDK Samples fails with Library 'ButtonClickerNativeActivity' not found 【发布时间】:2016-05-06 04:31:11 【问题描述】:

我需要试验一下Google Play Games C++ SDK Samples for android

从模拟器运行它无法登录请求安装Google Play Games...据我所知,这需要手动完成...

从执行 Android 4.1.2 的 Samsung Samsung Galaxy Note 10.1 GT-N8010 运行它,Button Clicker 应用程序在启动时失败并出现以下错误:

无法加载库:load_library[1094]:库 未找到“ButtonClickerNativeActivity”

注意:当我从模拟器运行它时,这个错误不会出现。

我不明白为什么会失败以及如何修复或解决此失败。

示例以这种方式加载:

public class ButtonClickerNativeActivity extends NativeActivity 
    // Load SO
    static 
        System.load("libButtonClickerNativeActivity.so");
    

我确认包 (ButtonClicker-debug.apk) 包含用于 armeabi、armeabi-v7a 和 x86 的 lib 文件夹中的库。

这是应用启动的 logcat 列表:

01-28 15:18:44.885 31258-31258/? D/dalvikvm: 后期启用 CheckJNI 01-28 15:18:44.900 31258-31264/? E/jdwp:向调试器发送回复失败:管道损坏 01-28 15:18:44.900 31258-31264/? D/dalvikvm:调试器已分离;对象注册表有 1 个条目 01-28 15:18:44.945 31258-31258/? W/ActivityThread:应用程序 com.google.example.games.ButtonClicker 正在等待端口 8100 上的调试器... 01-28 15:18:44.960 31258-31258/? I/System.out:发送 WAIT 块 01-28 15:18:45.915 31258-31264/com.google.example.games.ButtonClicker I/dalvikvm:调试器处于活动状态 01-28 15:18:45.965 31258-31258/com.google.example.games.ButtonClicker I/System.out:调试器已连接 01-28 15:18:45.965 31258-31258/com.google.example.games.ButtonClicker I/System.out:等待调试器解决... 01-28 15:18:46.165 31258-31258/com.google.example.games.ButtonClicker I/System.out:等待调试器解决... 01-28 15:18:46.365 31258-31258/com.google.example.games.ButtonClicker I/System.out: 等待调试器解决... 01-28 15:18:46.565 31258-31258/com.google.example.games.ButtonClicker I/System.out:等待调试器解决... 01-28 15:18:46.765 31258-31258/com.google.example.games.ButtonClicker I/System.out:等待调试器解决... 01-28 15:18:46.965 31258-31258/com.google.example.games.ButtonClicker I/System.out:等待调试器解决... 01-28 15:18:47.170 31258-31258/com.google.example.games.ButtonClicker I/System.out: 等待调试器解决... 01-28 15:18:47.370 31258-31258/com.google.example.games.ButtonClicker I/System.out: 调试器已解决 (1325) 01-28 15:18:47.510 31258-31258/com.google.example.games.ButtonClicker D/dalvikvm: 试图加载 lib ButtonClickerNativeActivity 0x423b2428 01-28 15:18:47.515 31258-31258/com.google.example.games.ButtonClicker W/dalvikvm: 异常 Ljava/lang/UnsatisfiedLinkError;初始化 Lcom/google/example/games/ButtonClicker/ButtonClickerNativeActivity 时抛出; 01-28 15:18:47.515 31258-31258/com.google.example.games.ButtonClicker W/dalvikvm: 类初始化在 newInstance 调用中失败 (Lcom/google/example/games/ButtonClicker/ButtonClickerNativeActivity;) 01-28 15:18:47.515 31258-31258/com.google.example.games.ButtonClicker D/AndroidRuntime: 关闭虚拟机 01-28 15:18:47.515 31258-31258/com.google.example.games.ButtonClicker W/dalvikvm: threadid=1: 线程以未捕获的异常退出 (group=0x41c3d2a0) 01-28 15:18:47.525 31258-31258/com.google.example.games.ButtonClicker E/AndroidRuntime: 致命异常: main java.lang.ExceptionInInitializerError 在 java.lang.Class.newInstanceImpl(本机方法) 在 java.lang.Class.newInstance(Class.java:1319) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1068) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 在 android.app.ActivityThread.access$700(ActivityThread.java:140) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4921) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.UnsatisfiedLinkError:无法加载库:load_library [1094]:找不到库'ButtonClickerNativeActivity' 在 java.lang.Runtime.load(Runtime.java:340) 在 java.lang.System.load(System.java:521) 在 com.google.example.games.ButtonClicker.ButtonClickerNativeActivity.(ButtonClickerNativeActivity.java:29) 在 java.lang.Class.newInstanceImpl(本机方法) 在 java.lang.Class.newInstance(Class.java:1319) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1068) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 在 android.app.ActivityThread.access$700(ActivityThread.java:140) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:4921) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 在 dalvik.system.NativeStart.main(本机方法) 01-28 15:18:58.720 31258-31258/? I/Process:发送信号。 PID:31258 SIG:9

【问题讨论】:

可以分享一下应用启动的日志吗? 您是否能够在构建项目并将其部署到设备之前执行构建项目的步骤?有一个先决条件,您需要 Google Play Game Service C++ SDK 并将其解压缩到 .gpg-cpp-sdk 目录。基于samples-android/ 和 `ButtonClicker/" 文件夹的 .md 文件还有其他先决条件。 是的,我成功构建了它,因为它在模拟器上执行(应用程序运行,但登录失败,因为未安装 Google Play 应用程序)。另外,解压缩到 .pgp-cpp-sdk 文件夹的说明不清楚?...我应该把这个文件夹放在哪里? (事实上​​,我发现它在 common\gpg-sdk 文件夹中是必需的,并且恰好是带有“.”前缀的“gpg-cpp-sdk”名称...) 我没有为 ids.xml 文件提供标识符(还)...这会导致模拟器和真实设备之间出现如此不同的行为吗? REPLACE_ME 据我所知,Google Play 服务并未安装在模拟器的系统映像中。最好在实际设备上进行测试。希望它不会成为问题。 【参考方案1】:

我更改了示例代码 (ButtonClickerNativeActivity.java) 中的以下行,并且应用程序在三星设备上启动时没有出现异常。

public class ButtonClickerNativeActivity extends NativeActivity 
    // Load SO
    static 
        //System.load("libButtonClickerNativeActivity.so");
        System.loadLibrary("ButtonClickerNativeActivity");
    

【讨论】:

以上是关于Google Play 游戏 C++ SDK 示例失败,找不到库“ButtonClickerNativeActivity”的主要内容,如果未能解决你的问题,请参考以下文章

打开游戏的时候提示没有google play 服务怎么办?

如何在cocos2d-x中实现实时多人google play游戏服务c++

无法登录 google play 游戏服务 API

Google Play 游戏 Android 排行榜意外响应代码 410

Google Play Games C++ API - 无法以编程方式访问好友

Google play 游戏在 iOS 上登录错误