BimmerGestalt / AAIdrive

Implementations of some Android Auto features as unofficial IDrive apps
MIT License
551 stars 90 forks source link

Force close the app #130

Closed jezikk82 closed 4 years ago

jezikk82 commented 4 years ago

Hi, I compiled today's version with all the external apk's but I cant test it. After I start the app it close immediately after connecting to the car. It looks like it's fighting for resources between BMW Connected (not classic). I also had Mini classic app, I removed it but no change. In Idrive it see the app support icon it showing up and disappearing every couple of seconds. Any clue ?

drm87 commented 4 years ago

I noticed a similar behaviour using the latest versions from the build server. Even after downgrading to an older version, the problem persisted.

After I completely uninstalled the app and reinstalled it, it worked again as usual, even the newest version.

Did you try that?

hufman commented 4 years ago

Indeed, you shouldn't need the Classic app installed anymore, which will simplify things. Does the BMW Connected and BMW Calendar icon stay in the car, or do they disappear too? If they stay connected, then there's definitely a bug in this app that needs to get fixed.

Can you check your adb logcat output to see why it's crashing?

ogakul commented 4 years ago

I'm on 1.2.2 and it worked fine for weeks now, but recently I have the issue that media apps can't play tracks as they get somehow paused ("0:00" is showing in the car and blinking). Then I have to open the app on the phone manually and hit play to make it work again. I use Poweramp but installed VLC to test and the same happened after a while. What could fix this?

jezikk82 commented 4 years ago

I tried to uninstall both apps (connected drive and androidautoidrive) and install them again. Alone androidautoidrive without connected app didn't want to connect at all (bluetooth, usb). Alone connected app worked fine. Connected +androidautoidrive fight against each other. Connected resources (i. e. calendar) shows up and disappear after couple of seconds. Also the checkbox that apps are connected in mobile devices menu is checked and later unchecked. In androidautoforidrive log i see it's connected and after couple of seconds diattached.

Sorry I can't provide adb logcat as on my corporate laptop usb ports are blocked and can't connect with phone.

P. S. Perhaps you could implement log gathering and export within the app for debug purposes.

hufman commented 4 years ago

Very curious! Did you confirm that the automated builds work? If so, do a diff on the linked APK's assets/carapplications folder vs your local source copy in app/src/main/assets/carapplications, which should be identical. If something is different, I need to fix the build script or the instructions, so please tell me if there's a difference! If there is a difference, you should be able to copy the assets from the APK into your source directory and it won't try to extract them from the external APK directory during the build, which should unblock you until it gets fixed.

The weird part is that the Connected app is disconnecting, that should definitely not happen! If the hosted builds still show this problem, try installing the Sentry analytics build of 1.2.2, to see if it's a big enough crash to report up to Sentry.

jezikk82 commented 4 years ago

The attached apk works fine. I'm on the way now but try to check the following resources later and let you know.

[Edit] The attached apk works fine, but only when Connected app is not installed. Newest connected app + attached apk version still fight for car connection, tested on G30 and F48.

jezikk82 commented 4 years ago

Diff of the files: image Example of the basecoreOnlineServices.p7b. Left panel build by the script, right from attached apk.

image

jezikk82 commented 4 years ago

de.bmw.idrive.BMWRemoting$IllegalArgumentException: errorId=0; errorMsg=setResource failed. at org.apache.etch.bindings.java.transport.DefaultDeliveryService.endcall(DefaultDeliveryService.java:211) at org.apache.etch.bindings.java.support.RemoteBase._endcall(RemoteBase.java:115) at de.bmw.idrive.RemoteBMWRemotingServer$_Async._end_rhmi_setResource(RemoteBMWRemotingServer.java:2423) at de.bmw.idrive.RemoteBMWRemotingServer.rhmi_setResource(RemoteBMWRemotingServer.java:500) at me.hufman.androidautoidrive.carapp.RHMIUtils.rhmi_setResourceCached(RHMIUtils.kt:23) at me.hufman.androidautoidrive.carapp.RHMIUtils.rhmi_setResourceCached(RHMIUtils.kt:15) at me.hufman.androidautoidrive.carapp.maps.MapApp.(MapApp.kt:85) at me.hufman.androidautoidrive.MapService$start$$inlined$synchronized$lambda$1.invoke(MapService.kt:53) at me.hufman.androidautoidrive.MapService$start$$inlined$synchronized$lambda$1.invoke(MapService.kt:16) at me.hufman.androidautoidrive.CarThread.run(CarThread.kt:26)

