Issue with vélib application (bike sharing in Paris)

Hi there, since roughly a week, the Vélib application is not working properly on /e/OS
I don’t think it was related to an update of /e/OS itself and since I have automatic updates, I’m not sure whether it followed an update of the app itself…
The app starts and displays its interface but its main feature is a map (using mapbox) showing the stations, number of bikes and places, and this does not work in the sense that the map background flashes in and out of existence all the time and none of the stations are displayed.
Could anyone confirm whether they also see this behavior on /e/OS or not?
Pointers to potential source of the issue and solutions are obviously welcome too.

Also, somewhat related: how do I post this on the French section of the forum? For some reason I don’t seem to have access rights…

Detail about system and app:

  • /e/OS 3.0.4-s20250711508139
  • Vélib app: 8.0.3 (com.paris.velib)

One would need to join the French group /e/OS community.

This is a Search for logcat logcat is the process to collect a log for such events but many of the threads found may give insight on similar problems with other apps.

First step when apps do something like this turn off all Advanced privacy and restart. You might also clear the app cache.

Tested, the app finds (reported available) bikes and renders map ok from UK. Tested on a15. Will your device allow upgrade from Android 12 (S), a no longer supported Android version ?

Tested Version 8.0.3
com.paris.velib

1 Like

One would need to join the French group /e/OS community.

ah, nice, thanks!

This is a Search for logcat logcat is the process to collect a log for such events but many of the threads found may give insight on similar problems with other apps.

OK, I’ll have a look at logcat!

First step when apps do something like this turn off all Advanced privacy and restart. You might also clear the app cache.

Fair, though I’m not super fond of the idea… I already tried just remove cache, then all data, then uninstalling and reinstalling the app without removing advanced privacy features but that was not sufficient.

Tested, the app finds (reported available) bikes and renders map ok from UK. Tested on a15.

Ah, thank you for that!
This was with advanced privacy features on?

Will your device allow upgrade from Android 12 (S), a no longer supported Android version ?

Yes, as far as I know, /e/OS should be upgraded to A13 for Teracube soon ™

Trackers blocking only for my test

I guess the suggestion was about “test with AP off” then you learn which part of AP might be an issue. Once identified you can decide or ask what action one might take.

It is hard for a location based app to work with false location!

Trackers blocking only for my test

ok, that’s the only thing I’m using too, so that’s good

So the output of adb logcat | grep velib is:

08-09 14:26:44.368  1158  2475 I ActivityTaskManager: START u10 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.paris.velib/.MainActivity bnds=[87,852][269,1070]} from uid 10069
08-09 14:26:44.439 31905 32049 D libMEOW : applied 1 plugins for [com.paris.velib]:
08-09 14:26:44.487 31905 31931 D EventGDTLogger: Session Event: { ... }
08-09 14:26:44.944 31905 32048 D libMEOW : applied 1 plugins for [com.paris.velib]:
08-09 14:26:44.995 31905 31905 D libMEOW : applied 1 plugins for [com.paris.velib]:
08-09 14:26:44.997 31905 32058 D libMEOW : applied 1 plugins for [com.paris.velib]:
08-09 14:26:45.206  1158  1181 I ActivityTaskManager: Displayed com.paris.velib/.MainActivity: +829ms
08-09 14:26:45.402  1591  1608 V PhoneInterfaceManager: [PhoneIntfMgr] Unknown package: com.paris.velib
08-09 14:26:45.434  4690 21552 D LocationManager: bound by: GetServiceRequest[...]
08-09 14:26:45.458  4690 21552 D LocationManager: getLastLocationWithReceiver by com.paris.velib
08-09 14:26:45.465  4690 21551 D MeasurementService: bound by: GetServiceRequest[MEASUREMENT, packageName="com.paris.velib", gmsVersion=XXXXXX, scopes=[], extras=Bundle[{}], defaultFeatures=[], apiFeatures=[], supportsConnectionInfo=true]
08-09 14:26:45.475  4690 21552 D LocationManager: registerLocationUpdates (callback) by com.paris.velib
08-09 14:26:45.492  4690  4690 D LocationManager: updateBinderRequest ClientIdentity[XXXX,com.paris.velib] Request[@1000ms HIGH_ACCURACY, minUpdateDistance=0.1m, waitForAccurateLocation]
08-09 14:26:45.587  1158  2476 W InputManager-JNI: Input channel object 'f8efc6b Splash Screen com.paris.velib (client)' was disposed without first being removed with the input manager!
08-09 14:26:45.707  4690 21552 D MeasurementService: sendEvent(com.google.android.gms.measurement.internal.EventParcel@b2ef622) for AppMetadata[com.paris.velib]
08-09 14:26:45.713  4690 21552 D MeasurementService: sendCurrentScreen(-3329241279220074822, null, MainActivity, com.paris.velib)
08-09 14:26:49.785  4690 21550 D LocationManager: unregisterLocationUpdates (callback) by com.paris.velib
08-09 14:26:49.832  4690 21552 D MeasurementService: sendEvent(com.google.android.gms.measurement.internal.EventParcel@fb37e70) for AppMetadata[com.paris.velib]
08-09 14:26:49.835  4690  8346 D MeasurementService: sendCurrentScreen(0, null, null, com.paris.velib)
08-09 14:26:49.873  1158  1184 I ActivityManager: Killing 31905:com.paris.velib/u10a165 (adj 905): remove task
08-09 14:26:50.000  1158  1673 I WindowManager: WIN DEATH: Window{4b0253f u10 com.paris.velib/com.paris.velib.MainActivity}
08-09 14:26:50.000  1158  1673 W InputManager-JNI: Input channel object '4b0253f com.paris.velib/com.paris.velib.MainActivity (client)' was disposed without first being removed with the input manager!

