相关疑难解决方法(0)

Android Room Persistences库和Kotlin

我正在尝试使用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)

database kotlin kapt android-room

54
推荐指数
3
解决办法
2万
查看次数

调用Rooms inMemoryBuilder方法时,Room Persistence Library运行时异常

按照设置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)

java sqlite orm android android-room

25
推荐指数
3
解决办法
2万
查看次数

任务之间的Gradle依赖性

因此,自从添加新的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)

android gradle kotlin android-databinding android-room

8
推荐指数
1
解决办法
1738
查看次数