gpt4 book ai didi

android - Room databaseBuilder 构建崩溃

转载 作者:行者123 更新时间:2023-11-29 23:22:52 25 4
gpt4 key购买 nike

下面这行代码严重崩溃

Room.databaseBuilder(
applicationContext,
MyDatabase::class.java, "MyDB")
.build()

这是您可以轻松复制的最小完全可验证 (MCV) 应用

在项目的 build.gradle 中,确保存在以下内容

allprojects {
repositories {
google()
jcenter()
}
}

在应用程序的 build.gradle 中,确保存在以下内容

dependencies {
def room_version = "1.1.1"

implementation "android.arch.persistence.room:runtime:$room_version"
kapt "android.arch.persistence.room:compiler:$room_version" // because I'm using Kotlin
}

所有设置说明均按照官方文档 https://developer.android.com/topic/libraries/architecture/adding-components

现在只需使用 Android Studio 并使用“空 Activity ”模板创建一个项目。此 MCV 示例中只需要 3 个新文件。

创建第一个名为 MyThing.kt 的文件

//MyThing.kt
import android.arch.persistence.room.ColumnInfo
import android.arch.persistence.room.Entity

@Entity(tableName = "myThing")
data class MyThing(@ColumnInfo var myString: String)

创建第二个名为 MyDao.kt 的文件

import android.arch.persistence.room.Dao
import android.arch.persistence.room.Insert
import android.arch.persistence.room.OnConflictStrategy

@Dao
interface MyDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(myThing: MyThing)
}

创建名为 MyDatabase.kt 的第三个文件>

import android.arch.persistence.room.Database
import android.arch.persistence.room.RoomDatabase

@Database(entities = arrayOf(MyThing::class), version = 1)
abstract class MyDatabase : RoomDatabase() {
abstract fun myDao(): MyDao
}

现在修改MainActivity

class MainActivity : AppCompatActivity() {

private var myDB: MyDatabase? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

myDB = Room.databaseBuilder(
applicationContext,
MyDatabase::class.java, "MyDB")
.build()
}
}

现在运行应用程序会导致我上面提到的那行硬崩溃。我做错了什么?

更新:Logcat 输出

------------ 崩溃开始
12-29 13:23:46.098 12801-12801/com.le.kevin.rooommcv E/AndroidRuntime:致命异常:主要
进程:com.le.kevin.roommcv,PID:12801
java.lang.RuntimeException:无法启动 Activity ComponentInfo {com.le.kevin.roommcv/com.le.kevin.roommcv.MainActivity}:java.lang.RuntimeException:找不到 com.le.kevin.roommcv.MyDatabase 的实现. MyDatabase_Impl 不存在
在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
在 android.app.ActivityThread.-wrap11(ActivityThread.java)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
在 android.os.Handler.dispatchMessage(Handler.java:102)
在 android.os.Looper.loop(Looper.java:148)
在 android.app.ActivityThread.main(ActivityThread.java:5417)
在 java.lang.reflect.Method.invoke( native 方法)
在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
原因:java.lang.RuntimeException:找不到 com.le.kevin.rooommcv.MyDatabase 的实现。 MyDatabase_Impl 不存在
在 android.arch.persistence.room.Room.getGeneratedImplementation(Room.java:93)
在 android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:630)
在 com.le.kevin.roommcv.MainActivity.onCreate(MainActivity.kt:19)
在 android.app.Activity.performCreate(Activity.java:6251)
在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
在 android.app.ActivityThread.-wrap11(ActivityThread.java)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
在 android.os.Handler.dispatchMessage(Handler.java:102)
在 android.os.Looper.loop(Looper.java:148)
在 android.app.ActivityThread.main(ActivityThread.java:5417)
在 java.lang.reflect.Method.invoke( native 方法)
在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-29 13:23:46.099 777-1936/? W/ActivityManager:强制完成 Activity com.le.kevin.roommcv/.MainActivity

实现?

最佳答案

我通过添加让它工作

apply plugin: 'kotlin-kapt'

在应用程序的 build.graddle 中

我找到了答案,这要归功于查看上面评论建议的 logcat,然后是答案 Room + cannot find implementation DB + DB_Impl does not exist

官方文档https://developer.android.com/topic/libraries/architecture/adding-components不完整

关于android - Room databaseBuilder 构建崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53972529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com