java .lang.NoClassDefFoundError: Ошибка разрешения: Lcom / android / volley / VolleyLog; - PullRequest
0 голосов
/ 23 апреля 2020

Я создал новый проект android и внутри проекта создал новый библиотечный модуль (сеть).

Теперь у нас есть приложение (модуль по умолчанию) и сетевой модуль.

Внутри сети модуль У меня есть залповая зависимость, которой нет в модуле приложения.

Создан Kotlin класс и определите этот метод в Сетевом модуле

/ * Сетевой модуль * /

build.gradle

реализация 'com. android .volley: volley: 1.1.1'

// VolleyUtils. java

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

Создать AAR из сетевого модуля и поместить в модуль приложения

/ * Модуль приложения * /

build.gradle

файлы реализации ('libs / network-release.aar') в модуле приложения

// MainActivity. java

 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, в противном случае она работает нормально.

1 Ответ

0 голосов
/ 23 апреля 2020

добавьте следующее в build.gradle вашего приложения:

implementation(project(":Name_of_your_network_module"))

ПРИМЕЧАНИЕ: держите ":" в начале.

РЕДАКТИРОВАТЬ

Попробуйте изменить Volley зависимостей в Network Module с implementation на api.

...