2017-09-25 1 views
0

MISE À JOUR: essayé la suggestion de Mike, toujours obtenir l'erreur:en utilisant Chambre avec Kotlin, obtenir exception lors de la construction de la base de données

ext { 
kotlin_version = '1.1.50' 
arch_lib_version = '1.0.0-alpha9' 
gradle_version = '2.3.3' 
} 

kapt { 
    generateStubs = true 
} 

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

compile "android.arch.lifecycle:runtime:$arch_lib_version" 
compile "android.arch.lifecycle:extensions:$arch_lib_version" 
compile "android.arch.persistence.room:runtime:$arch_lib_version" 

//annotationProcessor "android.arch.persistence.room:compiler:$arch_lib_version" 
kapt "android.arch.persistence.room:compiler:$arch_lib_version" 
annotationProcessor "android.arch.lifecycle:compiler:$arch_lib_version" 
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 



Error:Annotation processor '__gen.AnnotationProcessorWrapper_robotiumDebug_android_arch_persistence_room_RoomProcessor' not found 

============

à gradle:

ext { 
    arch_lib_version = '1.0.0-alpha9' 
} 

compile "android.arch.persistence.room:runtime:$arch_lib_version" 

annotationProcessor "android.arch.persistence.room:compiler:$arch_lib_version" 
//kapt "android.arch.persistence.room:compiler:$arch_lib_version" 

essayé d'utiliser le KAPT, il donnera l'erreur de compilation:

Error:Annotation processor '__gen.AnnotationProcessorWrapper_robotiumDebug_android_arch_persistence_room_RoomProcessor' not found 

l'extrait de code est ci-dessous:

 @Database(entities = arrayOf(CModel::class), version = 1) 
abstract class CDatabase : RoomDatabase() { 

abstract fun cModel(): DbCDao 

companion object { 
    fun getDatabase(context: Context): CDatabase { 
     return Room.databaseBuilder(context.applicationContext, CDatabase::class.java, “database”) 
.build() //<=== throw here saying CDatabase_Impl does not exist 
    }  
} 

}

la table CLAS:

@Entity(tableName = “table”) 
class CModel() : ICDelegate { 

@PrimaryKey(autoGenerate = true) 
@ColumnInfo(name = “index") 
private var mIndex: Long = -1 

@ColumnInfo(name = "parentIndex") 
private var mParentIndex: Long = -1 

…… 
} 

l'interface Dao defination:

@Dao 
interface DbCDao { 

@Query("select * from table") 
fun loadAllAccountss(): List<CModel> 

@Query("select * from table where index = :index") 
fun loadCsByIndex(index: Int): CModel 

@Insert(onConflict = OnConflictStrategy.REPLACE) 
fun insertC(ac: CModel) : Long 

@Update(onConflict = OnConflictStrategy.REPLACE) 
fun updateAC(ac: CModel) : Int 

@Delete 
fun deleteAc(ac: CModel) : Int 

@Query("DELETE FROM table”) 
fun deleteAllCs() 


} 

l'exception:

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
             Caused by: 
java.lang.RuntimeException: cannot find implementation for com.myproject.data. CDatabase. CDatabase_Impl does not exist 
              at 
android.arch.persistence.room.Room.getGeneratedImplementation(Room.java:90) 
              at 

android.arch.persistence.room.RoomDatabase $ Builder.build (RoomDatabase.java:440)

a essayé quelqu'un a suggéré et ne fonctionne pas:

javaCompileOptions { 
     annotationProcessorOptions { 
      arguments = ["room.schemaLocation": 
      "$projectDir/schemas".toString()] 
     } 
    } 
+0

quiconque a voté pour la question, il est apprécié que si vous pouviez expliquer ce que vous pensez que la question n'est pas une question à poser, ou pour cette question, vous savez qu'il existe une solution solide, merci! – lannyf

Répondre

2

Ceci est mon build.gradle réalisable fichier:

apply plugin: 'com.android.library' 
apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-android-extensions' 

...  
kapt { 
    generateStubs = true 
} 
dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    implementation 'com.android.support:appcompat-v7:26.1.0' 
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 
    implementation 'commons-io:commons-io:2.5' 
    compile "android.arch.persistence.room:runtime:1.0.0-alpha9-1" 
    kapt "android.arch.persistence.room:compiler:1.0.0-alpha9-1" 
} 

prendre en compte:

  • apply plugin: 'kapt' est supprimé.
  • KAPT { generateStubs = true}
  • plutôt sur la mise en œuvre de la compilation.

J'ai utilisé Kotlin 1.1.50.

+0

merci Mike, essayé votre suggestion mais toujours obtenir une erreur, voir ma mise à jour. – lannyf

+0

Utilisez-vous Robotium? – Mike

+0

Oui, nous utilisons Robotium. – lannyf