Android: тип программы уже представлен: android.arch.lifecycle.LiveData$LifecycleBoundObserver

Я посмотрел какой-то ответ, но связанный с базой данных и живыми данными не совместим или похож. Мое простое тестовое приложение не имеет ничего общего с firebase.

Это мой файл Gradle на уровне модуля:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "room.exercise.com.myapplication"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:recyclerview-v7:27.1.1'

    //Design for room persistance storage
    implementation 'android.arch.persistence.room:runtime:1.0.0'
    annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
    /////

    //Design for live data
    implementation "android.arch.lifecycle:extensions:1.0.0"
    annotationProcessor "android.arch.lifecycle:compiler:1.0.0"
    //

    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Это приложение просто простой тест данных Room и Live, которые я загружаю из базы данных в recyclerView. Я знаю, что база данных Room работает, потому что это был мой первый тест.

Файл gradle был синхронизирован без проблем. Произошла ошибка при компиляции и запуске приложения.

Тип программы уже присутствует: android.arch.lifecycle.LiveData$LifecycleBoundObserver Сообщение {kind=ERROR, text= Тип программы уже присутствует: android.arch.lifecycle.LiveData$LifecycleBoundObserver, sources=[Неизвестный исходный файл], имя инструмента = Необязательно. из (D8)}

Код:

public class RoomActivity extends AppCompatActivity implements View.OnLongClickListener {

private StudentListViewModel viewModel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_room);

    //RoomDatabase database = RoomDatabase.getDatabase(RoomActivity.this);
    //RoomDataInitializer.AddSampleDataAsync(database);

    //List<StudentEntity> students = database.studentDAO().getAllStudents();
    //Log.w("Room Activity", "Count = " + students.size());

    RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view);
    final RecyclerViewAdapter adapter = new RecyclerViewAdapter(new ArrayList<StudentEntity>(), this);
    recyclerView.setAdapter(adapter);

    viewModel = ViewModelProviders.of(this).get(StudentListViewModel.class);

    viewModel.getStudentList().observe(RoomActivity.this, new Observer<List<StudentEntity>>()
    {
        @Override
        public void onChanged(@Nullable List<StudentEntity> studentEntities) {
            adapter.addItems(studentEntities);
        }
    });

}

@Override
public boolean onLongClick(View v) {
    return false;
}

}

1 ответ

Решение

Просто попробуйте это:

implementation "android.arch.lifecycle:extensions:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'

вместо ваших версий.

У меня нет объяснимого объяснения этому решению, но я попробую.

Этот тип ошибки возникает, когда один класс определяется / вводится двумя или более зависимостями. (В вашем случае это LifecycleBoundObserver).

И этот тип ошибок возникает только во время выполнения. Они не происходят во время сборки / синхронизации gradle.

Если ошибки такого типа возникают в зависимостях firebase/android, в основном они могут быть устранены путем обновления версии. (Или может быть проблема, зарегистрированная в трекере проблем для того же.). В других случаях вам может потребоваться исключить модули / группы из зависимостей, добавляя избыточные классы.

Другие вопросы по тегам