首页 > 解决方案 > com.android.tools.r8.a:MethodHandle.invoke 和 MethodHandle.invokeExact 仅从 Android O 开始支持 (--min-api 26)

问题描述

实现 'org.apache.poi:poi:5.0.0'

当我使用 Run 'app' 在模拟器/手机上运行时,上述依赖项工作正常,但是当我尝试构建 apk 时,出现以下错误。

com.android.tools.r8.a:MethodHandle.invoke 和 MethodHandle.invokeExact 仅从 Android O 开始支持 (--min-api 26)

我在下面尝试

  1. 如果我删除依赖项,它工作正常。

  2. 如果我将 minSdkVersion 21 更新为 26,那么它工作正常。

所以我的问题是我想使用 minsdkversion 21 以及依赖项(此功能(EXCEL 文件)仅适用于 sdkversion>=26)

那么我怎样才能达到同样的效果呢?

先感谢您。

标签: android-studiodependenciesapache-poibuild.gradle

解决方案


目前这是不可能的。D8 将只允许编译使用调用自定义和方法句柄的代码minSdkVersion为 26 或更高,因为这是 Android 支持这些功能的第一个版本。

取消该限制存在一个悬而未决的问题。但是,根据库中的代码,如果使用调用自定义和方法句柄的代码将在运行时在 API 级别为 25 或更低的设备上命中,则这可能会最终成为运行时错误。

您可以从 Android Studio 运行代码的原因是,在设备或模拟器上进行调试时,Android Studio 会“人为地”将minSdkVersion构建提升到附加的设备或模拟器的构建。这是为了通过利用设备或仿真器所支持的功能来提供最佳的开发体验。


推荐阅读