簡體   English   中英

無法在我的測試應用程序中使用 Room 構建應用程序

[英]Unable to build application with Room in my test App

當我嘗試構建應用程序時,它給了我一個錯誤

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
   > java.lang.reflect.InvocationTargetException (no error message)

在 build.gradle 我指定

apply plugin: 'kotlin-kapt'

implementation "android.arch.persistence.room:runtime:1.1.1"
kapt 'android.arch.persistence.room:compiler:1.1.1'

我的數據庫 class

@Database(entities = [WeatherOfCities::class], version = 1, exportSchema = false)
public abstract class AppDatabase : RoomDatabase(){
    public abstract fun weatherOfCitiesDao(): WeatherOfCitiesDao
    companion object {
        private var INSTANCE: AppDatabase? = null
        fun getDatabase(context: Context): AppDatabase {
            if (INSTANCE == null) {
                synchronized(this) {
                    INSTANCE =
                        Room.databaseBuilder(context, AppDatabase::class.java, "database")
                            .build()
                }
            }
            return INSTANCE!!
        }
    }
}

我的實體 class

@Entity
data class WeatherOfCities (
    @PrimaryKey(autoGenerate = true)
    val id: Long,
    val city: String,
    val weather: Int
)

我的道界面

@Dao
interface WeatherOfCitiesDao {
    @Query("SELECT * FROM weatherOfCities")
    fun getAll(): List<WeatherOfCities>
    @Insert
    fun insert(weatherOfCities: WeatherOfCities)
    @Update
    fun update(weatherOfCities: WeatherOfCities)
}

並在 MainActivity 中構建數據庫

class MainActivity : AppCompatActivity(), MainView {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var presenter = (application as MVPApplication).mainPresenter
        presenter?.attachView(this)
        var db = AppDatabase.getDatabase(this)
        var weatherOfCitiesDao = db.weatherOfCitiesDao()
    }
}

為什么應用程序沒有構建,是由於應用程序代碼中的錯誤嗎?

您需要添加 ktx 依賴項,例如

implementation 'androidx.room:room-ktx:1.1.1'

我還建議對所有房間依賴項使用 2.4.1 而不是 1.1.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM