【问题标题】:Caused by: java.lang.Exception: No native library is found for os.name=Mac and os.arch=aarch64. path=/org/sqlite/native/Mac/aarch64原因:java.lang.Exception:没有为 os.name=Mac 和 os.arch=aarch64 找到本机库。路径=/org/sqlite/native/Mac/aarch64
【发布时间】:2021-10-23 07:56:52
【问题描述】:

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

如何解决这个错误?

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

【问题讨论】:

标签: android jdbc android-room


【解决方案1】:

如果您使用的是 Apple M1 芯片

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

  • 修复了 Room 的 SQLite 原生库以支持 Apple 的 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

【讨论】:

  • 这个对我有用。因此,对于任何收到有关“执行 org.jetbrains.kotlin.gradle.internal.KaptExecution Room 数据库时发生故障”但必须运行 --stacktrace 才能看到真正错误“没有找到 os.name 的本机库”的主要错误消息的人=Mac 和 os.arch=aarch64".
  • 2.4.0-alpha05 也可以。
  • 这很奇怪,但很有效。但是,您不认为处于 Alpha 阶段会导致未来出现任何问题或现场制作应用程序出现问题。那就是与团队合作? @Abhimanyu
  • 芯片为Apple M1 Pro时同样解决问题
【解决方案2】:

更新(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'
        }
    }
}

【讨论】:

  • 谢谢你为我节省了几个小时
  • 不错的一个。只需添加依赖项即可解决我的问题。我正在使用 MacBook Pro M1。谢谢。
  • 不错的保存,这里是另一个 M1 用户。此修复了编译错误。
【解决方案3】:

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

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

【讨论】:

  • 谢谢,这对我也有用。我真的不喜欢我的项目在我没有进行任何更改的情况下随机中断的事实。感觉很不稳定。
  • 我花了1个小时解决了这个问题!谢谢!
【解决方案4】:

这对我有用:

将应用级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'
        }
    }
}

清理并重建您的项目 :)

参考:this comment 在 Google 问题跟踪器上

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    相关资源
    最近更新 更多