B4A Library Unity Ads Library

Original library: https://github.com/Unity-Technologies/unity-ads-android
Based on Unity Ads Library v4.14.2 (16 Apr 2025).
Banner, Interstitial and Rewarded Video.

If you have problem compiling app please check THIS post.

app-ads.txt: https://docs.unity.com/ads/en-us/manual/app-ads-txt

Tutorial for AdMob mediation: AdMob mediation - UnityAds (not tested).


UnityAds

Author:
Author: Unity - B4a Wrapper: Pendrush
Version: 4.91
  • UnityAdsBanner
    • Events:
      • OnBannerClick
      • OnBannerFailedToLoad (Error As String)
      • OnBannerLeftApplication
      • OnBannerLoaded
      • OnBannerShown
      • OnInitializationComplete
      • OnInitializationFailed (Error As String)
    • Functions:
      • BringToFront
      • Initialize (arg1 As String)
      • InitializeBanner (EventName As String, GameID As String, TestMode As Boolean, PlacementID As String)
        Initializes banner 320x50
        EventName - Event name
        GameID - The Unity Game ID for your Project, located in the developer dashboard.
        TestMode - When set to true, only test ads display.
        PlacementID - The Placement ID, located on the developer dashboard.
        UnityAdsBanner.InitializeBanner("BannerAd", "3054608", True, "banner")
        Activity.AddView(UnityAdsBanner, 100%x/2-160dip, 0, 320dip, 50dip)
      • InitializeBanner300x250 (EventName As String, GameID As String, TestMode As Boolean, PlacementID As String)
        Initializes banner 300x250
        EventName - Event name
        GameID - The Unity Game ID for your Project, located in the developer dashboard.
        TestMode - When set to true, only test ads display.
        PlacementID - The Placement ID, located on the developer dashboard.
        UnityAdsBanner.InitializeBanner300x250("BannerAd", "3054608", True, "banner")
        Activity.AddView(UnityAdsBanner, 100%x/2-150dip, 0, 300dip, 250dip)
      • InitializeBanner300x300 (EventName As String, GameID As String, TestMode As Boolean, PlacementID As String)
        Initializes banner 300x300
        EventName - Event name
        GameID - The Unity Game ID for your Project, located in the developer dashboard.
        TestMode - When set to true, only test ads display.
        PlacementID - The Placement ID, located on the developer dashboard.
        UnityAdsBanner.InitializeBanner300x300("BannerAd", "3054608", True, "banner")
        Activity.AddView(UnityAdsBanner, 100%x/2-150dip, 0, 300dip, 300dip)
      • InitializeBanner450x450 (EventName As String, GameID As String, TestMode As Boolean, PlacementID As String)
        Initializes banner 450x450
        EventName - Event name
        GameID - The Unity Game ID for your Project, located in the developer dashboard.
        TestMode - When set to true, only test ads display.
        PlacementID - The Placement ID, located on the developer dashboard.
        UnityAdsBanner.InitializeBanner450x450("BannerAd", "3054608", True, "banner")
        Activity.AddView(UnityAdsBanner, 100%x/2-225dip, 0, 450dip, 450dip)
      • Invalidate
      • Invalidate2 (arg0 As android.graphics.Rect)
      • Invalidate3 (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int)
      • IsInitialized As Boolean
      • LoadBanner
        Load banner Ad.
      • onInitializationComplete
      • onInitializationFailed (error As com.unity3d.ads.UnityAds.UnityAdsInitializationError, message As String)
      • RemoveView
      • RequestFocus As Boolean
      • SendToBack
      • SetBackgroundImage (arg0 As android.graphics.Bitmap) As BitmapDrawable
      • SetColorAnimated (arg0 As Int, arg1 As Int, arg2 As Int)
      • SetLayout (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int)
      • SetLayoutAnimated (arg0 As Int, arg1 As Int, arg2 As Int, arg3 As Int, arg4 As Int)
      • SetVisibleAnimated (arg0 As Int, arg1 As Boolean)
    • Properties:
      • Background As android.graphics.drawable.Drawable
      • Color As Int [write only]
      • Enabled As Boolean
      • Height As Int
      • Left As Int
      • Padding As Int()
      • Parent As Object [read only]
      • Tag As Object
      • Top As Int
      • Visible As Boolean
      • Width As Int
  • UnityAdsInterstitial
    • Events:
      • OnUnityAdsAdLoaded (PlacementID As String)
      • OnUnityAdsFailedToLoad (Error As String)
      • OnUnityAdsShowClick (PlacementID As String)
      • OnUnityAdsShowComplete (PlacementID As String, State As String)
      • OnUnityAdsShowFailure (Error As String)
      • OnUnityAdsShowStart (PlacementID As String)
    • Functions:
      • InitializeInterstitial (EventName As String, GameID As String, TestMode As Boolean, PlacementID As String)
        EventName - Event name
        GameID - The Unity Game ID for your Project, located in the developer dashboard.
        TestMode - When set to true, only test ads display.
        PlacementID - The Placement ID, located on the developer dashboard.
        UnityAdsInterstitial.InitializeInterstitial("InterstitialAds", "14851", True, "rewardedVideo")
      • IsInitialized As Boolean
      • LoadAd
        Load Interstitial/Rewarded Ad.
      • ShowAd
        Show Ad

