我正在尝试创建一个后台应用程序关闭时运行的后台服务。此服务的目的是连接到nodejs服务器,每当发生事件时(通过socket.io),它都会通知用户。 但是,当我启动我的服务时,我的应用程序崩溃,我收到以下错误
01-06 16:52:14.239 2304-2304/? D/dalvikvm: Late-enabling CheckJNI
01-06 16:52:14.255 2304-2310/? D/dalvikvm: Debugger has detached; object registry had 1 entries
01-06 16:52:14.267 2304-2318/? W/SharedPreferencesImpl: Attempt to read preferences file /data/data/com.esprit.redcrescentapp/shared_prefs/RedCrecent.xml without permission
01-06 16:52:14.267 2304-2304/? D/Service: Created
01-06 16:52:14.267 2304-2304/? I/dalvikvm: Could not find method io.socket.client.IO.socket, referenced from method com.esprit.redcrescentapp.SocketHandler.<init>
01-06 16:52:14.267 2304-2304/? W/dalvikvm: VFY: unable to resolve static method 63105: Lio/socket/client/IO;.socket (Ljava/lang/String;)Lio/socket/client/Socket;
01-06 16:52:14.267 2304-2304/? D/dalvikvm: VFY: replacing opcode 0x71 at 0x0005
01-06 16:52:14.267 2304-2304/? I/dalvikvm: Could not find method io.socket.client.IO.socket, referenced from method com.esprit.redcrescentapp.SocketHandler.getSocketInstance
01-06 16:52:14.267 2304-2304/? W/dalvikvm: VFY: unable to resolve static method 63105: Lio/socket/client/IO;.socket (Ljava/lang/String;)Lio/socket/client/Socket;
01-06 16:52:14.267 2304-2304/? D/dalvikvm: VFY: replacing opcode 0x71 at 0x0006
01-06 16:52:14.267 2304-2304/? D/AndroidRuntime: Shutting down VM
01-06 16:52:14.267 2304-2304/? W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4d0eb20)
01-06 16:52:14.267 2304-2304/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.esprit.redcrescentapp, PID: 2304
java.lang.NoClassDefFoundError: io.socket.client.IO
at com.esprit.redcrescentapp.SocketHandler.getSocketInstance(SocketHandler.java:100)
at com.esprit.redcrescentapp.MyService.onCreate(MyService.java:74)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2558)
at android.app.ActivityThread.access$1800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
我认为抛出此异常是因为我没有在MyService类中添加 MultiDex.install(),而是在我尝试添加它时另一个异常
01-06 17:05:43.499 7677-7677/? D/dalvikvm: Late-enabling CheckJNI
01-06 17:05:43.519 7677-7683/? D/dalvikvm: Debugger has detached; object registry had 1 entries
01-06 17:05:43.527 7677-7677/? I/MultiDex: VM with version 1.6.0 does not have multidex support
01-06 17:05:43.527 7677-7677/? I/MultiDex: install
01-06 17:05:43.527 7677-7677/? I/MultiDex: MultiDexExtractor.load(/data/app/com.esprit.redcrescentapp-2.apk, false)
01-06 17:05:43.531 7677-7690/? W/SharedPreferencesImpl: Attempt to read preferences file /data/data/com.esprit.redcrescentapp/shared_prefs/multidex.version.xml without permission
01-06 17:05:43.531 7677-7677/? I/MultiDex: Detected that extraction must be performed.
01-06 17:05:43.531 7677-7677/? E/MultiDex: Failed to create dir /data/data/com.esprit.redcrescentapp/code_cache/secondary-dexes. parent file is a dir true, a file false, exists true, readable false, writable false
01-06 17:05:43.531 7677-7677/? E/MultiDex: Multidex installation failure
java.io.IOException: Failed to create cache directory /data/data/com.esprit.redcrescentapp/code_cache/secondary-dexes
at android.support.multidex.MultiDexExtractor.mkdirChecked(MultiDexExtractor.java:301)
at android.support.multidex.MultiDexExtractor.prepareDexDir(MultiDexExtractor.java:261)
at android.support.multidex.MultiDexExtractor.performExtractions(MultiDexExtractor.java:170)
at android.support.multidex.MultiDexExtractor.load(MultiDexExtractor.java:102)
at android.support.multidex.MultiDex.install(MultiDex.java:159)
at com.esprit.redcrescentapp.MyService.attachBaseContext(MyService.java:217)
at android.app.Service.attach(Service.java:694)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2556)
at android.app.ActivityThread.access$1800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
01-06 17:05:43.531 7677-7677/? D/AndroidRuntime: Shutting down VM
01-06 17:05:43.531 7677-7677/? W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4d0eb20)
01-06 17:05:43.531 7677-7677/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.esprit.redcrescentapp, PID: 7677
java.lang.RuntimeException: Unable to create service com.esprit.redcrescentapp.MyService: java.lang.RuntimeException: Multi dex installation failed (Failed to create cache directory /data/data/com.esprit.redcrescentapp/code_cache/secondary-dexes).
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2568)
at android.app.ActivityThread.access$1800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Multi dex installation failed (Failed to create cache directory /data/data/com.esprit.redcrescentapp/code_cache/secondary-dexes).
at android.support.multidex.MultiDex.install(MultiDex.java:178)
at com.esprit.redcrescentapp.MyService.attachBaseContext(MyService.java:217)
at android.app.Service.attach(Service.java:694)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2556)
at android.app.ActivityThread.access$1800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
在我的清单中我有
<service
android:enabled="true"
android:isolatedProcess="true"
/>
一旦我删除了enabled和isolatedProcess就可以了