mapbox / mapbox-gl-native

Interactive, thoroughly customizable maps in native Android, iOS, macOS, Node.js, and Qt applications, powered by vector tiles and OpenGL
https://mapbox.com/mobile
Other
4.37k stars 1.33k forks source link

Android aar release not working #15995

Closed AliKhoshraftar closed 4 years ago

AliKhoshraftar commented 4 years ago

I build release aar with DISTRIBUTE tutorial and it successfully built. but when i import that aar in a sample project it fail to load mapbox with some different errors like soLoader with this error message :

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/soloader/SoLoader; at com.mapbox.mapboxsdk.module.loader.LibraryLoaderProviderImpl$SoLibraryLoader.load(LibraryLoaderProviderImpl.java:41) at com.mapbox.mapboxsdk.LibraryLoader.load(LibraryLoader.java:43) at com.mapbox.mapboxsdk.net.NativeConnectivityListener.<clinit>(NativeConnectivityListener.java:13) at com.mapbox.mapboxsdk.net.ConnectivityReceiver.instance(ConnectivityReceiver.java:43) at com.mapbox.mapboxsdk.Mapbox.getInstance(Mapbox.java:59) at com.example.sdkv4test.App.onCreate(App.java:11) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5877) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1690) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:173) at android.app.ActivityThread.main(ActivityThread.java:6698) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.soloader.SoLoader" on path: DexPathList[[zip file "/data/app/com.example.sdkv4test-zzpD2O1G2YoLSmxXGx2kXQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.sdkv4test-zzpD2O1G2YoLSmxXGx2kXQ==/lib/arm64, /system/lib64, /system/vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.mapbox.mapboxsdk.module.loader.LibraryLoaderProviderImpl$SoLibraryLoader.load(LibraryLoaderProviderImpl.java:41)  at com.mapbox.mapboxsdk.LibraryLoader.load(LibraryLoader.java:43)  at com.mapbox.mapboxsdk.net.NativeConnectivityListener.<clinit>(NativeConnectivityListener.java:13)  at com.mapbox.mapboxsdk.net.ConnectivityReceiver.instance(ConnectivityReceiver.java:43)  at com.mapbox.mapboxsdk.Mapbox.getInstance(Mapbox.java:59)  at com.example.sdkv4test.App.onCreate(App.java:11)  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5877)  at android.app.ActivityThread.-wrap1(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1690)  at android.os.Handler.dispatchMessage(Handler.java:105)  at android.os.Looper.loop(Looper.java:173)  at android.app.ActivityThread.main(ActivityThread.java:6698)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) 

and after implement Soloader dependency it failed with another error like :

2019-11-30 14:58:09.452 7742-7742/? E/SoLoader: couldn't find DSO to load: libmapbox-gl.so 2019-11-30 14:58:09.456 7742-7742/? E/Mbgl-LibraryLoader: Failed to load native shared library. java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libmapbox-gl.so at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:774) at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:627) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:565) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:513) at com.mapbox.mapboxsdk.module.loader.LibraryLoaderProviderImpl$SoLibraryLoader.load(LibraryLoaderProviderImpl.java:42) at com.mapbox.mapboxsdk.LibraryLoader.load(LibraryLoader.java:43) at com.mapbox.mapboxsdk.net.NativeConnectivityListener.<clinit>(NativeConnectivityListener.java:13) at com.mapbox.mapboxsdk.net.ConnectivityReceiver.instance(ConnectivityReceiver.java:43) at com.mapbox.mapboxsdk.Mapbox.getInstance(Mapbox.java:59) at com.example.sdkv4test.App.onCreate(App.java:11) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5877) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1690) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:173) at android.app.ActivityThread.main(ActivityThread.java:6698) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) 2019-11-30 14:58:09.457 7742-7742/? E/zygote64: No implementation found for void com.mapbox.mapboxsdk.net.NativeConnectivityListener.initialize() (tried Java_com_mapbox_mapboxsdk_net_NativeConnectivityListener_initialize and Java_com_mapbox_mapboxsdk_net_NativeConnectivityListener_initialize__) 2019-11-30 14:58:09.459 7742-7742/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.sdkv4test, PID: 7742 java.lang.UnsatisfiedLinkError: No implementation found for void com.mapbox.mapboxsdk.net.NativeConnectivityListener.initialize() (tried Java_com_mapbox_mapboxsdk_net_NativeConnectivityListener_initialize and Java_com_mapbox_mapboxsdk_net_NativeConnectivityListener_initialize__) at com.mapbox.mapboxsdk.net.NativeConnectivityListener.initialize(Native Method) at com.mapbox.mapboxsdk.net.NativeConnectivityListener.<init>(NativeConnectivityListener.java:27) at com.mapbox.mapboxsdk.net.ConnectivityReceiver.instance(ConnectivityReceiver.java:43) at com.mapbox.mapboxsdk.Mapbox.getInstance(Mapbox.java:59) at com.example.sdkv4test.App.onCreate(App.java:11) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5877) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1690) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:173) at android.app.ActivityThread.main(ActivityThread.java:6698) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)

So i don't know what is happening and why aar not working well. As i tried it wtih bintray and publish a version it failed with some another errors like telemetry or gestures. how it is possible to bundle all of them and make no need to re import that dependencies anymore ?

Steps to reproduce

  1. Clone Mapbox-gl-native
  2. Make some changes like images and http headers and change styles
  3. Make apackage with release build type as mentiond in destribution toturial.

Expected behavior

Initialize map without problem.

Actual behavior

Too many errors with different situations

Configuration

Android versions: 8.0.0 Device models:Xiaomi Mi mix , Huawei P6 , Samsung J7 Prime Mapbox SDK versions: 8.4.0

tobrun commented 4 years ago

Consuming a local aar, without a pom.xml, you can't resolve transitive dependencies. You will have to include them manually. That said, we advice you to use official releases.

caovanthanh203 commented 4 years ago

This issue is duplicate and I solved it in #14428