Add this code to main:
340758:
    #MultiDex: True
    #AdditionalJar: androidx.asynclayoutinflater:asynclayoutinflater
    #AdditionalJar: androidx.collection:collection
    #AdditionalJar: androidx.concurrent:concurrent-futures
    #AdditionalJar: androidx.coordinatorlayout:coordinatorlayout
    #AdditionalJar: androidx.cursoradapter:cursoradapter
    #AdditionalJar: androidx.datastore:datastore
    #AdditionalJar: androidx.documentfile:documentfile
    #AdditionalJar: androidx.fragment:fragment
    #AdditionalJar: androidx.interpolator:interpolator
    #AdditionalJar: androidx.legacy:legacy-support-core-ui
    #AdditionalJar: androidx.legacy:legacy-support-core-utils
    #AdditionalJar: androidx.lifecycle:lifecycle-common
    #AdditionalJar: androidx.lifecycle:lifecycle-livedata
    #AdditionalJar: androidx.lifecycle:lifecycle-livedata-core
    #AdditionalJar: androidx.lifecycle:lifecycle-process
    #AdditionalJar: androidx.lifecycle:lifecycle-runtime
    #AdditionalJar: androidx.lifecycle:lifecycle-runtime-ktx
    #AdditionalJar: androidx.lifecycle:lifecycle-service
    #AdditionalJar: androidx.lifecycle:lifecycle-viewmodel
    #AdditionalJar: androidx.lifecycle:lifecycle-viewmodel-ktx
    #AdditionalJar: androidx.lifecycle:lifecycle-viewmodel-savedstate
    #AdditionalJar: androidx.localbroadcastmanager:localbroadcastmanager
    #AdditionalJar: androidx.print:print
    #AdditionalJar: androidx.profileinstaller:profileinstaller
    #AdditionalJar: androidx.sqlite:sqlite
    #AdditionalJar: androidx.sqlite:sqlite-framework
    #AdditionalJar: androidx.work:work-runtime
    #AdditionalJar: androidx.work:work-runtime-ktx
    #AdditionalJar: androidx.webkit:webkit
    #AdditionalJar: com.google.android.gms:play-services-cronet
    #AdditionalJar: com.google.android.gms:play-services-base
    #AdditionalJar: com.google.android.gms:play-services-basement
    #AdditionalJar: com.google.android.gms:play-services-tasks
    #AdditionalJar: com.google.protobuf:protobuf-java-lite
    #AdditionalJar: com.google.protobuf:protobuf-kotlin-lite
    #AdditionalJar: org.chromium.net:cronet-api
    #AdditionalJar: room-common-2.2.5
    #AdditionalJar: room-runtime-2.2.5.aar


Add this in your manifest:
B4X:
AddManifestText(<queries>
        <intent>
            <action android:name="com.attribution.REFERRAL_PROVIDER" />
        </intent>
    </queries>)

