Android Studio:房间数据库实现上出现“尝试分配较弱的访问权限”错误

Mem*_*maz 20 java android access-modifiers android-room

我正在尝试实现房间数据库,我已经完成了官方网站上的步骤,“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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

    // 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
Run Code Online (Sandbox Code Playgroud)

它在这里返回 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)

它在“花栗鼠”版本之前可以工作(在“大黄蜂”中工作),但它开始抛出这些错误。

这里发生了什么?

Zor*_*ran 14

我收到此错误是因为我使用了

implementation 'androidx.work:work-runtime-ktx:2.8.0-rc01'
Run Code Online (Sandbox Code Playgroud)

和

implementation 'androidx.room:room-runtime:2.4.3'
kapt 'androidx.room:room-compiler:2.4.3'
Run Code Online (Sandbox Code Playgroud)

和图书馆

androidx.work:work-runtime-ktx:2.8.0-rc01
Run Code Online (Sandbox Code Playgroud)

取决于

androidx.room:room-common:2.5.0-rc01
Run Code Online (Sandbox Code Playgroud)

所以我完成了两个相同的库但版本不同

androidx.room:room-common:2.5.0-rc01
androidx.room:room-common:2.4.3
Run Code Online (Sandbox Code Playgroud)

切换回后

androidx.work:work-runtime:2.7.1
Run Code Online (Sandbox Code Playgroud)

错误消失了。


小智 10

要修复 Jetpack Compose 和 Paging 3 的此错误,您只需使用这些库。导致错误的原因是 ktx 和运行时依赖项如果版本不匹配就会发生冲突。所有依赖项必须具有相同的版本

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

// Paging 3.0
implementation 'androidx.paging:paging-compose:1.0.0-alpha15'
Run Code Online (Sandbox Code Playgroud)


Mem*_*maz 7

通过\xd0\x9d\xd0\xb8\xd0\xba\xd0\xb0\xd0\xbd\xd0\xb4\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0\xd0\x95\xd0\xbb\ xd0\xb8\xd0\xb7\xd0\xb0\xd0\xb2\xd0\xb5\xd1\x82\xd0\xb0\ 的答案,我发现问题的根源是我拥有的可选实现之一从官方网站添加。

\n

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

\n
    def room_version = "2.4.2"\n\n    implementation "androidx.room:room-runtime:$room_version"\n    annotationProcessor "androidx.room:room-compiler:$room_version"\n
Run Code Online (Sandbox Code Playgroud)\n


has*_*070 6

嗯,我刚刚也遇到了这个问题,看来你是从官方指导中复制代码。这似乎是“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"
}
Run Code Online (Sandbox Code Playgroud)


Ahm*_*jab 5

androidx.work:work-runtime当我将实现从一个版本更改为2.7.1另一个版本2.8.0并具有以下依赖项时,出现了问题

implementation "androidx.room:room-runtime:2.4.3"

annotationProcessor 'androidx.room:room-compiler:2.4.3'

我升级了房间版本2.5.0,问题解决了