Qihoo360 / RePlugin

RePlugin - A flexible, stable, easy-to-use Android Plug-in Framework
Apache License 2.0
7.25k stars 1.52k forks source link

主程运行时报错LocalBroadcastManager #901

Open wangyuou opened 4 years ago

wangyuou commented 4 years ago

问题详细描述 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

  1. 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 }

  2. 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'

/**

l376571926 commented 4 years ago

问题详细描述 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

  1. 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 }
  2. 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' } }

albertPu commented 4 years ago

没什么用 java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/localbroadcastmanager/content/LocalBroadcastManager;

albertPu commented 4 years ago

额外引入 implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' clean 一下

linhaosheng commented 4 years ago

还是因为这个库目前没有支持AndroidX 导致的