AddApplicationText(<activity
            android:name="com.unity3d.services.ads.adunit.AdUnitActivity"
            android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
            android:exported="false"
            android:hardwareAccelerated="true"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity
            android:name="com.unity3d.services.ads.adunit.AdUnitTransparentActivity"
            android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
            android:exported="false"
            android:hardwareAccelerated="true"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
        <activity
            android:name="com.unity3d.services.ads.adunit.AdUnitTransparentSoftwareActivity"
            android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
            android:exported="false"
            android:hardwareAccelerated="false"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
        <activity
            android:name="com.unity3d.services.ads.adunit.AdUnitSoftwareActivity"
            android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
            android:exported="false"
            android:hardwareAccelerated="false"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <activity
            android:name="com.unity3d.ads.adplayer.FullScreenWebViewDisplay"
            android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
            android:exported="false"
            android:hardwareAccelerated="true"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
        <provider
            android:name="androidx.startup.InitializationProvider"
            android:authorities="${applicationId}.androidx-startup" >
            <meta-data
                android:name="androidx.lifecycle.ProcessLifecycleInitializer"
                android:value="androidx.startup" />
            <meta-data
                android:name="com.unity3d.services.core.configuration.AdsSdkInitializer"
                android:value="androidx.startup" />
        </provider>)


Versions:

v4.89

  • Fixed bug in library: when you show banner once and close page/activity, you are not able to show banner again.
  • Added missing permission: android.permission.ACCESS_ADSERVICES_AD_ID.
  • Updated example app.
  • OkHttp library need to be included in project, check example app.

v4.90
  • Added new banners: 300x250, 300x300 and 450x450.
  • Updated example app.

v4.91
  • Update for original library. Changelog.
  • Updated example app (Manifest changes).

Download library from: https://mega.nz/file/UcwwnDDY#IhKJrDeGOkC4BdHJMEPEKlCZlifRxifaUMFrskWfdvk
 

Attachments

  • UnityAdsExample.zip
    5.6 KB · Views: 7
Last edited:

Schakalaka

Active Member
Licensed User
Longtime User
hello, thank for your reply-.

This is my configuration,

1686135481386.png


1686135582915.png


1686135737502.png



the app start,
but also return this error and crash.
this happend when use the last unity sdk aar file, so i have think that this can cause the problem



B4X:
Logger connesso a: RZCT917L7TV
--------- beginning of main
*** Service (starter) Create ***
** Service (starter) Start **
** Activity (main) Create (first time) **
** Activity (main) Resume **
*** Service (firebasemessaging) Create ***
** Service (firebasemessaging) Start **
*** Receiver (httputils2service) Receive (first time) ***
1
** Activity (main) Pause, UserClosed = false **
** Activity (act_home) Create (first time) **
java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/coroutines/CoroutineExceptionHandler;
    at com.unity3d.services.core.di.ServiceProvider$initialize$1.invoke(ServiceProvider.kt:149)
    at com.unity3d.services.core.di.ServiceProvider$initialize$1.invoke(ServiceProvider.kt:40)
    at com.unity3d.services.core.di.ServicesRegistryKt.registry(ServicesRegistry.kt:107)
    at com.unity3d.services.core.di.ServiceProvider.initialize(ServiceProvider.kt:40)
    at com.unity3d.services.core.di.ServiceProvider.<clinit>(ServiceProvider.kt:35)
    at com.unity3d.services.core.misc.Utilities.getService(Utilities.java:212)
    at com.unity3d.services.core.misc.Utilities.getService(Utilities.java:216)
    at com.unity3d.services.ads.UnityAdsImplementation.<init>(UnityAdsImplementation.java:39)
    at com.unity3d.services.ads.UnityAdsImplementation.getInstance(UnityAdsImplementation.java:45)
    at com.unity3d.ads.UnityAds.isInitialized(UnityAds.java:169)
    at com.pendrush.unityads.wrapper.UnityAdsWrap$UnityAdsInterstitialWrap.InitializeInterstitial2(UnityAdsWrap.java:137)
    at com.pendrush.unityads.wrapper.UnityAdsWrap$UnityAdsInterstitialWrap.InitializeInterstitial(UnityAdsWrap.java:132)
    at com.clickandclaimbitcoin.android.act_home$ResumableSub_Activity_Create.resume(act_home.java:604)
    at com.clickandclaimbitcoin.android.act_home._activity_create(act_home.java:504)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
    at com.clickandclaimbitcoin.android.act_home.afterFirstLayout(act_home.java:105)
    at com.clickandclaimbitcoin.android.act_home.access$000(act_home.java:17)
    at com.clickandclaimbitcoin.android.act_home$WaitForLayout.run(act_home.java:83)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:226)
    at android.os.Looper.loop(Looper.java:313)
    at android.app.ActivityThread.main(ActivityThread.java:8757)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.lang.ClassNotFoundException: kotlinx.coroutines.CoroutineExceptionHandler
    ... 31 more
