#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