from the time the app starts to time I closed it… it does not seem very intersting so I looked at mapbox, which gives:

08-09 14:33:10.838 32223 32265 E CronetProviderInstaller:       at com.mapbox.common.module.cronet.LazyEngineKt.findCronetProvider(Unknown Source:33)
08-09 14:33:10.838 32223 32265 E CronetProviderInstaller:       at com.mapbox.common.module.cronet.LazyEngine.<init>(Unknown Source:18)
08-09 14:33:10.838 32223 32265 E CronetProviderInstaller:       at com.mapbox.common.module.cronet.CronetClientDetail.<init>(Unknown Source:21)
08-09 14:33:10.838 32223 32265 E CronetProviderInstaller:       at com.mapbox.common.PlatformHttpService.createPlatformHttpService(Unknown Source:13)
08-09 14:41:29.032 32572 32674 W Mapbox  : [maps-core]: {}[Style]: Source 'COMPOSE_SOURCE_ID_geojson_55bc4208-96d2-4aca-acef-0c92cb8fb611' missing for layer 'euroSymbolLayer'
08-09 14:41:29.055 32572 32572 W Mapbox  : [maps-core]: Failed to get style property type because layer bike_lane is not in style
08-09 14:41:29.055 32572 32572 E Mapbox  : [maps-android\Mbgl-LayerUtils]: Layer type: null unknown.
08-09 14:41:29.055 32572 32572 W Mapbox  : [maps-core]: Failed to get style property type because layer cycleway is not in style
08-09 14:41:29.055 32572 32572 E Mapbox  : [maps-android\Mbgl-LayerUtils]: Layer type: null unknown.
08-09 14:41:29.234 32572 32572 W Mapbox  : [common\HTTP]: HTTP/3 will not be available: Cannot find a valid Cronet provider. In order to
08-09 14:41:29.234 32572 32572 W Mapbox  : enable HTTP/3 in the Mapbox SDKs, it's necessary that the application depends on
08-09 14:41:29.234 32572 32572 W Mapbox  : a valid Cronet provider. Valid providers include the Google Play Services
08-09 14:41:29.234 32572 32572 W Mapbox  : provider (from "com.google.android.gms:play-services-cronet"), in which case
08-09 14:41:29.234 32572 32572 W Mapbox  : Cronet will be used from Play Services, or you may choose to embed Cronet with
08-09 14:41:29.234 32572 32572 W Mapbox  : your application by depending on "org.chromium.net:cronet-embedded".
08-09 14:41:29.428 32572 32572 W Mapbox  : [maps-core]: Failed to get style property type because layer bike_lane is not in style
08-09 14:41:29.431 32572 32572 E Mapbox  : [maps-android\Mbgl-LayerUtils]: Layer type: null unknown.
08-09 14:41:29.432 32572 32572 W Mapbox  : [maps-core]: Failed to get style property type because layer cycleway is not in style
08-09 14:41:29.432 32572 32572 E Mapbox  : [maps-android\Mbgl-LayerUtils]: Layer type: null unknown.

