安卓上的GCM演示客户端,"Unable to instantiate activity"错误



我正在尝试使用Google提供的GCM演示客户端app:http://developer.android.com/google/gcm/client.html

然而,我无法运行它,因为我的应用程序崩溃与"无法实例化活动"错误。

完整内容:

> 05-06 12:09:10.748: I/SELinux(20458): Function: selinux_android_load_priority [0], There is no sepolicy file.
> 05-06 12:09:10.748: I/SELinux(20458):  
> 05-06 12:09:10.748: I/SELinux(20458): Function: selinux_android_load_priority , loading version is VE=SEPF_GT-I9505_4.4.2_0010
> 05-06 12:09:10.748: I/SELinux(20458):  
> 05-06 12:09:10.748: I/SELinux(20458):  
> 05-06 12:09:10.748: I/SELinux(20458): selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
> 05-06 12:09:10.748: D/dalvikvm(20458): Late-enabling CheckJNI
> 05-06 12:09:11.139: D/AndroidRuntime(20458): Shutting down VM
> 05-06 12:09:11.139: W/dalvikvm(20458): threadid=1: thread exiting with uncaught exception (group=0x418cada0)
> 05-06 12:09:11.139: E/AndroidRuntime(20458): FATAL EXCEPTION: main
> 05-06 12:09:11.139: E/AndroidRuntime(20458): Process: com.google.android.gcm.demo.app, PID: 20458
> 05-06 12:09:11.139: E/AndroidRuntime(20458): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.google.android.gcm.demo.app/com.google.android.gcm.demo.app.DemoActivity}: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gcm.demo.app.DemoActivity" on path: DexPathList[[zip file "/data/app/com.google.android.gcm.demo.app-13.apk"],nativeLibraryDirectories=[/data/app-lib/com.google.android.gcm.demo.app-13, /vendor/lib, /system/lib]]
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.app.ActivityThread.access$900(ActivityThread.java:161)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.os.Handler.dispatchMessage(Handler.java:102)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.os.Looper.loop(Looper.java:157)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.app.ActivityThread.main(ActivityThread.java:5356)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at java.lang.reflect.Method.invokeNative(Native Method)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at java.lang.reflect.Method.invoke(Method.java:515)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at dalvik.system.NativeStart.main(Native Method)
> 05-06 12:09:11.139: E/AndroidRuntime(20458): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gcm.demo.app.DemoActivity" on path: DexPathList[[zip file "/data/app/com.google.android.gcm.demo.app-13.apk"],nativeLibraryDirectories=[/data/app-lib/com.google.android.gcm.demo.app-13, /vendor/lib, /system/lib]]
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2222)
> 05-06 12:09:11.139: E/AndroidRuntime(20458):     ... 11 more

代码本身应该工作良好,我相信。唯一涉及到"我"的是添加库。

我必须添加Google Play Services和"v4支持库"(因为它是在Readme中编写的)。我通过Android SDK管理器下载了play服务,导入了项目,然后用Properties->Android->Add Library添加到我的主要内容中。

使用App-compat(这可能是问题所在),我尝试了两种方法:-与谷歌资源相同-或复制jar到lib,然后RMB->BuildPath->Add到BuildPath。我确保检查Java构建路径"Android Private Libraries"和/或app- pat.jar

当然,我做了很多项目/清理。

我很乐意提供我的代码的任何片段,但是除了我的API密钥,我没有修改任何东西,所以它是在谷歌的例子。我用的是Eclipse

我遇到了同样的问题。要使示例正常工作,您需要完成三个步骤:

  • 添加google play services lib (did)
  • 添加android支持v4库(did)
  • 最后请注意,本例中的源代码位于java/com/google/android/gcm/demo/app/目录下,但是当eclipse编译源代码时,不要在此路径下搜索源代码。要解决这个问题,您有两个选项:

    • 创建一个名为com.google.android.gcm.demo.app的包到src文件夹中(右键单击-> New -> package),然后将三个源代码java文件移动到src目录中(只需拖放)。最后清理项目(转到project -> clean)。注意src目录默认位于java构建路径中。

    • 将源代码路径添加到java构建路径中。转到项目属性-> Java构建路径->添加文件夹…->现在选择Java目录-> OK。我附上了一个截图来帮助https://i.stack.imgur.com/yQoLC.png

对不起我的英语。

相关内容

最新更新