Quantcast
Channel: Active questions tagged react-native+android - Stack Overflow
Viewing all articles
Browse latest Browse all 29445

java.lang.ClassCastException: androidx.multidex.MultiDexApplication cannot be cast to com.facebook.react.ReactApplication

$
0
0

I created an application in React-Native, i imported a native third party component into Android. After importing it and fixing some errors, the application is cleaned and built correctly, but upon opening, it crashes giving me this error:

2020-03-31 08:44:14.296 12061-12061/com.smartsign E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.smartsign, PID: 12061
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.smartsign/com.smartsign.MainActivity}: java.lang.ClassCastException: androidx.multidex.MultiDexApplication cannot be cast to com.facebook.react.ReactApplication
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassCastException: androidx.multidex.MultiDexApplication cannot be cast to com.facebook.react.ReactApplication
        at com.facebook.react.ReactActivityDelegate.getReactNativeHost(ReactActivityDelegate.java:61)
        at com.facebook.react.ReactActivityDelegate.onCreate(ReactActivityDelegate.java:76)
        at com.facebook.react.ReactActivity.onCreate(ReactActivity.java:44)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6669) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

I can't understand how to fix this error despite having searched everywhere

Unable to start activity ComponentInfo{com.smartsign/com.smartsign.MainActivity}: java.lang.ClassCastException: androidx.multidex.MultiDexApplication cannot be cast to com.facebook.react.ReactApplication

These are the parts of code that I changed to import the native component: 1) In the Top-level build.gradle file under the repositories block in allproject section :

jcenter()
mavenCentral()
maven { url 'https://haibison.bitbucket.io/maven-repos' }
maven { url 'https://mvnrepository.com/artifact/com.google.zxing' }
maven { url 'https://mvnrepository.com/artifact/org.jdom/jdom2' }
maven { url 'https://mvnrepository.com/artifact/jaxen/jaxen' }
maven { url 'https://mvnrepository.com/artifact/com.madgag.spongycastle/pkix' }
maven { url 'https://mvnrepository.com/artifact/org.onepf/openiab' }
maven { url 'https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor' }
maven { url 'https://mvnrepository.com/artifact/org.apache.commons/commons-lang3' }
maven { url 'http://repo.jenkins-ci.org/releases' }
maven { url 'https://maven.google.com' } //Gradle 3.x tools need to be retrieved from here as well
flatDir {
        dirs '../aar'
}

2) In the App-level build.gradle file under the defaultConfig block:

multiDexEnabled true

3) In the App-level build.gradle file under the debug block in the buildTypes block:

debuggable true
minifyEnabled true
proguardFiles '../proguard_dexguard_configs/proguard-android.txt', '../proguard_dexguard_configs/proguard-project.txt'

4) In the App-level build.gradle file under the release block in the buildTypes block:

minifyEnabled true
shrinkResources true
proguardFiles '../proguard_dexguard_configs/proguard-android.txt', '../proguard_dexguard_configs/proguard-project.txt'

5) In the App-level build.gradle file under the dependencies block:

ext.androidx_annotation = '1.1.0'
ext.androidx_appcompat = '1.1.0'
ext.androidx_cardview = '1.0.0'
ext.androidx_core = '1.1.0'
ext.androidx_fragment = '1.1.0'
ext.androidx_gridlayout = '1.0.0'
ext.androidx_legacy = '1.0.0'
ext.androidx_media = '1.1.0'
ext.androidx_preference = '1.1.0'
ext.androidx_recyclerview = '1.0.0'

ext.qr_libs_version = "3.3.0" 
ext.lockpattern_version = "10.0.0" 
ext.jdom_version = "2.0.6" 
ext.jaxen_version = "1.1.6" 
ext.spongy_version = "1.54.0.0" 
ext.openiab_version = "0.9.8.7" 
ext.metadataextractor_version = "2.9.1" 
ext.jcifs_version = "1.3.18-kohsuke-1" 
ext.commonslang_version = "3.5" 
ext.aboutlibraries_libs_version = "6.2.3" 

