gpt4 book ai didi

java - MultiDex 在 Android 4.4 中导致 java.lang.NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-02 10:27:09 24 4
gpt4 key购买 nike

我想将 Mina sshd 导入到我的 Android 应用程序中。

implementation group: 'org.apache.sshd', name: 'sshd-core', version: '2.1.0'

但是,在运行时,这一行

public static final Factory<SshServer> DEFAULT_SSH_SERVER_FACTORY = SshServer::new;

抛出异常

> java.lang.NoClassDefFoundError: 
org.apache.sshd.server.-$$Lambda$xH0wWyo4NWY-u4MuNlGAr_IPDQc
at org.apache.sshd.server.SshServer.<clinit>(SshServer.java:88)
at com.ymz.myapplication.MainActivity$startSshd$1.run(MainActivity.kt:25)
at java.lang.Thread.run(Thread.java:841)

首先,我检查class.dex enter image description here

未定义的类是存在的。

我的等级

    apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 28
defaultConfig {
applicationId "com.ymz.myapplication"
minSdkVersion 19
targetSdkVersion 28
multiDexEnabled true
versionCode 1
versionName "1.0"
multiDexKeepProguard file('multidex-config.pro')
// multiDexKeepFile file('multidex-config.txt')
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
....
}

已添加文件multidex-config.pro:

-keep class org.apache.sshd.** { *; }

最佳答案

尝试在您的 proguard 文件中添加以下规则:-

SSHd 需要 mina,而 mina 使用反射,因此某些类会被删除

    -keep class org.apache.mina.** {*;}
-keep class org.apache.sshd.** {*;}

-dontwarn org.apache.sshd.**
-dontwarn org.apache.mina.**

还要检查您的 gradle 文件中的这两个依赖项:-

implementation 'org.apache.sshd:sshd-core:0.14.0'
implementation 'org.apache.mina:mina-core:2.0.19'

关于java - MultiDex 在 Android 4.4 中导致 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53863630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com