hufman commented 4 years ago

Thank you so much @jezikk82 for your debugging! This pins down exactly what's going on. I think the different basecoreOnlineServices cert is fine. The build process is using Connected v3.1, compared to the new cert, but (as I understand it, at least) the new cert only adds some new UI Descriptions and grants some access to some additional CDS sections. I'll investigate further to try to figure it out. If you'd like, try out building with Connected v3.1 to see if it changes the competing behavior you're seeing.

The stacktrace, however, points right at the Map module which is using the smartthings resources. I've been using an old copy (v2.1.6) of Smartthings the entire time, which relies on the OnlineServices v2 layout from the Connected app. It turns out that with v2.3.6 they switched to using OnlineServices v3, and the cert in the newer app doesn't allow for using the older layout.

I've updated the instructions with a link to download the last version that uses the v2 layout. Another possible fix is to change the build script to copy the v3 layout, but the unit tests and so on are geared to v2.

If you'd like to try it to confirm, delete the existing Smartthings app from your external directory and download the version from the updated link, delete your app/src/main/assets/carapplications/smartthings directory (safe in the knowledge that you can copy the resources from the main APK release) and rebuild.

jezikk82 commented 4 years ago

I'm glad I could help.
I'll try tomorrow to compile a new version according to your guidelines and check. Let you know.

jezikk82 commented 4 years ago

During build process with older version of smartthings apk I get this in build output:

java.io.IOException: Stream closed
    at java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142)
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
    at java.io.DataInputStream.readFully(DataInputStream.java:195)
    at java.io.DataInputStream.readUTF(DataInputStream.java:609)
    at java.io.DataInputStream.readUTF(DataInputStream.java:564)
    at org.codehaus.groovy.reflection.GeneratedMetaMethod$DgmMethodRecord.loadDgmInfo(GeneratedMetaMethod.java:219)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerMethods(MetaClassRegistryImpl.java:200)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:107)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:85)
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.getGroovyVersion(GroovySystemLoaderFactory.java:58)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.createClassInfoCleaningLoader(GroovySystemLoaderFactory.java:51)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.forClassLoader(GroovySystemLoaderFactory.java:34)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.executeInWorkerClassLoader(IsolatedClassloaderWorkerFactory.java:86)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.access$000(IsolatedClassloaderWorkerFactory.java:53)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1$1.execute(IsolatedClassloaderWorkerFactory.java:72)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:69)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:105)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:99)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
java.lang.IllegalStateException: zip file closed
    at java.util.zip.ZipFile.ensureOpen(ZipFile.java:686)
    at java.util.zip.ZipFile.getInputStream(ZipFile.java:366)
    at java.util.jar.JarFile.getInputStream(JarFile.java:452)
    at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:164)
    at java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:239)
    at org.codehaus.groovy.reflection.GeneratedMetaMethod$DgmMethodRecord.loadDgmInfo(GeneratedMetaMethod.java:185)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerMethods(MetaClassRegistryImpl.java:200)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:107)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:85)
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.getGroovyVersion(GroovySystemLoaderFactory.java:58)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.createClassInfoCleaningLoader(GroovySystemLoaderFactory.java:51)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.forClassLoader(GroovySystemLoaderFactory.java:34)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.executeInWorkerClassLoader(IsolatedClassloaderWorkerFactory.java:86)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.access$000(IsolatedClassloaderWorkerFactory.java:53)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1$1.execute(IsolatedClassloaderWorkerFactory.java:72)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:69)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:105)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:99)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
java.io.IOException: Stream closed
    at java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142)
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
    at java.io.DataInputStream.readFully(DataInputStream.java:195)
    at java.io.DataInputStream.readUTF(DataInputStream.java:609)
    at java.io.DataInputStream.readUTF(DataInputStream.java:564)
    at org.codehaus.groovy.reflection.GeneratedMetaMethod$DgmMethodRecord.loadDgmInfo(GeneratedMetaMethod.java:219)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerMethods(MetaClassRegistryImpl.java:200)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:107)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:85)
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.getGroovyVersion(GroovySystemLoaderFactory.java:58)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.createClassInfoCleaningLoader(GroovySystemLoaderFactory.java:51)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.forClassLoader(GroovySystemLoaderFactory.java:34)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.executeInWorkerClassLoader(IsolatedClassloaderWorkerFactory.java:86)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.access$000(IsolatedClassloaderWorkerFactory.java:53)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1$1.execute(IsolatedClassloaderWorkerFactory.java:72)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:69)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:105)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:99)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
java.io.IOException: Stream closed
    at java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67)
    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142)
    at java.io.FilterInputStream.read(FilterInputStream.java:133)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
    at java.io.DataInputStream.readFully(DataInputStream.java:195)
    at java.io.DataInputStream.readUTF(DataInputStream.java:609)
    at java.io.DataInputStream.readUTF(DataInputStream.java:564)
    at org.codehaus.groovy.reflection.GeneratedMetaMethod$DgmMethodRecord.loadDgmInfo(GeneratedMetaMethod.java:219)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerMethods(MetaClassRegistryImpl.java:200)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:107)
    at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:85)
    at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.getGroovyVersion(GroovySystemLoaderFactory.java:58)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.createClassInfoCleaningLoader(GroovySystemLoaderFactory.java:51)
    at org.gradle.api.internal.classloading.GroovySystemLoaderFactory.forClassLoader(GroovySystemLoaderFactory.java:34)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.executeInWorkerClassLoader(IsolatedClassloaderWorkerFactory.java:86)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory.access$000(IsolatedClassloaderWorkerFactory.java:53)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1$1.execute(IsolatedClassloaderWorkerFactory.java:72)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
    at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
    at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
    at org.gradle.workers.internal.IsolatedClassloaderWorkerFactory$1.execute(IsolatedClassloaderWorkerFactory.java:69)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:105)
    at org.gradle.workers.internal.DefaultWorkerExecutor$1.call(DefaultWorkerExecutor.java:99)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
    at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
