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, в основном они могут быть устранены путем обновления версии. (Или может быть проблема, зарегистрированная в трекере проблем для того же.). В других случаях вам может потребоваться исключить модули / группы из зависимостей, добавляя избыточные классы.