which might be more relevant? Don’t know what to do with it, though…

1 Like

that “CronetProviderInstaller” with “at com.mapbox.comon..” → that is part of a stacktrace where it’s most useful to see the header line. Can you quote it fully? like this in a recent cronet stacktrace.

Ah right, here are two adjacent stacktraces (I also included a few lines around them):

08-12 09:51:31.928  5464  5510 W com.paris.veli: Unsupported class loader
08-12 09:51:32.132   643  1313 E HWComposer: getSupportedContentTypes: getSupportedContentTypes failed for display 0: Unsupported (8)
08-12 09:51:32.148  5464  5510 W com.paris.veli: Unsupported class loader
08-12 09:51:32.149  5464  5545 E ion     : ioctl c0044901 failed with code -1: Invalid argument
08-12 09:51:32.149  1158  2208 E system_server: Invalid class loader spec: =UnsupportedClassLoaderContext=
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller: Unable to read Cronet version from the Cronet module 
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller: java.lang.ClassNotFoundException: Didn't find class "org.chromium.net.impl.ImplVersion" on path: DexPathList[[zip file "/system/priv-app/GmsCore/GmsCore.apk"],nativeLibraryDirectories=[/system/priv-app/GmsCore/lib/arm64, /system/priv-app/GmsCore/GmsCore.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at com.google.android.gms.net.CronetProviderInstaller.zzc(Unknown Source:68)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at com.google.android.gms.net.PlayServicesCronetProvider.tryToInstallCronetProvider(Unknown Source:5)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at com.google.android.gms.net.PlayServicesCronetProvider.isEnabled(Unknown Source:0)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at com.mapbox.common.module.cronet.LazyEngineKt.findCronetProvider(Unknown Source:33)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at com.mapbox.common.module.cronet.LazyEngine.<init>(Unknown Source:18)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at com.mapbox.common.module.cronet.CronetClientDetail.<init>(Unknown Source:21)
08-12 09:51:32.149  5464  5510 E CronetProviderInstaller:       at com.mapbox.common.PlatformHttpService.createPlatformHttpService(Unknown Source:13)
08-12 09:51:32.149  1158  2208 E PackageDexUsage: Unsupported context?
08-12 09:51:32.153  5464  5547 W DynamiteModule: IDynamite loader version = 2, no high precision latency measurement.
08-12 09:51:32.153  5464  5547 W DynamiteModule: IDynamite loader version = 2
08-12 09:51:32.156  5464  5547 W com.paris.veli: Unsupported class loader
08-12 09:51:27.391 30960 30960 W         : (5)[30960:kworker/u16:9]<I>CTS-Core ESD protection work
08-12 09:51:27.452     0     0 E         : (5)[608:allocator@4.0-s][ION][ion_dbg] alloc_pages order=4 cache=0
08-12 09:51:32.332  5464  5567 W Mapbox  : [maps-core]: {}[Style]: Source 'COMPOSE_SOURCE_ID_geojson_b62385d6-9da2-4942-8496-ab624e09e3f0' missing for layer 'euroSymbolLayer'
08-12 09:51:32.357  5464  5464 W Mapbox  : [maps-core]: Failed to get style property type because layer bike_lane is not in style
08-12 09:51:32.358  5464  5464 E Mapbox  : [maps-android\Mbgl-LayerUtils]: Layer type: null unknown.
08-12 09:51:32.358  5464  5464 W Mapbox  : [maps-core]: Failed to get style property type because layer cycleway is not in style
08-12 09:51:32.358  5464  5464 E Mapbox  : [maps-android\Mbgl-LayerUtils]: Layer type: null unknown.
08-12 09:51:32.361  1158  2477 W ServiceManager: Permission failure: android.permission.HIGH_SAMPLING_RATE_SENSORS from uid=1010165 pid=5464
08-12 09:51:32.382  5464  5547 W com.paris.veli: Unsupported class loader
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller: Unable to read Cronet version from the Cronet module 
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller: java.lang.ClassNotFoundException: Didn't find class "org.chromium.net.impl.ImplVersion" on path: DexPathList[[zip file "/system/priv-app/GmsCore/GmsCore.apk"],nativeLibraryDirectories=[/system/priv-app/GmsCore/lib/arm64, /system/priv-app/GmsCore/GmsCore.apk!/lib/arm64-v8a, /system/lib64, /system/system_ext/lib64]]
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller:       at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller:       at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller:       at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller:       at com.google.android.gms.net.CronetProviderInstaller.zzc(Unknown Source:68)
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller:       at com.google.android.gms.net.zza.run(Unknown Source:4)
08-12 09:51:32.383  5464  5547 E CronetProviderInstaller:       at java.lang.Thread.run(Thread.java:920)
08-12 09:51:32.383  1158  2477 E system_server: Invalid class loader spec: =UnsupportedClassLoaderContext=
08-12 09:51:32.383  1158  2477 E PackageDexUsage: Unsupported context?