jezikk82 commented 4 years ago
    at org.apache.etch.bindings.java.transport.DefaultDeliveryService.endcall(DefaultDeliveryService.java:211)
    at org.apache.etch.bindings.java.support.RemoteBase._endcall(RemoteBase.java:115)
    at de.bmw.idrive.RemoteBMWRemotingServer$_Async._end_rhmi_setResource(RemoteBMWRemotingServer.java:2423)
    at de.bmw.idrive.RemoteBMWRemotingServer.rhmi_setResource(RemoteBMWRemotingServer.java:500)
    at me.hufman.androidautoidrive.carapp.RHMIUtils.rhmi_setResourceCached(RHMIUtils.kt:23)
    at me.hufman.androidautoidrive.carapp.RHMIUtils.rhmi_setResourceCached(RHMIUtils.kt:15)
    at me.hufman.androidautoidrive.carapp.maps.MapApp.<init>(MapApp.kt:85)
    at me.hufman.androidautoidrive.MapService$start$$inlined$synchronized$lambda$1.invoke(MapService.kt:53)
    at me.hufman.androidautoidrive.MapService$start$$inlined$synchronized$lambda$1.invoke(MapService.kt:16)
    at me.hufman.androidautoidrive.CarThread.run(CarThread.kt:26)
jezikk82 commented 4 years ago

I compiled as mentioned above new version, however still don't work. Only plus is that the original connected app is working/connected but this app crash just after connecting / opening again. Any suggestions, how to solve the issue?

hufman commented 4 years ago

After confirming that the app/src/main/assets/carapplications folder has the right files, the next thing I'd recommend checking is that your build APK has those files. That gradle stacktrace appears to say that it failed to open a JAR somewhere in the process, so try clearing out the build directory and trying a full fresh build again. The carapplication files are only copied, no modifications in the build pipeline, so there shouldn't be any file differences between each stage.

My suspicion is that the Gradle build failed, and so it just reinstalled the previous build artifact and then showed the same MapApp error. Another clue is that the app's version number in the Android Settings will include a git hash, and that should have updated to the new version of the master branch (770101f).

jezikk82 commented 4 years ago

Finally I solved the issue.

Solution: I deleted the whole project in local comp, downloaded from Git, merged my changes, downloaded provided apks. After that the build process went fine without error and the APP is working in the car.

Thx for help.

hufman commented 4 years ago

I'm so happy to hear that! Thank you for helping debug it! I'd be interested to know what changes you are using, in case they could be merged for other people to use.

jezikk82 commented 4 years ago

About GMaps I made some investigations and adjustments to resolution, alignment, gmaps in maps or sat view, direction of zooming with the knob, etc. I tried to make PR some time back but you rejected it and we agreed to came back to it when you start work on maps module. I'm not a developer, so my change are hard-coded on the try&err approach :)