2017-03-01 153 views
0

我已经阅读了关于SNS的亚马逊自述文件,它是git repo。亚马逊SNS Unity - 找不到GCMBroadcastReceiver

注册工作正常,移动设备创建一个端点。使用阿尔恩端点处发布消息的电话显示的应用程序崩溃的消息,下面的堆栈跟踪:

03-01 19:53:34.781 17484 17484 E AndroidRuntime:java.lang.RuntimeException: Unable to instantiate receiver com.company.appname.GCMBroadcastReceiver: java.lang.ClassNotFoundException: Didn't find class "com.company.animamobile.GCMBroadcastReceiver" on path: DexPathList[[zip file "/data/app/com.company.appname-2/base.apk"],nativeLibraryDirectories=[/data/app/com.company.appname-2/lib/arm, /data/app/com.company.appname-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]] 

资产/插件/ Android的包含所有相关的.jar文件和我检查了亚马逊的jar文件,如果它包含班级使用jar tf cmd。它做了什么。

我的AndroidManifest.xml是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.company.appname" 
     android:installLocation="preferExternal" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <supports-screens 
     android:smallScreens="true" 
     android:normalScreens="true" 
     android:largeScreens="true" 
     android:xlargeScreens="true" 
     android:anyDensity="true"/> 

    <uses-sdk android:minSdkVersion="15" /> 


    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

    <permission android:name="com.amazonaws.unity.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="com.amazonaws.unity.permission.C2D_MESSAGE" /> 


    <application 
     android:theme="@android:style/Theme.NoTitleBar" 
     android:icon="@drawable/app_icon" 
     android:label="@string/app_name" 
     android:debuggable="true"> 

    <activity android:name="com.unity3d.player.UnityPlayerActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 
     </intent-filter> 
     <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> 
     <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" /> 
    </activity> 

    <receiver 
     android:name="com.company.appname.GCMBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <action android:name="com.google.android.c2dm.intent.REGISTRATION"/> 
     <category android:name="com.company.appname" /> 
     </intent-filter> 
    </receiver> 

    <service android:name="com.company.appname.GCMIntentService" /> 
    </application> 
</manifest> 

[编辑]张贴之前,我决定进一步检查SO。找到了一个帖子,建议添加google GCM.jar。我在AndroidManifest中做了哪些引用。应用犯规崩溃,所以我现在必须看看logcat中,得到了以下几点:

03-01 20:09:31.911 3582 3637 V BroadcastQueue: [background] Process cur broadcast BroadcastRecord{be5a3b5 u0 com.google.android.c2dm.intent.RECEIVE qIdx=4}, state= (APP_RECEIVE) DELIVERED for app ProcessRecord{d9ba83e 20867:com.company.appname/u0a253} 
03-01 20:09:31.921 20867 20867 V GCMBroadcastReceiver: onReceive: com.google.android.c2dm.intent.RECEIVE 
03-01 20:09:31.921 20867 20867 V GCMBroadcastReceiver: GCM IntentService class: com.company.appname.GCMIntentService 
03-01 20:09:31.921 20867 20867 V GCMBaseIntentService: Acquiring wakelock 
03-01 20:09:31.921 3582 5879 W ActivityManager: Unable to start service Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10 pkg=com.company.appname cmp=com.company.appname/com.activate.gcm.GCMIntentService bqHint=4 (has extras) } U=0: not found 
+0

您正在构建应用程序时使用哪种Google Play服务?也不要使用已被弃用且不再支持的GCM.jar,我甚至不会认为你会得到推送通知 – tyczj

+0

现在抱怨GCMIntentService正在丢失,如果我使用gcm.jar。我有点困惑,为什么它看不到亚马逊罐子里的课程。他们在那里。我如何检查谷歌播放服务版本? –

+0

在Android Studio中查看你的gradle文件,我试图去的是GCMIntentService在谷歌播放服务的更新中删除(我不记得是什么版本),如果Amazons SNS没有更新,你需要将该版本作为目标有它 – tyczj

回答

0

原来我的Android支持,v4.jar不包含WakefullBroadcastReceiver类。

我在浏览亚马逊java文件时发现了这个,并且看到它的BroadcastReceiver正在扩展它。在android-suppotv4.jar上使用jar tf显示这个类不存在。我将android-support-v13.jar添加到我的项目中。确保我的班级路径在清单中是正确的,问题已解决。