both slightly different callstack in the beginning, but hitting Unable to read Cronet version from the Cronet module → as in the linked thread. As the first goes through com.mapbox.common classes I assume any following mapbox errors/warnings can be attributed.

What’s cronet?

Cronet is the Chromium network stack made available to Android apps as a library

microG builds cronet (pushed to maven) and it doesn’t seem like /e/OS is shipping something old - so the issue

CronetProviderInstaller: Unable to read Cronet version from the Cronet module

should be filed at its tracker. Maybe the MERGED_CLASSES constant needs to just include that CronetProviderInstaller class?

Lineage tracks cronet as external lib, but unsure if that could satisfy that call.

OK, thanks, I’ll raise an issue there, then!

oversaw you reported for an Android 12 build, sorry for that. For me too the map draws after an initial install (v.3.1 / A15). Either cronet wants to update because of this or the version check is inside newer releases. Could end up at “please update” in the microG issue tracker to manage expectations

Could end up at “please update” in the microG issue tracker to manage expectations

Is there a way to upgrade microG without upgrading /e/OS?

no. While there’s infra now to update system apps outside full releases, microg wasn’t ever in the testing conf json to gauge if that’s planned.

But back to that error - in the co-thread for that pool app I myself ran into the same cronet error message on a very current microG and /e/OS, also through a tryToInstallCronetProvider() function call.

But back to that error - in the co-thread for that pool app I myself ran into the same cronet error message on a very current microG and /e/OS, also through a tryToInstallCronetProvider() function call.

Ow, I somehow missed your reply… you mean that you saw the issue with a working app? So it would be unrelated?

BTW: could you update this bug report, with a reproducer on up-to-date microG, then?

it’s the other way round: I have a reproducer on very current v3.1 /e/OS (0.3.8 microG) for the pool app, but I haven’t for your velib app.

1 Like

So based on all your feedback, should I open an issue on the /e/OS gitlab tracker? It seems like this might be more of an issue for them to fix and investigate rather than for microG?

  • in my case, they need to upgrade emerald to A13 or at least update microG
  • in your case, check whether this is indeed a microG issue or whether they are doing something wrong?

for the pool app it is indeed a microG issue to not be able to handle the “CronetProviderInstaller” class (there’s no right or wrong here, just missing coverage). Your case would benefit too if it be able to - but by the velib apps logic you woulnd’t end up there with a more current microG, that’s the difference. Imo your bugrep can stand as-is

1 Like

I just updated to 3.1.1 with MicroG 0.3.8 but it doesn’t seem to solve the issue… I still have the same cronet issue…

FYI, the app just started working again… with 3.1.1 and MicroG 0.3.8, no idea what happened.
The last update was September 11, not sure whether it’s what solved it and I did not notice right away or if it’s unrelated.
Also mentioning that there is a workaround for a similar issue with another app that might help other people: [LIST] Banking Apps on /e/OS - #480 by shulx

1 Like