RePlugin
RePlugin copied to clipboard
主程运行时报错LocalBroadcastManager
问题详细描述 Detailed description of the problem
运行主程报如下错误: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.replugin, PID: 12420 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager; at com.qihoo360.loader2.PmBase.registerReceiverAction(PmBase.java:632) at com.qihoo360.loader2.PmBase.callAppCreate(PmBase.java:622) at com.qihoo360.loader2.PMF.callAppCreate(PMF.java:84) at com.qihoo360.replugin.RePlugin$App.onCreate(RePlugin.java:1002) at com.qihoo360.replugin.RePluginApplication.onCreate(RePluginApplication.java:74) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.LocalBroadcastManager" on path: DexPathList[[zip file "/data/app/com.example.replugin-UaHA5GfkIX5VMcToNlpuGg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.replugin-UaHA5GfkIX5VMcToNlpuGg==/lib/x86, /system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.qihoo360.loader2.PmBase.registerReceiverAction(PmBase.java:632) at com.qihoo360.loader2.PmBase.callAppCreate(PmBase.java:622) at com.qihoo360.loader2.PMF.callAppCreate(PMF.java:84) at com.qihoo360.replugin.RePlugin$App.onCreate(RePlugin.java:1002) at com.qihoo360.replugin.RePluginApplication.onCreate(RePluginApplication.java:74) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
复现问题步骤 Steps to reproduce the problem
-
Project.gradle配置如下: // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter()
} dependencies { classpath 'com.android.tools.build:gradle:3.1.4' classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter()} } task clean(type: Delete) { delete rootProject.buildDir }
-
module.gradle配置如下: apply plugin: 'com.android.application'
android { compileSdkVersion 29 buildToolsVersion "29.0.1" defaultConfig { applicationId "com.example.replugin" minSdkVersion 22 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } // ATTENTION!!! Must be PLACED AFTER "android{}" to read the applicationId apply plugin: 'replugin-host-gradle'
/**
- 配置项均为可选配置,默认无需添加
- 更多可选配置项参见replugin-host-gradle的RepluginConfig类
- 可更改配置项参见 自动生成RePluginHostConfig.java
/
repluginHostConfig {
/*
- 是否使用 AppCompat 库
- 不需要个性化配置时,无需添加 / useAppCompat = true /*
- 背景不透明的坑的数量
- 不需要个性化配置时,无需添加 / countNotTranslucentStandard = 6 countNotTranslucentSingleTop = 2 countNotTranslucentSingleTask = 3 countNotTranslucentSingleInstance = 2 } dependencies { implementation fileTree(dir: 'libs', include: ['.jar']) implementation 'com.qihoo360.replugin:replugin-host-lib:2.2.4' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } 3.Application类如下: package com.example.replugin; import com.qihoo360.replugin.RePluginApplication; public class MainApplication extends RePluginApplication { }
问题详细描述 Detailed description of the problem
运行主程报如下错误: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.replugin, PID: 12420 java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager; at com.qihoo360.loader2.PmBase.registerReceiverAction(PmBase.java:632) at com.qihoo360.loader2.PmBase.callAppCreate(PmBase.java:622) at com.qihoo360.loader2.PMF.callAppCreate(PMF.java:84) at com.qihoo360.replugin.RePlugin$App.onCreate(RePlugin.java:1002) at com.qihoo360.replugin.RePluginApplication.onCreate(RePluginApplication.java:74) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.LocalBroadcastManager" on path: DexPathList[[zip file "/data/app/com.example.replugin-UaHA5GfkIX5VMcToNlpuGg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.replugin-UaHA5GfkIX5VMcToNlpuGg==/lib/x86, /system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.qihoo360.loader2.PmBase.registerReceiverAction(PmBase.java:632) at com.qihoo360.loader2.PmBase.callAppCreate(PmBase.java:622) at com.qihoo360.loader2.PMF.callAppCreate(PMF.java:84) at com.qihoo360.replugin.RePlugin$App.onCreate(RePlugin.java:1002) at com.qihoo360.replugin.RePluginApplication.onCreate(RePluginApplication.java:74) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
复现问题步骤 Steps to reproduce the problem
- Project.gradle配置如下: // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.4' classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
- module.gradle配置如下: apply plugin: 'com.android.application'
android { compileSdkVersion 29 buildToolsVersion "29.0.1" defaultConfig { applicationId "com.example.replugin" minSdkVersion 22 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } // ATTENTION!!! Must be PLACED AFTER "android{}" to read the applicationId apply plugin: 'replugin-host-gradle'
/**
配置项均为可选配置,默认无需添加
更多可选配置项参见replugin-host-gradle的RepluginConfig类
可更改配置项参见 自动生成RePluginHostConfig.java / repluginHostConfig { /*
- 是否使用 AppCompat 库
- 不需要个性化配置时,无需添加 / useAppCompat = true /*
- 背景不透明的坑的数量
- 不需要个性化配置时,无需添加 / countNotTranslucentStandard = 6 countNotTranslucentSingleTop = 2 countNotTranslucentSingleTask = 3 countNotTranslucentSingleInstance = 2 } dependencies { implementation fileTree(dir: 'libs', include: ['.jar']) implementation 'com.qihoo360.replugin:replugin-host-lib:2.2.4' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test🏃1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' } 3.Application类如下: package com.example.replugin; import com.qihoo360.replugin.RePluginApplication; public class MainApplication extends RePluginApplication { }
app/build.gradle依赖修改成:
dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation ("com.qihoo360.replugin:replugin-host-lib:${RP_VERSION}"){ exclude group:'android.support.v4' } }
没什么用 java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/localbroadcastmanager/content/LocalBroadcastManager;
额外引入 implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' clean 一下
还是因为这个库目前没有支持AndroidX 导致的