我正在尝试使用Kotlin和Room Persistance Library编写一个简单的应用程序.我按照Android Persistance codelab中的教程进行操作.
这是我AppDatabase在Kotlin的课程:
@Database(entities = arrayOf(User::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userModel(): UserDao
companion object {
private var INSTANCE: AppDatabase? = null
@JvmStatic fun getInMemoryDatabase(context: Context): AppDatabase {
if (INSTANCE == null) {
INSTANCE = Room.inMemoryDatabaseBuilder(context.applicationContext, AppDatabase::class.java).allowMainThreadQueries().build()
}
return INSTANCE!!
}
@JvmStatic fun destroyInstance() {
INSTANCE = null
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我试图运行应用程序时,它会立即崩溃.这是崩溃日志:
Caused by: java.lang.RuntimeException: cannot find implementation for com.ttp.kotlin.kotlinsample.room.AppDatabase. AppDatabase_Impl does not exist
at …Run Code Online (Sandbox Code Playgroud) 按照设置Room余辉库的教程时,我在Android设备上测试时遇到此错误.
java.lang.RuntimeException:找不到PackageName .AppDatabase的实现.AppDatabase_Impl不存在
我知道有一个类似的问题,但问题是由于kotlin gradle问题.可能重复
测试类:
@RunWith(AndroidJUnit4.class)
public class LocalDatabaseTest {
private PhotoDao mPhotoDao;
private AppDatabase mDb;
@Before
public void createDb() {
Context context = InstrumentationRegistry.getTargetContext();
mDb = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), AppDatabase.class).build();
mPhotoDao = mDb.photoDao();
}
@After
public void closeDb() throws IOException {
//mDb.close();
}
@Test
public void testPreConditions() {
assertNotNull(mDb);
}
Run Code Online (Sandbox Code Playgroud)
道:
@Dao
public interface PhotoDao {
@Delete()
public void delete(Photo... photos);
@Update
public void update(Photo ... photos);
@Insert
public void insert(Photo ... photos);
}
Run Code Online (Sandbox Code Playgroud)
数据库:
@Database(entities = {Photo.class}, …Run Code Online (Sandbox Code Playgroud) 因此,自从添加新的Room android架构库以来,这已经开始发生.我遇到了AppDatabase_Impl不存在的问题,我通过将kapt添加到注释中来修复:
我有其他错误,我怀疑是由于AS,Kotlin和Java 8,所以我尝试更新到AS 3.0
我在尝试构建时遇到以下错误:
Information:Gradle tasks [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:compileDebugSources, :app:compileDebugAndroidTestSources, :app:compileDebugUnitTestSources, :cryptocurrency-icons:generateDebugSources, :cryptocurrency-icons:mockableAndroidJar, :cryptocurrency-icons:generateDebugAndroidTestSources, :cryptocurrency-icons:compileDebugSources, :cryptocurrency-icons:compileDebugUnitTestSources, :cryptocurrency-icons:compileDebugAndroidTestSources]
Error:Circular dependency between the following tasks:
:app:compileDebugKotlin
+--- :app:dataBindingExportBuildInfoDebug
| \--- :app:compileDebugKotlin (*)
\--- :app:kaptDebugKotlin
\--- :app:dataBindingExportBuildInfoDebug (*)
(*) - details omitted (listed previously)
Information:BUILD FAILED in 1s
Information:1 error
Information:0 warnings
Information:See complete output in console
Run Code Online (Sandbox Code Playgroud)
我的gradle文件看起来像:
项目gradle
// Top-level build file where you can add configuration options common to …Run Code Online (Sandbox Code Playgroud)