Библиотека Android Parceler: невозможно найти созданный класс Parcelable
Я пытаюсь использовать библиотеку Parceler в своем проекте Android Studio. Проект состоит из двух модулей, один из которых представляет собой само приложение, а другой представляет собой персональную библиотеку ядра Android, содержащую различные помощники и общие сущности.
Однако я добавил зависимость Parceler в свою базовую библиотеку, потому что она мне там тоже нужна, поэтому в библиотеку build.gradle я добавил следующие строки:
compile "org.parceler:parceler-api:1.0.4"
apt "org.parceler:parceler:1.0.4"
Я не указал эти строки в файле приложения build.gradle, потому что зависимость от Parceler будет импортирована автоматически.
В моем приложении я определил сущность, которая должна быть Parcelable и какая реализация:
@Parcel
public class Course {
public String name;
public Course() { /*Required empty bean constructor*/ }
public Course(String name) {
this.name = name;
}
}
Но когда я пытаюсь сделать
Course[] courses = ...retrieved from server...
Parcelable p = Parcels.wrap(courses);
Каркас запускает следующее исключение:
org.parceler.ParcelerRuntimeException: Unable to find generated Parcelable class for [Lit.bmsoftware.lotoapp.network.entity.Course;, verify that your class is configured properly and that the Parcelable class [Lit.bmsoftware.lotoapp.network.entity.Course;$$Parcelable is generated by Parceler.
Я уже прочитал различные сообщения для этого исключения, но я не могу найти решение для моей проблемы.
Кто-нибудь может мне помочь?
Заранее спасибо:)
РЕДАКТИРОВАТЬ: build.gradle файл
plugins {
id "me.tatarka.retrolambda" version "3.2.4"
}
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
retrolambda {
jvmArgs '-noverify' // Issues: using Google Play Services causes retrolambda to fail
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "it.bmsoftware.lotoapp"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
signingConfigs {
release {
storeFile file("*******.keystore")
storePassword "********"
keyAlias "*******"
keyPassword "*******"
}
}
buildTypes {
release {
//noinspection GroovyAssignabilityCheck
signingConfig signingConfigs.release
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
repositories {
mavenCentral()
mavenLocal()
}
dataBinding {
enabled = true
}
// Fixes bug in Data Binding library (Source folders generated at incorrect location)
// applicationVariants.all { variant ->
// def variantName = variant.name.capitalize()
// def inputDir = "${buildDir}/intermediates/classes/${variant.dirName}"
// def sourceDir = "${buildDir}/generated/source/dataBinding/${variant.dirName}"
// def copyTask = tasks.create(name: "dataBindingFix${variantName}", type: Copy) {
// from inputDir
// into sourceDir
// include '**/*.java'
// }
// tasks["generate${variantName}Sources"].dependsOn copyTask
// variant.addJavaSourceFoldersToModel new File(sourceDir)
// }
return true
}
ext {
supportLibVersion = '23.1.1' // variable that can be referenced to keep support libs consistent
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':core')
compile "com.android.support:support-v13:${supportLibVersion}"
compile "com.android.support:design:${supportLibVersion}"
//compile "com.android.support:percent:${supportLibVersion}"
compile "com.android.support:recyclerview-v7:${supportLibVersion}"
compile "com.android.support:cardview-v7:${supportLibVersion}"
compile "org.parceler:parceler-api:1.0.4"
apt "org.parceler:parceler:1.0.4"
compile 'jp.wasabeef:recyclerview-animators:2.2.0'
}
1 ответ
Текущая версия (1.0.4) не поддерживает массивы @Parcel
аннотированные классы через Parcels
служебный класс. Вместо этого я бы предложил использовать List
:
List<Course> courses = ...retrieved from server...
Parcelable p = Parcels.wrap(courses);