dependencies {
    api 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
    api 'androidx.multidex:multidex:2.0.1'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    api (name:'SIGNificant4AndroidSDK', ext:'aar')
    api "haibison.android:lockpattern:$lockpattern_version" 
    api "androidx.annotation:annotation:$androidx_annotation" 
    api "androidx.core:core:$androidx_core" 
    api "androidx.legacy:legacy-support-core-utils:$androidx_legacy" 
    api "androidx.legacy:legacy-support-core-ui:$androidx_legacy" 
    api "androidx.media:media:$androidx_media" 
    api "androidx.fragment:fragment:$androidx_fragment" 
    api "androidx.appcompat:appcompat:$androidx_appcompat" 
    api "androidx.gridlayout:gridlayout:$androidx_gridlayout" 
    api "androidx.preference:preference:$androidx_preference" 
    api "androidx.recyclerview:recyclerview:$androidx_recyclerview" 
    api "androidx.cardview:cardview:$androidx_cardview" 
    api (name:'Sources_Custom_Support_Library_v4', ext:'aar')
    api (name:'SIGNificant4AndroidSDK_JniBitmapOperationsLibrary', ext:'aar')
    api (name:'SIGNificant4AndroidSDK_QRCodeScanner', ext:'aar')
    api ("com.google.zxing:core:$qr_libs_version")
    api ("com.google.zxing:android-core:$qr_libs_version")
    api ("com.google.zxing:android-integration:$qr_libs_version")
    api ("org.jdom:jdom2:$jdom_version") {transitive = true;}
    api ("jaxen:jaxen:$jaxen_version") {transitive = true;}
    api ("com.madgag.spongycastle:pkix:$spongy_version") {transitive = true;}
    api ("org.onepf:openiab:$openiab_version")
    api ("com.drewnoakes:metadata-extractor:$metadataextractor_version") {transitive = true;}
    api ("org.samba.jcifs:jcifs:$jcifs_version") {transitive = true;}
    api("com.mikepenz:aboutlibraries:$aboutlibraries_libs_version") { transitive = true; }
    api ("org.apache.commons:commons-lang3:$commonslang_version")
}

6) In AndroidManifest.xml under section :

<activity
            android:name="com.xyzmo.ui.DocumentImage" 
            android:alwaysRetainTaskState="true" 
            android:label="@string/significant_app_name" 
            android:launchMode="singleTask" 
            android:windowSoftInputMode="adjustResize" />
        <activity
            android:name="com.xyzmo.ui.CaptureSignature" 
            android:label="@string/significant_app_name" 
            android:windowSoftInputMode="adjustResize" />
        <activity
            android:name="com.xyzmo.ui.AndroidExplorer" 
            android:label="@string/explorer" 
            android:windowSoftInputMode="adjustResize" />
        <activity
            android:name="com.xyzmo.ui.MainSettingsActivity" 
            android:label="@string/title_activity_main_settings" 
            android:logo="@mipmap/icon">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY" 
                android:value="com.xyzmo.ui.DocumentImage" />
        </activity>

        <activity
            android:name="com.xyzmo.ui.SIGNificantLockpatternActivity" 
            android:theme="@style/Significant.Lockpattern.Theme" 
            tools:replace="android:theme" 
            android:label="@string/xyzmo_lockpattern_titlebar">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY" 
                android:value="com.xyzmo.ui.DocumentImage" />
        </activity>

        <activity
            android:name="com.xyzmo.kiosk.ui.AdvertisementActivity" 
            android:theme="@android:style/Theme.Holo.Dialog"></activity>

        <activity
        android:name="com.xyzmo.ui.AboutActivity" 
        android:theme="@style/SIGNificant_AboutTheme"></activity>

After this, I made other small changes found online to fix some problems like: In Top-level build.gradle from :

minSdkVersion = 16
compileSdkVersion = 28

to:

minSdkVersion = 21
compileSdkVersion = 29

In App-level build.gradle under android block i addedd:

compileOptions {
  sourceCompatibility JavaVersion.VERSION_1_8
  targetCompatibility JavaVersion.VERSION_1_8
}

configurations {
  cleanedAnnotations
  compile.exclude group: 'org.jetbrains' , module:'annotations'
}

In MainApplication.java i changed my class from:

public class MainApplication extends Application implements ReactApplication

to:

public class MainApplication extends MultiDexApplication implements ReactApplication

and I added inside

@Override
protected void attachBaseContext(Context base) {
  super.attachBaseContext(base);
  MultiDex.install(getBaseContext());
}

In gradle.properties i added:

android.enableR8=false

I hope I have listed everything to make you understand, how can I solve this problem?


Viewing all articles
Browse latest Browse all 29445

Trending Articles