我正在尝试从我的库中构建一个@aar包,以便在客户端项目中用作依赖。
在我的库模块中,我正在使用:
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
我希望在客户端依赖项中使用之前,对代码进行去糖和使其兼容Java 7。这意味着我需要提供一个 @aar 包,其中 Lambda 函数和所有其他与 Java 8 相关的功能已经转换为 Java 7 字节码。
我面临的问题是,在使用以下库模块时:
apply plugin: 'com.android.library'
desugaring 任务未执行,这意味着字节码包含了 Java 8 相关的导入,例如:
java.lang.invoke.LambdaMetafactory
这将强制我的客户更新编译选项为JavaVersion.VERSION_1_8,而这是我想避免的。
所以作为最后一个问题: desugaring任务是由'com.android.library'插件执行还是仅在'com.android.application'插件中可用?如果是这种情况,您能否帮助我提供一些提示,以便我也可以将此步骤包含到库插件中?