- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从我的库构建一个@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'
不执行脱糖任务,这意味着字节码包含 Java 8 相关的导入,例如:
java.lang.invoke.LambdaMetafactory
这将迫使我的客户也将他的编译选项更新为 JavaVersion.VERSION_1_8,这是我想避免的事情。
最后一个问题:脱糖任务是由“com.android.library”插件执行的还是仅在“com.android.application”插件中可用?如果是这种情况,您能帮我一些提示,告诉我如何将此步骤也包含到库插件中吗?
最佳答案
脱糖任务不是由“com.android.library”插件故意执行的,因为 aar 文件包含 .class 文件的存档(相对于 .dex 文件)。因此此处不应用脱糖(以及去糖化)。
当然,令人误解的是,在库项目中,人们仍然被迫指定 Java 8 支持选项,尽管它们实际上无关紧要(无论如何只有 javac 步骤,没有 desugaring/dexing,以便生成.aar 文件):
更新:再三考虑 - 我现在确信这是“com.android.library”插件中的错误。脱糖仍然会产生 .class 文件,因此如果 gradle.build 配置规定,则没有充分的理由跳过脱糖步骤,例如:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_7
}
关于Android - 将@aar 包中的类脱糖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48099802/
对于NumericVector ,我可以将一个较小的 NumericVector 进行子集化通过使用 IntegerVector包含要子集化的位置。 例如假设x<-c(1,2,2,3,4,5) , i
我的 javascript 文件以配置开始... require.config({ baseUrl: 'scripts', paths: { 'code-mirror'
我的应用程序应该可以使用插件或通常称为糖的方式进行扩展。我会将它们放在 appname.app/Contents/sugars/sugarname.appnamesugar 下 这些是 bundle
我一直在尝试使用 Rcpp 在 C++ 中获取 vector 的等级。我使用了其他糖功能,例如 is_na(); C++中rank R函数有没有类似的糖函数。 Rcpp/ 中是否还有任何可用的 R 糖
我通过 Android Studio 使用 Sugar ORM 进行 Android 开发。 但我想我有一个非常相似的问题。如何将一个/多个结果查询显示为字符串或整数?我的实体看起来像这样: publ
入门读物: Prototypes as "classes" OO JS 按照上述模式,我创建如下库/API var Proto = { constructor: function () {
我在应用程序的第一个版本中使用了 SugarORM。现在,我正在开发第二个版本,它向数据库中添加了新表。 根据 SugarORM documentation “Sugar 会自动为新实体创建表,因此您
我是一名优秀的程序员,十分优秀!