原因:java.lang.Exception:找不到 os.name=Mac 和 os.arch=aarch64 的本机库。路径=/org/sqlite/native/Mac/aarch64

Rom*_*man 151 android jdbc android-room

我正在使用Android Studio [Android Studio 北极狐 | 2020.3.1 补丁1]

My room library version is [2.3.0]
Used Gradle version [7.0.1]
Also added kapt 'org.xerial:sqlite-jdbc:3.36.0.1'


Caused by: java.lang.Exception: No native library is found for os.name=Mac and     os.arch=aarch64. path=/org/sqlite/native/Mac/aarch64 at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:333) at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:64) at androidx.room.verifier.DatabaseVerifier.<clinit>(DatabaseVerifier.kt:71)
Run Code Online (Sandbox Code Playgroud)

如何解决这个错误?

解决方案 使用 Room 版本:2.4.0-alpha03 或更高版本。

小智 188

如果您使用的是 Apple M1 芯片

\n

jetpack 提到的发行说明之一(版本 2.4.0-alpha03 )

\n
    \n
  • 修复了 Room\xe2\x80\x99s SQLite 本机库的问题,以支持 Apple\xe2\x80\x99s M1 芯片。
  • \n
\n

将版本更改为2.4.0-alpha03或更高版本

\n
implementation "androidx.room:room-runtime:2.4.0-alpha03"\nannotationProcessor "androidx.room:room-compiler:2.4.0-alpha03"\nkapt \'androidx.room:room-compiler:2.4.0-alpha03\'\n
Run Code Online (Sandbox Code Playgroud)\n

参考

\n

https://developer.android.com/jetpack/androidx/releases/room#version_240_2

\n

  • `2.4.0-alpha05` 也有效。 (2认同)

sha*_*sar 74

更新(2021 年 10 月 26 日)- Room 似乎在最新更新中得到了修复,因此您可以考虑将 Room 更新到最新版本:---- 2.4.0-alpha03 ---- 或更高版本

对于那些面临此问题的人,您现在可以简单地在房间编译器之前添加此行作为解决方法:

kapt "org.xerial:sqlite-jdbc:3.34.0"

如果提到的解决方法不起作用,我建议使用此解决方法,将其添加到根 build.gradle。这将强制在整个项目中使用给定的依赖项:

allprojects {
    configurations.all {
        resolutionStrategy {
            force 'org.xerial:sqlite-jdbc:3.34.0'
        }
    }
}

Run Code Online (Sandbox Code Playgroud)


Rom*_*man 22

Room [2.4.0-alpha04] 修复了这个问题。

并删除 kapt“org.xerial:sqlite-jdbc:3.34.0”

  • 谢谢,这对我也有用。我真的不喜欢这样的事实:我的项目在我没有做出任何更改的情况下就这样随机中断。感觉非常不稳定。 (2认同)
  • 2.4.2 目前稳定,我确认这适用于 M1 Pro 芯片组。 (2认同)

Uts*_*wal 22

这对我有用:

room将版本更改2.3.0为应用程序级别build.gradle

def room_version = "2.3.0" // for Room
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
testImplementation "androidx.room:room-testing:$room_version"
Run Code Online (Sandbox Code Playgroud)

在项目级别build.gradle添加以下配置allprojects

allprojects {
    repositories {
        // ...
    }

    // ADD THE FOLLOWING
    configurations.all {
        resolutionStrategy {
            force 'org.xerial:sqlite-jdbc:3.34.0'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

清理并重建您的项目:)

参考:Google IssueTracker 上的评论


小智 16

Room 在版本 2.4.0-alpha03上修复了此问题

\n

修复了 Room\xe2\x80\x99s SQLite 本机库的问题,以支持 Apple\xe2\x80\x99s M1 芯片。

\n

更新:\n房间最新版本是“2.4.2”

\n
val roomVersion = "2.4.2"\nimplementation("androidx.room:room-runtime:$roomVersion")\nannotationProcessor("androidx.room:room-compiler:$roomVersion")\n
Run Code Online (Sandbox Code Playgroud)\n