2016-03-08 106 views
1

我有一个分为两部分的项目:基本代码模块和特定于应用程序的代码模块。无法实例化服务br.com.brainweb.brainfeed.milkpoint.GCMIntentService

我试图用GCMIntentService但是,当应用程序开始运行时有此错误:

03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint 

E/AndroidRuntime: FATAL EXCEPTION: main 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime: Process: br.com.brainweb.brainfeed.milkpoint, PID: 19281 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime: java.lang.RuntimeException: Unable to instantiate service br.com.brainweb.brainfeed.milkpoint.GCMIntentService: java.lang.ClassNotFoundException: Didn't find class "br.com.brainweb.brainfeed.milkpoint.GCMIntentService" on path: DexPathList[[zip file "/data/app/br.com.brainweb.brainfeed.milkpoint-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2746) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread.access$1800(ActivityThread.java:148) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:135) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5310) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:372) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "br.com.brainweb.brainfeed.milkpoint.GCMIntentService" on path: DexPathList[[zip file "/data/app/br.com.brainweb.brainfeed.milkpoint-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread.handleCreateService(ActivityThread.java:2743) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread.access$1800(ActivityThread.java:148)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1375)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.os.Handler.dispatchMessage(Handler.java:102)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.os.Looper.loop(Looper.java:135)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at android.app.ActivityThread.main(ActivityThread.java:5310)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Native Method)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.reflect.Method.invoke(Method.java:372)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)  
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime: Suppressed: java.lang.ClassNotFoundException: br.com.brainweb.brainfeed.milkpoint.GCMIntentService 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.Class.classForName(Native Method) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:  at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime:   ... 11 more 
03-08 11:23:47.454 19281-19281/br.com.brainweb.brainfeed.milkpoint E/AndroidRuntime: Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

对于错误的描述,类不能被发现。我读过,应用程序必须在同一个包中有一个GCMIntentService类。

因此,这里是我的应用程序的清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="br.com.brainweb.brainfeed.milkpoint" 
    android:versionCode="5" 
    android:versionName="2.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="8" /> 

    <permission 
     android:name="br.com.brainweb.brainfeed.milkpoint.permission.C2D_MESSAGE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="br.com.brainweb.brainfeed.milkpoint.permission.C2D_MESSAGE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <application 
     android:name="br.com.brainweb.brainfeed.Aplicacao" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <receiver 
      android:name="com.google.android.gcm.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="br.com.brainweb.brainfeed.milkpoint" /> 
      </intent-filter> 
     </receiver> 

     <service android:name=".GCMIntentService" /> 

     <activity 
      android:name="br.com.brainweb.brainfeed.SplashScreen" 
      android:configChanges="orientation" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="br.com.brainweb.brainfeed.MainActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Black.NoTitleBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="br.com.brainweb.brainfeed.ItemViewActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Black.NoTitleBar" /> 
     <activity 
      android:name="br.com.brainweb.brainfeed.InfoActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 

     <service android:name="org.OpenUDID.OpenUDID_service" > 
      <intent-filter> 
       <action android:name="org.OpenUDID.GETUDID" /> 
      </intent-filter> 
     </service> 
    </application> 

</manifest> 

有实际上是在包GCMIntentService类,当我把一个断点GCMBroadcastReceivergetDefaultIntentServiceClassName方法,路径字符串类似乎是正确的。我仍然得到这个错误。

我已经在堆栈溢出尝试了很多解决方案,但仍然没有一个似乎修复它。

+0

嘿@Gustavo,可能重复的问题请参考此链接(http://stackoverflow.com/questions/35843278/link-of-class-lcom-google-android-gms-gcm-gcmreceiver-failed) –

回答

0

经过很多时间,我终于找到了解决方案。

这是我build.gradle部分是如何:

android { 
    compileSdkVersion 18 
    buildToolsVersion "21.1.2" 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src\\main\\java','src\\test\\java'] // Line 1 
      resources.srcDirs = ['src\\main\\java','src\\test\\java'] // Line 2 
      aidl.srcDirs = ['src\\main\\java','src\\test\\java'] 
      renderscript.srcDirs = ['src\\main\\java','src\\test\\java'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     instrumentTest.setRoot('tests') 
    } 
} 

GCMIntentService包在里面src/main/java。 我删除了文件夹main/java并将其放入src

然后,我改变Line 1Line 2如上图所示,像这样:

java.srcDirs = ['src'] // Line 1 
resources.srcDirs = ['src'] // Line 2 

,并开始工作。

相关问题