Примечание. Не удалось прочитать метаданные get kotlin для [Ljava.lang.Object; @ 79d6c4df - PullRequest
20 голосов
/ 17 марта 2019

Я получаю эту ошибку. Я работаю над проектом и в процессе разработки решил перейти на Android X.

Я получаю ошибку ниже:

Note: Failed to read get kotlin metadata for [Ljava.lang.Object;@79d6c4df

Существует такая же ошибка в файле сущностей и 4 таких же ошибки в соответствующем DAO.

Вот код DAO:

@Dao
public interface FlockDao{
    @Query("SELECT * FROM flock_table")
    LiveData<List<Flock>> getAllFlocks();

    @Query("SELECT * FROM flock_table WHERE fid IN (:flockIds) LIMIT 1")
    Flock loadFlockById(int[] flockIds);

    @Insert
    void insert(Flock flock);

    @Update
    void update(Flock flock);

    @Delete
    void delete(Flock flock);
}

И моя сущность:

@Entity
public class Flock{

    @PrimaryKey(autoGenerate = true)
    private int fid;

    @ColumnInfo(name = "user_id")
    private int uid;

    @ColumnInfo(name = "name")
    private String name;

    @ColumnInfo(name = "capacity")
    private int capacity;

    @ColumnInfo(name = "type")
    private String type;

    @ColumnInfo(name = "arrived")
    private Date arrived;

    .....rest of the code is omitted, there are constructor, setters and getters
}

Ответы [ 11 ]

30 голосов
/ 19 марта 2019

Я обновил свою зависимость от комнаты до 2.1.0-alpha05 и получил ту же проблему. Возврат к 2.1.0-alpha04 решил мой.

implementation 'androidx.room:room-runtime:2.1.0-alpha04'
annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha04'

UPDATE Если вы действительно хотите использовать Room version 2.1.0-alpha05, добавьте следующую зависимость в ваш репозиторий проекта:

maven { url 'https://kotlin.bintray.com/kotlinx/' }

Ссылка: Замечания к выпуску AndroidX Room

UPDATE Я пробовал 2.1.0-alpha06.

implementation 'androidx.room:room-runtime:2.1.0-alpha06'
annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha06'

Затем я добавляю зависимость в мой репозиторий проекта,

maven { url 'https://kotlin.bintray.com/kotlinx/' }

Произошла ошибка, но она скомпилирована. Я тестировал свое приложение на реальном устройстве в течение нескольких недель, и не было никаких проблем с его приложением. База данных моей комнаты работает нормально.

9 голосов
/ 03 апреля 2019

Я решил эту проблему путем понижения до:

implementation 'androidx.room:room-runtime:2.1.0-alpha04'
annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha04'
3 голосов
/ 03 апреля 2019

Решено!

//Downgraded to alpha04.

implementation 'androidx.room:room-runtime:2.1.0-alpha04'
annotationProcessor 'androidx.room:room-compiler:2.1.0-alpha04'

// Other dependencies are..

implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.1.0-alpha03'
implementation 'androidx.lifecycle:lifecycle-livedata:2.1.0-alpha03'
annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.1.0-alpha03'

// Removed this from project level gradle.
maven { url "https://kotlin.bintray.com/kotlinx/" }

Не забудьте очистить и восстановить проект после этих изменений

2 голосов
/ 15 апреля 2019

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

Шаг 1: Проверьте класс @DataBase в вашем проектеи убедитесь, что все таблицы (сущности) вставлены

Шаг 2: Увеличить номер версии

Шаг 3: Добавить ".fallbackToDestructiveMigration ()" перед .build ().

Не забудьте очистить и перестроить проект после этих изменений

2 голосов
/ 29 марта 2019

Недействительные кэши и перезапуск решили мою проблему. Моя версия комнаты - 2.1.0-alpha06, и я также добавил следующую зависимость в мой репозиторий проекта:

 maven { url 'https://kotlin.bintray.com/kotlinx/' }
2 голосов
/ 27 марта 2019

Как и большинство ошибок, имеющих отношение к Room, наиболее вероятно, что ваша проблема - это всплывающее сообщение об ошибке. Для меня это помогло увеличить максимальное количество ошибок, добавив:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xmaxerrs" << "1000"
    }
}

и затем выполнение задачи gradle:

 :app compileDebugJavaWithJavac

Тогда вы получите большой список ошибок, в вашем случае

Note: Failed to read get kotlin metadata for [Ljava.lang.Object;@79d6c4df

Но где-то в этом списке есть ваши настоящие ошибки, такие как неправильный запрос или что-то в этом роде. Исправьте эти ошибки и перестройте проект, который работает большую часть времени, но иногда вам придется отключить кэш и перезапустить Android Studio.

1 голос
/ 27 апреля 2019

Когда я печатал этот ответ, меня уведомили о 2.1.0-alpha07. Это решило все ошибки. Возвращаясь к 2.1.0-alpha06, мы снова сломали сборку.

Оказывается, новая версия исправила ошибки для меня.


Прежде чем пытаться устранить ошибку, попробуйте сначала обновить Android Studio. После обновления Gradle, всех зависимостей и AS с 3.3.2 до 3.4 я обнаружил ошибки, с которыми раньше не сталкивался, например

error: Room cannot pick a constructor since multiple constructors are suitable. Try to annotate unwanted constructors with @Ignore.
error: Cannot find setter for field.
There are multiple good constructors and Room will pick the no-arg constructor. You can use the @Ignore annotation to eliminate unwanted constructors.
error: Not sure how to convert a Cursor to this method's return type.

Как только я их исправил, сборка прошла успешно, и приложение запустилось. Мне не нужно было добавлять дополнительные репозитории Maven, упомянутые в принятом ответе.

0 голосов
/ 15 июля 2019

Просто измените room_version в файле gradle_module в блоке зависимостей и измените другие библиотеки, связанные с комнатой, которые вам нужны.Используйте https://developer.android.com/jetpack/androidx/releases/room#2.2.0-alpha01 в качестве примера.Попробуйте использовать последнюю стабильную версию комнаты.

0 голосов
/ 21 мая 2019

Я решил, добавив это в build.gradle (Модуль)

    androidTestImplementation "androidx.arch.core:coretesting:$rootProject.archLifecycleVersion"

В моем build.gradle (Проект)

ext {
    roomVersion = '2.1.0-alpha06'
    archLifecycleVersion = '2.0.0'
}
0 голосов
/ 18 марта 2019

Добавление import androidx.room.Dao;, а затем его повторный импорт помогли мне.

...