У меня есть простой класс (KeyManagementViewModel), который имеет ссылку на другой из моих классов (UserConfigRepository):
public class KeyManagementViewModel extends ViewModel {
private LiveData<ErrorWrapper<UserConfig>> userConfig;
private UserConfigRepository repo;
public LiveData<ErrorWrapper<UserConfig>> getUserConfig() {
if (userConfig == null) {
repo = new UserConfigRepository(userId); //BREAKPOINT HERE
userConfig = repo.getUserConfigLive(); //CAN'T RESOLVE "repo" here
}
return userConfig;
}
}
В моем проекте build.gradle у меня есть
buildscript {
repositories {
jcenter()
google()
maven {
url 'https://maven.fabric.io/public'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1' //CAN'T BE UPGRADED
classpath 'com.google.gms:google-services:4.2.0'
classpath 'io.fabric.tools:gradle:1.29.0'
}
}
С этой конфигурацией я могу поставить точку останова в KeyManagementViewModel.getUserConfig
в строке, которую я прокомментировал, и все работает нормально, если я вступаю в репо getUserConfigLive
. Однако , когда я обновляю com.android.tools.build:gradle до 3.3.0 или 3.4.2 , теперь точка останова работает, как и раньше, но если я войду в репо getUserConfigLive()
, я не буду Я не вижу исходный код моего класса, и любая точка останова внутри класса репо никогда не будет достигнута. Я знаю, что код выполняется, потому что мои журналы в классе репо все еще появляются в консоли. Что-то еще, что я замечаю, это то, что, если я разбиваю строку после моего комментария «BREAKPOINT HERE», он говорит: «repo = Нет такого поля экземпляра:« repo »», хотя repo
он был создан в линия до. Это как если бы отладчик находился в странном состоянии, когда он не распознает мой класс Repo или текущее состояние. Вот трассировка стека после входа в getUserConfigLive()
, показывающая, что он не распознает класс репо как мой или поля как действительные. Любая идея, что вызывает это или как это исправить? У меня та же проблема в последней версии IntellJ Idea и последней версии Android Studio. Я использую Gradle 5.1.1