java.lang.Ошибка noSuchMethod: Нет статического метода «myMethod»

#android #android-studio #kotlin #android-productflavors #android-module

Вопрос:

У меня есть метод расширения:

 fun StoresClientFragment?.onClickButtonBack(){
   this?.listener?.onStoresFragmentClickBtnMenu()
}
 

Приложение устанавливается без каких-либо ошибок; но когда метод вызывается во время выполнения, он выдает мне следующую ошибку:

java.lang.Ошибка noSuchMethod: Нет статического метода onClickButtonBack (Lcom/приложение/common_client/пользовательский интерфейс/фрагмент /хранилища/Фрагмент хранилища;) V в классе Lcom/app/common_client/commons/CommonsAppTypeGroupKt; или его суперклассы (объявление ‘com.app.common_client.commons.CommonsAppTypeGroupKt’ отображается в файле /data/app/com.myapp.client-DWp0y3iNC3tsmBZkowlpfw==/base.apk!classes2.dex).

У меня включен мультидекс

В сборке.gradle

 android {
    defaultConfig {
        multiDexEnabled = true
    }
}

dependencies {
   implementation 'androidx.multidex:multidex:2.0.1'
}
 

В классе приложений

 class ApplicationClient : MultiDexApplication(){
}
 

В Манифесте

 <application
        android:name=".commons.application.ApplicationClient"
 

Примечание: Я использую ароматизаторы и модули продуктов, этот метод находится в src, разделяемом некоторыми ароматизаторами продуктов

 sourceSets {
         flavorA {
             java.srcDirs   = "src/sharedFolder/java" //here is 'onClickButtonBack' method
         }
         flavorB {
             java.srcDirs   = "src/sharedFolder/java"
         }
}
 

Комментарии:

1. вы пытались сделать запись в файле proguard примерно так, как показано ниже : -сохранить класс com.app.common_client.ui.fragment.stores.** {*;}

2. У меня нет включенного proguard, у меня есть это как «minifyEnabled false»; Должен ли я все еще добавлять это в proguard?

3. Может быть, проблема в том, что вы пытаетесь получить доступ к этому методу из компиляции «flavorB»?

Ответ №1:

Я решил эту проблему, однако я не знаю, почему, единственное, что я сделал, это изменил имя файла, в котором находился метод.

MyFile.kt от MyNewFile.kt

 fun StoresClientFragment? .onClickButtonBack () {
     this? .listener? .onStoresFragmentClickBtnMenu ()
}
 

Я надеюсь, что это поможет кому-то, кто испытывает то же самое, и я также хотел бы, если есть кто-то, кто знает, почему это сработало, поделитесь этим, спасибо

Ответ №2:

Build -> Rebuild Project помог мне. Похоже, это ошибка в кэшировании кода Android Studio