-
Notifications
You must be signed in to change notification settings - Fork 555
Description
Description
It seems that MAUI incorrectly packs JAR dependencies into .nupkg
(if adding with AndroidMavenLibrary
).
The dependencies that provide AARs works fine. If adding the project locally from the folder, it also works fine.
Steps to Reproduce
- Add JAR library to Android Binding project (in the current example:
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm
) - Build
sdk-maui
project (just -f sdk-maui/justfile build-android
) - Create a release package (
just -f sdk-maui/justfile release
) - Add the package to
quickstart-maui
project (just -f quickstart-maui/justfile add-local-release
) - Run the
quickstart-maui
project (just -f quickstart-maui/justfile run-android
)
Expected result: The app is working, white screen is displayed
Actual result: The app crashes with the following error:
java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/serialization/json/Json;
Link to public reproduction project repository
https://github.com/pavel-kuznetsov-hypertrack/maui-jar-issue-repro
Version with bug
9.0.14 SR1.4
Is this a regression from previous behavior?
Not sure, did not test other versions
Last version that worked well
Unknown/Other
Affected platforms
Android
Affected platform versions
No response
Did you find any workaround?
If you uncomment
<AndroidMavenLibrary Include="org.jetbrains.kotlinx:kotlinx-serialization-json-jvm" Version="1.3.3" Bind="false" Condition="'$(TargetFramework)' == 'net9.0-android'" />
line in quickstart-maui/QuickstartMaui.csproj
and build the project again, the app will work correctly.
Relevant log output
Process: com.mycompany.myapp, PID: 8497
java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/serialization/json/Json;
at android.app.ActivityThread.installProvider(ActivityThread.java:8297)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7807)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7488)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2416)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
Caused by: androidx.startup.StartupException: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/serialization/json/Json;
at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:187)
at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)
at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)
at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2644)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2613)
at android.app.ActivityThread.installProvider(ActivityThread.java:8292)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7807)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7488)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2416)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/serialization/json/Json;
at com.hypertrack.sdk.android.JsonKt.tryFromJsonObjectString(Json.kt:172)
at com.hypertrack.sdk.android.runtime.LocationServicesKt.registerLocationServices(LocationServices.kt:37)
at com.hypertrack.sdk.android.runtime.LocationServicesKt.registerLocationServices$default(LocationServices.kt:22)
at com.hypertrack.sdk.android.HyperTrack.registerLocationService(HyperTrack.kt:391)
at com.hypertrack.sdk.android.location.services.GoogleLocationServices.<init>(GoogleLocationServices.kt:37)
at com.hypertrack.sdk.android.location.services.HyperTrackGoogleLocationServicesInitilalizer.create(HyperTrackGoogleLocationServicesInitilalizer.kt:8)
at com.hypertrack.sdk.android.location.services.HyperTrackGoogleLocationServicesInitilalizer.create(HyperTrackGoogleLocationServicesInitilalizer.kt:7)
at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:180)
at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)
at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)
at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2644)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2613)
at android.app.ActivityThread.installProvider(ActivityThread.java:8292)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7807)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7488)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2416)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)
Caused by: java.lang.ClassNotFoundException: Didn't find class "kotlinx.serialization.json.Json" on path: DexPathList[[zip file "/data/app/~~bD42s7R0hEDzMugXpIetlA==/com.mycompany.myapp-dS-OB30uQOZqSyMb4Jp0Ow==/base.apk"],nativeLibraryDirectories=[/data/app/~~bD42s7R0hEDzMugXpIetlA==/com.mycompany.myapp-dS-OB30uQOZqSyMb4Jp0Ow==/lib/arm64, /data/app/~~bD42s7R0hEDzMugXpIetlA==/com.mycompany.myapp-dS-OB30uQOZqSyMb4Jp0Ow==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:637)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at com.hypertrack.sdk.android.JsonKt.tryFromJsonObjectString(Json.kt:172)
at com.hypertrack.sdk.android.runtime.LocationServicesKt.registerLocationServices(LocationServices.kt:37)
at com.hypertrack.sdk.android.runtime.LocationServicesKt.registerLocationServices$default(LocationServices.kt:22)
at com.hypertrack.sdk.android.HyperTrack.registerLocationService(HyperTrack.kt:391)
at com.hypertrack.sdk.android.location.services.GoogleLocationServices.<init>(GoogleLocationServices.kt:37)
at com.hypertrack.sdk.android.location.services.HyperTrackGoogleLocationServicesInitilalizer.create(HyperTrackGoogleLocationServicesInitilalizer.kt:8)
at com.hypertrack.sdk.android.location.services.HyperTrackGoogleLocationServicesInitilalizer.create(HyperTrackGoogleLocationServicesInitilalizer.kt:7)
at androidx.startup.AppInitializer.doInitialize(AppInitializer.java:180)
at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:238)
at androidx.startup.AppInitializer.discoverAndInitialize(AppInitializer.java:206)
at androidx.startup.InitializationProvider.onCreate(InitializationProvider.java:45)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2644)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2613)
at android.app.ActivityThread.installProvider(ActivityThread.java:8292)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7807)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7488)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2416)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8705)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886)