【问题标题】:NoClassDefFoundError: Failed resolution of: Lio/realm/internal/LinkViewNoClassDefFoundError:解析失败:Lio/realm/internal/LinkView
【发布时间】:2018-07-17 10:51:48
【问题描述】:

我正在使用领域。我安装了 Stetho-Realm 来查看领域数据。

这就是我所做的。

buildscript {
    ...
    repositories {
        google()
        jcenter()
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        ...
        classpath "io.realm:realm-gradle-plugin:5.1.0"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.google.com/'
        }
        maven {
            url 'https://github.com/uPhyca/stetho-realm/raw/master/maven-repo'
        }
    }
}

应用分级

  • stetho:1.5.0
  • stetho_realm:2.1.0
  • multidex:1.0.3
  • multiDexEnabled 真

这是 gradle 代码。

apply plugin: 'com.android.application'
apply plugin: 'realm-android'

android {
    compileSdkVersion 27
    defaultConfig {
        ...
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    ...

}

dependencies {
    ...
    // Stetho
    implementation 'com.facebook.stetho:stetho:1.5.0'
    implementation 'com.uphyca:stetho_realm:2.1.0'

}

我的应用类

public class MyApp extends Application{
    @Override
    public void onCreate() {
        super.onCreate();

        Realm.init(this);
        RealmConfiguration config = new RealmConfiguration.Builder().build();
        Realm.setDefaultConfiguration(config);

        // Stetho
        Stetho.initialize(
                Stetho.newInitializerBuilder(this)
                        .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
                        .enableWebKitInspector(RealmInspectorModulesProvider.builder(this).build())
                        .build());
    }

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

应用程序崩溃并出现此错误: 在 android studio 上运行后,App 安装正常。应用程序出现在设备上后,我在“chrome://inspect/#devices:”中单击了“检查”。此时,应用程序崩溃并显示错误。如何通过 Stetho 看到领域数据库?:

E/AndroidRuntime: FATAL EXCEPTION: StethoWorker-main-13
    ...
    java.lang.NoClassDefFoundError: Failed resolution of: Lio/realm/internal/LinkView;
        at java.lang.reflect.Executable.getParameterTypesInternal(Native Method)
        at java.lang.reflect.Method.getParameterTypes(Method.java:179)
        at java.lang.Class.getDeclaredMethods(Class.java:1881)
        at com.facebook.stetho.inspector.MethodDispatcher.buildDispatchTable(MethodDispatcher.java:115)
        at com.facebook.stetho.inspector.MethodDispatcher.findMethodDispatcher(MethodDispatcher.java:53)
        at com.facebook.stetho.inspector.MethodDispatcher.dispatch(MethodDispatcher.java:60)
        at com.facebook.stetho.inspector.ChromeDevtoolsServer.handleRemoteRequest(ChromeDevtoolsServer.java:129)
        at com.facebook.stetho.inspector.ChromeDevtoolsServer.handleRemoteMessage(ChromeDevtoolsServer.java:111)
        at com.facebook.stetho.inspector.ChromeDevtoolsServer.onMessage(ChromeDevtoolsServer.java:87)
        at com.facebook.stetho.websocket.WebSocketSession$1.handleTextFrame(WebSocketSession.java:176)
        at com.facebook.stetho.websocket.WebSocketSession$1.onCompleteFrame(WebSocketSession.java:136)
        at com.facebook.stetho.websocket.ReadHandler.readLoop(ReadHandler.java:44)
        at com.facebook.stetho.websocket.WebSocketSession.handle(WebSocketSession.java:45)
        at com.facebook.stetho.websocket.WebSocketHandler.doUpgrade(WebSocketHandler.java:117)
        at com.facebook.stetho.websocket.WebSocketHandler.handleRequest(WebSocketHandler.java:83)
        at com.facebook.stetho.server.http.LightHttpServer.dispatchToHandler(LightHttpServer.java:84)
        at com.facebook.stetho.server.http.LightHttpServer.serve(LightHttpServer.java:61)
        at com.facebook.stetho.inspector.DevtoolsSocketHandler.onAccepted(DevtoolsSocketHandler.java:52)
        at com.facebook.stetho.server.ProtocolDetectingSocketHandler.onSecured(ProtocolDetectingSocketHandler.java:63)
        at com.facebook.stetho.server.SecureSocketHandler.onAccepted(SecureSocketHandler.java:33)
        at com.facebook.stetho.server.LazySocketHandler.onAccepted(LazySocketHandler.java:36)
        at com.facebook.stetho.server.LocalSocketServer$WorkerThread.run(LocalSocketServer.java:167)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "io.realm.internal.LinkView" on path: DexPathList[[zip file "/data/app/io.MyApp.app-xknjnMn3NM61rqAc4Zy3uA==/base.apk"],nativeLibraryDirectories=[/data/app/io.MyApp.app-xknjnMn3NM61rqAc4Zy3uA==/lib/arm64, /data/app/io.MyApp.app-xknjnMn3NM61rqAc4Zy3uA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]

【问题讨论】:

    标签: android realm stetho


    【解决方案1】:

    Stetho-Realm 未维护,不支持 Realm 3.7.1 以上版本

    不过有社区分叉:https://github.com/wickedev/stetho-realm

    repositories {
        maven { url 'https://github.com/WickeDev/stetho-realm/raw/master/maven-repo' }
    }
    
    dependencies {
        implementation 'com.uphyca:stetho_realm:2.3.0'
    }
    val realmInspector = RealmInspectorModulesProvider.builder(this)
                .withDeleteIfMigrationNeeded(true)
                .build()
    
    Stetho.initialize(Stetho.newInitializerBuilder(this)
                .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
                .enableWebKitInspector(realmInspector)
                .build())
    

    【讨论】:

    • 太棒了!结果显示。感谢您的解决方案。
    • 如果成功了,你可能想接受左上角那个勾号的答案
    • 我必须添加 .withDeleteIfMigrationNeeded(true) 否则当您在 Chrome 上单击 Realm 数据库时连接断开(显示“连接丢失”)
    • 我不得不将withDeleteIfMigrationNeeded(true) 添加到 Stetho-Realm 库,因为没有其他人这样做。 :P
    • 我可以看到很多东西(比如共享首选项)和一些谷歌数据库,但看不到领域数据库
    【解决方案2】:

    我更喜欢使用 Realm Studio 而不是 Windows 和 Mac 都可用的 stetho。您可以使用 adb 命令简单地拉取领域数据库文件

    adb pull /[本地存储路径]/android/data//files/[realm 文件][你电脑上的文件夹路径]

    【讨论】:

    • 事实上,从 AS 3.0 开始,您可以使用 Android 文件资源管理器将文件复制出来。
    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 2018-11-04
    • 2017-05-10
    • 2020-04-10
    • 1970-01-01
    • 2017-04-12
    • 2020-10-31
    • 1970-01-01
    相关资源
    最近更新 更多