【问题标题】:Android Studio: "attempting to assign weaker access privileges" error on Room Database implementationAndroid Studio:房间数据库实现中的“尝试分配较弱的访问权限”错误
【发布时间】:2022-07-22 18:24:51
【问题描述】:

我正在尝试实现房间数据库,我已经完成了Official Website的步骤,'AppDatabase.java'文件是这样的:

import android.content.Context;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {

    public static AppDatabase instance;
    public static synchronized AppDatabase getInstance(Context context){
        if (instance==null){
            instance = Room.databaseBuilder(context.getApplicationContext(),
                    AppDatabase.class, "app_database").fallbackToDestructiveMigration().build();
        }
        return instance;
    }
}

以及我用于房间的依赖项:

    // Room Database
    def room_version = "2.4.2"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:2.5.0-alpha02"

    // Room Database

这里返回 2 个错误:

onCreate(SupportSQLiteDatabase) in <anonymous com.example.testdb1.room.AppDatabase_Impl$1> cannot override onCreate(SupportSQLiteDatabase) in Delegate
attempting to assign weaker access privileges; was public
onValidateSchema(SupportSQLiteDatabase) in <anonymous com.example.testdb1.room.AppDatabase_Impl$1> cannot override onValidateSchema(SupportSQLiteDatabase) in Delegate
attempting to assign weaker access privileges; was public

它在“Chipmunk”版本之前工作(在“Bumblebee”中工作),但它开始抛出这些错误。

谁能告诉我这里发生了什么?

注意:如果您要编写代码,请写在我明智地放置代码的地方,谢谢。

【问题讨论】:

  • 我目前正在开始使用 android 编程并且遇到了同样的问题。在删除不必要的可选依赖项并只保留核心(运行时和编译器)之后,一切对我来说都很好。可能值得你一试

标签: java android android-room access-modifiers


【解决方案1】:

要修复 Jetpack Compose 和 Paging 3 的这个错误,您只需要使用这个库

//ROOM
implementation "androidx.room:room-runtime:2.4.2"
kapt "androidx.room:room-compiler:2.4.2"
implementation "androidx.room:room-ktx:2.4.2"
implementation "androidx.room:room-paging:2.4.2"

// Paging 3.0
implementation 'androidx.paging:paging-compose:1.0.0-alpha15'

【讨论】:

  • 抱歉,没有人提出这些要求 - 请再次阅读问题。
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 这只是我如何解决此问题的示例。如果您有相同的库,则必须为 Room 删除或添加一个或多个库。不知道你用的是什么库。
  • 您好 Никандрова Елизавета,谢谢您的建议,我在网站上使用可选库,它们导致了问题 我不认为依赖项可能会导致问题,我希望您编辑您的解决方案并写入不使用可选依赖项,以便对其他人更有帮助。谢谢..
  • 也为我修复了它。只需删除可选的依赖项。
【解决方案2】:

通过Никандрова Елизавета的回答,我发现问题的根源是我从官方网站添加的可选实现之一。

这些依赖足以运行我的代码:

    def room_version = "2.4.2"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

感谢 Никандрова Елизавета 的快速响应和帮助。

【讨论】:

    【解决方案3】:

    嗯,我也遇到了这个问题,看来你是在复制官方指导的代码。 这似乎是“androidx.room:room-paging:2.5.0-alpha02”的问题所以解决方案是用最新的稳定版本(目前为2.4.2)替换它或只使用变量room_version 您可以在以下位置查看最新版本:https://androidx.tech/artifacts/room/room-paging/ 所以只需要替换成下面的代码就可以解决这个问题了

    dependencies {
        def room_version = "2.4.2"
    
        implementation "androidx.room:room-runtime:$room_version"
        annotationProcessor "androidx.room:room-compiler:$room_version"
    
        // optional - RxJava2 support for Room
        implementation "androidx.room:room-rxjava2:$room_version"
    
        // optional - RxJava3 support for Room
        implementation "androidx.room:room-rxjava3:$room_version"
    
        // optional - Guava support for Room, including Optional and ListenableFuture
        implementation "androidx.room:room-guava:$room_version"
    
        // optional - Test helpers
        testImplementation "androidx.room:room-testing:$room_version"
    
        // optional - Paging 3 Integration
        implementation "androidx.room:room-paging:$room_version"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多