由 java.lang 引起。异常: 没有找到 os.name = Mac 和 os.arch = aarch64的本机库

我正在使用 Android Studio [ Android Studio Northern Fox | 2020.3.1 Patch 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)

How to solve this error?

Use Room Version: 2.4.0-alpha03 or later.

37295 次浏览

Room [2.4.0-alpha04] fixed this issues.

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

更新(2021年10月26日) - it seems that Room got fixed in the latest updates, 因此,您可以考虑将 Room 更新为最新版本: ——2.4.0-alpha03——或以上

For those who are facing this problem, you can simply add this line before the room-compiler as a workaround now:

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

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

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


如果你使用的是苹果 M1芯片

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

  • 修正了 Room 的 SQLite 原生库支持苹果 M1芯片的问题。

更改版本至2.4.0-alpha03或以上

implementation "androidx.room:room-runtime:2.4.0-alpha03"
annotationProcessor "androidx.room:room-compiler:2.4.0-alpha03"
kapt 'androidx.room:room-compiler:2.4.0-alpha03'

参考文献

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

Here is what worked for me:

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

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"

在项目级 build.gradleallprojects中添加以下配置

allprojects {
repositories {
// ...
}


// ADD THE FOLLOWING
configurations.all {
resolutionStrategy {
force 'org.xerial:sqlite-jdbc:3.34.0'
}
}
}

清理并重建您的项目 :)

参考文献: 此评论 on Google IssueTracker

我们使用 JDK 11,必须从默认的 JDK 转移到 version > = 11.0.13。还有 M1上修复的构建问题。

房间在 版本2.4.0-alpha03上修好了这个问题

修正了 Room 的 SQLite 原生库支持苹果 M1芯片的问题。

Update: 房间的最新版本是“2.4.2”

val roomVersion = "2.4.2"
implementation("androidx.room:room-runtime:$roomVersion")
annotationProcessor("androidx.room:room-compiler:$roomVersion")