** Activity (act_home) Resume **
** Activity (act_home) Pause, UserClosed = true **

thank you
 

Pendrush

Well-Known Member
Licensed User
Longtime User
From version 4.5.0 UnityAds use Kotlin and Kotlin Corutines... Kotlin coroutines containing more then 10 dependecies...
Like: Kotlinx Coroutines Core, Kotlinx Coroutines Android, Kotlinx Coroutines JDK 8, Kotlinx Coroutines Reactive, Kotlinx Coroutines Reactor...
It's a nightmare to get all to work properly in B4A. Also UnityAds depend on OkHTTP and Okio libraries, and these also use Kotlin... I will try to make it to work, but without any promises.
 

melonZgz

Active Member
Licensed User
Longtime User
I'm sorry but I can't get it to work. I've updated it to the 4.85 and now I can't compile. I've instaled all the SDK dependencies and I have a problem with datastore:
This is the error I get when compiling the example provided:

B4X:
Error in c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex:
Type androidx.datastore.core.Actual_jvmKt is defined multiple times: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex, c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-jvm\1.1.3\datastore-core-jvm-1.1.3.zip:classes.dex
Compilation failed
Exception in thread "main" java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1269)
    at com.android.tools.r8.D8.main(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:5)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex
    at Version.fakeStackEntry(Version_8.3.37.java:0)
    at com.android.tools.r8.Q.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:5)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:244)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:90)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:909)
    at com.android.tools.r8.internal.po.b(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:99)
    at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1041)
    at com.android.tools.r8.D8.b(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:514)
    at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1076)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1256)
    ... 1 more
Caused by: com.android.tools.r8.internal.h: Type androidx.datastore.core.Actual_jvmKt is defined multiple times: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex, c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-jvm\1.1.3\datastore-core-jvm-1.1.3.zip:classes.dex
    at com.android.tools.r8.internal.X30.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:346)
    at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:232)
    at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:91)
    at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2056)
    at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:32)
    at com.android.tools.r8.graph.q4$a.d(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:6)
    at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:264)
    at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:222)
    at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:219)
    at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:809)
    at com.android.tools.r8.D8.d(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:212)
    at com.android.tools.r8.D8.c(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:163)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:906)
    ... 6 more
 

melonZgz

Active Member
Licensed User
Longtime User
The problems becomes whenever I add this line:

B4X:
    #AdditionalJar: androidx.datastore:datastore

I create a new project, add this line and it won't compile (same error)

If I remove the line it compiles ok, and runs, but when showing an ad, the app crashes
Are you using the recommended SDK: https://www.b4x.com/b4a.html

I did a new install of everything some weeks ago. I'll try in another computer tomorrow...
 
