由于Unity脚本无法在android版本的后台运行,因此我需要创建一个在android服务中运行代码的android库。
通过统一正确调用android服务并运行正常。
但是,我还需要在服务内部添加paho MqttAndroidClient,将其作为maven依赖项添加到库gradle中。通过android studio构建android应用时,此方法工作正常,但作为库构建并导入unity时,出现以下异常:
Process: com.ar.mqttServer, PID: 19777
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:354)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/eclipse/paho/android/service/MqttAndroidClient;
at com.ar.ntripclient.NtripClient$NTRIPClientThread.doInBackground(NtripClient.java:92)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.eclipse.paho.android.service.MqttAndroidClient" on path: DexPathList[[zip file "/data/app/com.ar.mqttServer-vUyFnwrhL3g2gvDl5VRW_w==/base.apk"],nativeLibraryDirectories=[/data/app/com.ar.mqttServer-vUyFnwrhL3g2gvDl5VRW_w==/lib/arm, /data/app/com.ar.mqttServer-vUyFnwrhL3g2gvDl5VRW_w==/base.apk!/lib/armeabi-v7a, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.ar.ntripclient.NtripClient$NTRIPClientThread.doInBackground(NtripClient.java:92)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)