小编Mar*_*tin的帖子

Android - @aar包中的Desugar类

我正在尝试从我的库中构建一个@aar包,用作客户端项目中的依赖项.

在我的库模块中,我正在使用:

compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)

在达到客户端依赖关系之前,我想要解决代码并使Java 7兼容.这意味着我需要实际提供一个@aar包,其中Lambda函数和所有其他Java 8相关功能已经移植到Java 7字节码.

我面临的问题是在库模块上使用:

apply plugin: 'com.android.library'
Run Code Online (Sandbox Code Playgroud)

没有执行desugaring任务,这意味着字节码包含Java 8相关的导入,如:

java.lang.invoke.LambdaMetafactory
Run Code Online (Sandbox Code Playgroud)

这将迫使我的客户端将他的编译选项更新为JavaVersion.VERSION_1_8,这是我想要避免的事情.

所以作为最后一个问题:'com.android.library'插件执行的desugaring任务是仅在'com.android.application'插件中可用?如果是这种情况,请你帮我提一些关于如何将这一步也包含在库插件中的提示?

android android-library java-8 aar

8
推荐指数
1
解决办法
467
查看次数

标签 统计

aar ×1

android ×1

android-library ×1

java-8 ×1