Work as expected here (example app from post #1).

View attachment 162685View attachment 162686
I used the site's own SDK with the sample source but the

error Error in d:\sdk_update\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex:
Type androidx.datastore.core.Actual_jvmKt is defined multiple times: d:\sdk_update\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex, d:\sdk_update\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-jvm\1.1.3\datastore-core-jvm-1.1.3.zip:classes.dex
Compilation failed
Exception in thread "main" java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: d:\sdk_update\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex
at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1269)
at com.android.tools.r8.D8.main(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:5)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: d:\sdk_update\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex
at Version.fakeStackEntry(Version_8.3.37.java:0)
at com.android.tools.r8.Q.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:5)
at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:244)
at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:90)
at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:909)
at com.android.tools.r8.internal.po.b(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:99)
at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1041)
at com.android.tools.r8.D8.b(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:514)
at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1076)
at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1256)
... 1 more
Caused by: com.android.tools.r8.internal.h: Type androidx.datastore.core.Actual_jvmKt is defined multiple times: d:\sdk_update\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.3\unpacked-datastore-core-android-1.1.3\jars\classes.zip:classes.dex, d:\sdk_update\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-jvm\1.1.3\datastore-core-jvm-1.1.3.zip:classes.dex
at com.android.tools.r8.internal.X30.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:346)
at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:232)
at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:91)
at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2056)
at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:32)
at com.android.tools.r8.graph.q4$a.d(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:6)
at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:264)
at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:222)
at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:219)
at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:809)
at com.android.tools.r8.D8.d(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:212)
at com.android.tools.r8.D8.c(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:163)
at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:906)
... it gives 6 more
 

melonZgz

Active Member
Licensed User
Longtime User
Well, I'm so sorry but I can't still get this to work and it's driving me nuts. I tried in 4 different computers.
Today I just did a new install of Windows because of this. Installed everything and same error (same one in 4 computers):

B4X:
Dex merge    Error
Error in c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.4\unpacked-datastore-core-android-1.1.4\jars\classes.zip:classes.dex:
Type androidx.datastore.core.Actual_jvmKt is defined multiple times: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.4\unpacked-datastore-core-android-1.1.4\jars\classes.zip:classes.dex, c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-jvm\1.1.4\datastore-core-jvm-1.1.4.zip:classes.dex
Compilation failed
Exception in thread "main" java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.4\unpacked-datastore-core-android-1.1.4\jars\classes.zip:classes.dex
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1269)
    at com.android.tools.r8.D8.main(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:5)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.4\unpacked-datastore-core-android-1.1.4\jars\classes.zip:classes.dex
    at Version.fakeStackEntry(Version_8.3.37.java:0)
    at com.android.tools.r8.Q.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:5)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:244)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:90)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:909)
    at com.android.tools.r8.internal.po.b(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:99)
    at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1041)
    at com.android.tools.r8.D8.b(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:514)
    at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1076)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:1256)
    ... 1 more
Caused by: com.android.tools.r8.internal.h: Type androidx.datastore.core.Actual_jvmKt is defined multiple times: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-android\1.1.4\unpacked-datastore-core-android-1.1.4\jars\classes.zip:classes.dex, c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-core-jvm\1.1.4\datastore-core-jvm-1.1.4.zip:classes.dex
    at com.android.tools.r8.internal.X30.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:346)
    at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:232)
    at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:91)
    at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2056)
    at com.android.tools.r8.internal.pX.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:32)
    at com.android.tools.r8.graph.q4$a.d(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:6)
    at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:264)
    at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:222)
    at com.android.tools.r8.dex.c.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:219)
    at com.android.tools.r8.D8.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:809)
    at com.android.tools.r8.D8.d(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:212)
    at com.android.tools.r8.D8.c(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:163)
    at com.android.tools.r8.internal.po.a(R8_8.3.37_d0b8d9dfe8720e37c27d2233931d9d72dbd696ffd92111cc9b36e58b4baad1cc:906)
    ... 6 more


If you get error while compiling example app from post #1, check solution for datastore:

Ok, I go there and download the files. I replace the folders under <sdk>\extras\b4a_remote\androidx\datastore with the ones @Erel updated there and I get the following error:

B4X:
B4A Version: 13.10
Parsing code.    (0.00s)
    Java Version: 19
Building folders structure.    (0.05s)
Compiling code.    (0.02s)
Compiling layouts code.    (0.00s)
Organizing libraries.    (0.00s)
    (AndroidX SDK)
Compiling resources    (0.07s)
Linking resources    (0.57s)
    build tools: 34.0.0, android jar: android-34
Compiling generated Java code.    Error
Cannot find: c:\android\tools\..\extras\b4a_remote\androidx\datastore\datastore-preferences-rxjava2\1.1.4\unpacked-datastore-preferences-rxjava2-1.1.4\jars\classes.jar
 
Top