您确实可以使用 gradle-retrolamba gradle build 依赖项来使用 Java 8 进行 Android 开发。
以下是我最近为 Android 开发运行 lambda 表达式所遵循的完整指南。文末提到了本指南的原始出处。
在本指南中,将一些 Java 8 功能引入
将演示Android开发工具,具体针对
Eclipse IDE。但是,将在本指南中描述的步骤也可能适用于谷歌的新发展
环境,Android Studio。它基于社区版
JetBrains 流行的 IntelliJ Idea IDE,它最近已经
谷歌于 2014 年 7 月上旬升级到其“测试版”
在编写本指南之前。 Eclipse 将继续保持领先地位
开发环境,至少有一段时间,并考虑到
事实上,大多数 Android 项目都是使用 Eclipse 开发的,
将新的 Java 8 特性(如 lambda 表达式)引入的方法
ADT 似乎对开发人员非常有用。
Android 开发基于一个名为
Apache Harmony 项目于 2011 年终止。
Android 开发中常用的 Java 语法是 Java 6 (v1.6) 和
KitKat 版本也部分支持 Java 7 (v1.7)
(安卓 4.4.+)。因此,Java 8 的 lambda 表达式等特性
不能直接在Android App Development中使用
对开发工具进行一些调整。幸运的是,这些
结构基本上是一些“语法糖”增强
给开发人员诸如“匿名类”之类的缺点
并且它们可以被翻译成 Java 6 或 Java 7 类。
一种将 Java 8 源代码转换为较低 Java 的最新方法
版本称为 RetroLambda。该库使开发人员运行
Java 8 代码在 Java 7 甚至更低版本上带有 lambda 表达式。
不幸的是,除了 lambda 表达式之外,Java 8 的特性并没有
RetroLambda 目前支持,但 lambda 表达式的概念
是 Java 8 平台上最大的飞跃,它是一个很好的工具
无论如何都是 Android 开发者。
关于这个库的详细信息可以在它的 GitHub 页面上找到:
https://github.com/orfjackal/retrolambda#getting-started
另外,另一个开发者为 RetroLambda 创建的 Gradle 插件
允许在 Java 或 Android 中实现基于 Gradle 的构建
项目。但是,开发人员只提到了集成这个
Android Studio 环境中的插件。详细信息可以在其上找到
GitHub页面:
https://github.com/evant/gradle-retrolambda
在基于 Eclipse 的开发中使用这些基础架构
环境不能直接接近,但它是可行的,并且将是
在本指南中进行了演示。
准备
本指南假设读者对 Android 开发有基本的了解,并且它基于 ADT 版本 22.6.2,因为最近的 ADT 版本 23.0.2 似乎存在布局文件夹创建等问题。有关此问题的详细信息,请参阅以下链接:
http://code.google.com/p/android/issues/detail?id=72591
本指南中的步骤将针对 Windows 8.1 64 位 开发机器给出,但它们可以很容易地适应其他平台。新的构建系统Gradle 将用于构建/清理过程,还将提供其安装过程。此外,JDK 8 和 JDK 7 必须在开发机器上共存。必须按照以下步骤进行安装:
现在,必须从以下链接下载 ADT-22.6.2:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
- 下载 ADT 并将其内容解压缩到一个文件夹中,例如
D:\adt
- 使用 ADT 安装文件夹的路径值定义一个名为
ANDROID_HOME 的新环境变量,例如D:\adt\sdk
- 添加您的
Android SDK Platform Tools 和 Android SDK Tools 文件夹,例如D:\adt\sdk\tools 和 D:\adt\sdk\platform-tools,到你的 %PATH% 变量
- 如果您愿意,可以创建 Eclipse IDE 的快捷方式。它位于您的 ADT 安装文件夹下,例如
D:\adt\eclipse
- 运行 Eclipse IDE 并创建一个工作区,例如
D:\adt\workspace
- 点击工具栏上的
Android SDK Manager按钮
- 仅选择
Android SDK Build tools Rev. 19.1 和 Android Support Library。取消选择其他所有内容并安装这两个包。
如果一切顺利,ADT 将启动并运行。
还强烈建议安装以下工具:
-
Eclipse Kepler Java 8 支持:它使 Eclipse 能够识别新的 Java 8 语法扩展,并使您摆脱 Java 代码编辑器中烦人的 red dots。它可能通过 Eclipse 中的Help -> Install New Software 安装。在Work with字段中输入http://download.eclipse.org/eclipse/updates/4.3-P-builds/并继续安装。
-
Nodeclipse/Enide Gradle:主要用于高亮Groovy语言关键字。 Groovy 用作 Gradle 构建脚本的 DSL。这个插件可以通过Eclipse Marketplace安装。但是,ADT-22.6.2 中的 Eclipse 不附带 Eclipse Marketplace Client。因此,您首先需要通过 Eclipse 中的Install New Software 工具安装Eclipse Marketplace Client。在Work with字段中输入http//:download.eclipse.org/mpc/kepler/并继续安装。安装Eclipse Marketplace Client后,可以在Eclipse Marketplace Client中搜索Nodeclipse/Enide Gradle进行安装。
-
Genymotion 虚拟设备:它可以很好地替代 ADT 附带的默认 Android Virtual Device。 AVD 非常麻烦,而且它会无缘无故地崩溃。 Genymotion 让您使用由Oracle VirtualBox 执行的CyanogenMod 图像准备Android VD。它的单用户许可证是免费的,可以从http://www.genymotion.com 下载。只需要登录,也可以集成到 Eclipse 中。详情请见:
https://cloud.genymotion.com/page/doc/#collapse8
以下是基于 Android 4.3 的 CyanogenMod 虚拟设备的屏幕截图,
它可能被视为在基于 x86 或 x64 的个人计算机上运行的成熟 Android 设备。为了在此虚拟设备上使用 Google PlayStore 等 Google 服务,必须将其使用的 Android 版本的 gapps 映像刷到设备上。可以从 CyanogenMod 网站下载适合设备的 gapps 图像:
http://wiki.cyanogenmod.org/w/Google_Apps
Gradle 安装是可选的,因为它也由 Android SDK 本身提供,但强烈建议单独安装。可以按照以下步骤进行安装:
-
转到 Gradle 网站:http://www.gradle.org/
-
点击Downloads
-
在Previous Releases 下选择 1.10 版本并下载 gradle-1.10-all.zip 或 gradle-1.10-bin.zip
-
将其内容解压缩到一个文件夹中,例如D:\adt\gradle
-
使用 Gradle 安装文件夹的路径值定义一个名为 GRADLE_HOME 的新环境变量,例如D:\adt\gradle
-
添加您的 Gradle 二进制文件文件夹,例如D:\adt\gradle\bin,到你的 %PATH% 变量
-
打开终端窗口并运行gradle -v 命令并验证它是否已启动并正在运行
如果您已成功达到这一点,则意味着您已准备好使用 Java 8 功能创建您的第一个 Android 应用程序。
演示应用
将创建一个简单的应用程序来演示上一节中描述的工具的用法。
您可以简单地按照下面给出的步骤来深入了解在 Android 开发者工具中使用 lambda 表达式:
- 运行 Eclipse IDE 并通过选择
File -> New -> Other -> Android -> Android Application Project 创建一个新的 Android 应用程序
- 如下所示填写出现的表格:
-
只需单击以下表单上的Next 按钮,然后单击最后一个表单上的Finish 按钮。等到 ADT 完成加载项目
-
右键单击项目并选择New -> Folder并将其命名为builders
-
右键单击gen (Generated Java Files) 文件夹并将其删除。 Gradle 很快会为我们生成相同的文件,我们会将它们添加到由默认 Ant 构建器创建的 projects build path. The gen` 文件夹中,不再需要该文件夹下的工件,该文件夹下的工件将被废弃
-
在builders文件夹下创建以下批处理文件:
- gradle_build.cmd
- gradle_post_build.cmd
- gradle_clean.cmd
-
按如下方式填写这些批处理文件:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- 取消选择
Project -> Build Automatically 菜单选项
- 右键单击项目并选择
Properties -> Builders 并取消选择ADT 提供的所有默认构建器
- 单击同一窗口中的
New 按钮并选择Program 并单击OK
- 将出现新的构建器配置窗口。填写其标签如下:
Main 新生成器配置选项卡
Refresh 新生成器配置选项卡
Environment 新生成器配置选项卡
Build Options 新生成器配置选项卡
- 创建名为
Gradle_Post_Build 的第二个构建器,它使用gradle_post_build.cmd 作为其程序。此构建器的所有其他设置必须与之前创建的构建器完全相同。此构建器将负责将构建过程创建的工件复制到 bin 文件夹中。
- 创建名为
Gradle_Cleaner 的第三个构建器,它使用gradle_clean.cmd 作为其程序。只有最后一个选项卡中的Run the builder 设置必须设置为During a Clean。此构建器的所有其他设置必须与第一个构建器完全相同。顾名思义,此构建器将负责清理由构建过程创建的工件。
HelloLambda 项目的新建设者
- 右键单击项目并选择
Export
- 选择
Android -> Generate Gradle Build Files并点击Next
- 在下一个窗口中选择项目并点击
Finish
- 转到项目的根文件夹并删除文件
gradlew 和gradlew.bat。同时删除gradle文件夹
- 切换回 Eclipse 并选择
Project -> Clean 菜单选项。填写如下所示的表格:
Clean Project窗口
- 点击
OK,等待清理过程完成
- 在
MainActivity 类中调用setContentView 函数后添加下面给出的Java 代码sn-p:
- 将
build.gradle 文件的开头更改为sourceCompatibility 部分,如下所示:
- 右键单击项目并选择
Properties -> Java Compiler 选项并将所有合规级别设置为 Java 8。这将使 Eclipse 识别新的 Java 8 结构,如 lambda 表达式。
- 在通知窗口中点击
No
- 右键单击项目并选择
Build project。 Eclipse 将开始构建项目。
构建过程
Eclipse 现在能够识别R.java 和buildConfig.java 文件,并且不会显示任何red dots,它表示与项目的资源文件相关的错误。
- 通过右键单击项目然后选择
Run As -> Run Configurations,为您的Android 目标平台创建一个新的Run Configuration。例如,这个演示应用程序在 Genymotion VD 上如下所示:
HelloLambda 应用程序
您可以在LogCat 窗口中观察到带有简单 lambda 表达式的代码 sn-p 可以正常工作
来源:Using Java 8 Lambda Expressions in Android Developer Tools