我正在为 B4A 框架制作一个 Android 库。情况
如下:
- 我的 Android 库使用 Java8 功能(例如 Lambda)
- B4A (Basic4Android) 使用 legacy
dex
(而不是d8
)来制作应用程序,因此与 java8 不兼容,并且不会自行脱糖。
在 B4A 中使用我的aar
文件会导致以下错误:
Uncaught translation error: com.android.dx.cf.code.SimException:
invalid opcode ba (invokedynamic requires --min-sdk-version >= 26)
...
官方论坛的解决方案是使用Bazel 的 desugar tool对库的 Jar 进行脱糖,但似乎它导致Expected a load for ...
了不同的错误,而不是我的问题。
我的问题:
对于这些情况,是否可以使用 Android Studio
生成脱糖aar
库(与 Java7 兼容且无 lambda)?
我知道d8
会脱糖,但它的输出是.dex
文件而不是.jar
文件。
我尝试过的:
Android 的Using Java 8 Feature中所说的解决方案没有帮助,因为它不会产生兼容的 jar 并且错误仍然存在。