Android N Stream API是否已向后移植到较低版本?

时间:2016-09-01 07:15:57

标签: java android lambda java-stream android-7.0-nougat

Android N的最新版本有流包,但是当我试图使用它时说我应该使用的最小Sdk版本是24(N)而我的min SDK是16。

我启用了JackOptions,Lambda表达式,方法引用正常工作(即使对于小于N minsdk的版本),但仍然存在问题,只有Stream包。 https://developer.android.com/guide/platform/j8-jack.html下面的链接表示lambda,方法引用可以低23 n,但在Stream包中没有清晰度。

所以我想了解Steam包我不能在我的项目中使用(minsdk 16)?或者我错过了什么。

更新所有sdk组件。 compileSdkVersion 24 buildToolsVersion" 24.0.2" minSdkVersion 16 targetSdkVersion 24(23并不重要)

请建议我应该做些什么。我也看到了streamsupport https://github.com/streamsupport/streamsupport,它工作正常,但我不想添加新的依赖项。

2 个答案:

答案 0 :(得分:4)

不幸的是,谷歌没有向Java 8流API反向移植以降低API版本。这意味着目前没有AppCompatStream或任何类似的东西 但是,可以在Android minSdkVersion上使用Java 8 Stream API< 24如果您愿意在项目中使用第三方库。以下是几个这样的开源项目(向this帖子大喊):

Lightweight Stream API

Solid

StreamSupport

如果您对添加另一个gradle依赖项不感兴趣,则始终可以将整个项目添加为Android Studio项目中的另一个模块,或者甚至作为应用程序模块中的另一个模块。

答案 1 :(得分:0)

  

Android N Stream API是否已向后移植到较低版本?

不,它不是,至少在字面上使用javajavax包,例如java.util.stream。没有类被反向移植到其原始Java包,否则在新设备上会发生命名空间冲突。

到目前为止,Google还没有为java.util.stream等发布某些类似于工作的类,作为一个库,这些类碰巧使用单独的Java包。