java.lang.NoClassDefFoundError:未能解析:Lcom/android/skilley/Vol



我创建了一个新的android项目,并在项目内部创建了新的库模块(网络(。

现在我们有了应用程序(默认模块(和网络模块。

在网络模块中,我有截击依赖性,这在应用程序模块中是不存在的。

创建Kotlin类并在网络模块中定义此方法

/网络模块/

build.gradle

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
// Volley Network
implementation 'com.android.volley:volley:1.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

//VolleyUtils.kt

class VolleyUtils {
fun enableLog() {
VolleyLog.DEBUG = true
}
}

从网络模块创建AAR,并将其放置在应用程序模块中

应用程序模块

build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.test.base"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation(name: 'volleynetwork-release', ext: 'aar')
//    implementation project(':volleynetwork')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

//主要活动.kt

class MainActivity : AppCompatActivity() {
super.onreate(saveInstanceState)
setContentView(R.layout.activity_main)
//access method in network module
VolleyUtils().enableLog()
}
}

编译成功。但是,@Runtime导致异常

结果:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/volley/VolleyLog;
at com.test.volleynetwork.VolleyUtils.enableLog(VolleyUtils.kt:8)
at com.test.base.MainActivity.onCreate(MainActivity.kt:12)
at android.app.Activity.performCreate(Activity.java:7144)
at android.app.Activity.performCreate(Activity.java:7135)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2932)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3087)
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:1817)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6746)
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.ClassNotFoundException: Didn't find class "com.android.volley.VolleyLog" on path: DexPathList[[zip file "/data/app/com.test.base-LKNAponHFP3pH9lW8RU9sQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.test.base-LKNAponHFP3pH9lW8RU9sQ==/lib/arm64, /system/lib64, /product/lib64]]

因此,只有当AAR生成时,问题才会出现,否则它会正常工作请指引我哪里出了问题。

在应用程序的build.gradle中添加以下内容:

implementation(project(":Name_of_your_network_module"))

注意:保留":"一开始

编辑

尝试将Network Module中的Volley依赖项从implementation更改为api

添加您的aar,导入网络模块aar,然后只需在build.gradle应用程序模块中再次将截击依赖项添加到您的基础项目中。

依赖项{

implementation‘com.android.solicy:solicy:1.1.1’

}

由于aar可能是HurlStack的一些依赖文件被删除

最新更新