Я создал приложение в React-Native, импортировал собственный сторонний компонент в Android. После импорта и исправления некоторых ошибок приложение очищается и собирается правильно, но при открытии происходит сбой, выдавая мне эту ошибку:
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)
Я не могу понять, как исправить эту ошибку, несмотря на то, что искал везде
Unable to start activity ComponentInfo{com.smartsign/com.smartsign.MainActivity}: java.lang.ClassCastException: androidx.multidex.MultiDexApplication cannot be cast to com.facebook.react.ReactApplication
Это части кода, которые я изменил для импорта собственного компонента: 1) В файле верхнего уровня build.gradle в репозиториях блок в секции allproject :
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) В файле на уровне приложения build.gradle в блоке defaultConfig :
multiDexEnabled true
3) В файле уровня приложения build.gradle в блоке debug в блоке buildTypes :
debuggable true
minifyEnabled true
proguardFiles '../proguard_dexguard_configs/proguard-android.txt', '../proguard_dexguard_configs/proguard-project.txt'
4) В файле уровня приложения build.gradle в блоке release в блоке buildTypes :
minifyEnabled true
shrinkResources true
proguardFiles '../proguard_dexguard_configs/proguard-android.txt', '../proguard_dexguard_configs/proguard-project.txt'
5) В файле App-build.gradle в блоке зависимостей :
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) В Androi dManifest. xml в разделе :
<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>
После этого я внес другие небольшие изменения, найденные в Интернете, для устранения некоторых проблем, таких как: В Сборка верхнего уровня .gradle от:
minSdkVersion = 16
compileSdkVersion = 28
до:
minSdkVersion = 21
compileSdkVersion = 29
In Уровень приложения build.gradle под android block i addd:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
configurations {
cleanedAnnotations
compile.exclude group: 'org.jetbrains' , module:'annotations'
}
In MainApplication. java Я изменил свой класс с:
public class MainApplication extends Application implements ReactApplication
на:
public class MainApplication extends MultiDexApplication implements ReactApplication
и я добавил внутрь
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(getBaseContext());
}
В gradle.properties я добавил:
android.enableR8=false
Я надеюсь, что перечислил все, чтобы вы поняли, как я могу решить эту проблему?