【问题标题】:Could I use apps developed with android N platform on previous versions of android OS我可以在以前版本的 android OS 上使用使用 android N 平台开发的应用程序吗
【发布时间】:2016-06-07 14:05:22
【问题描述】:

似乎 google 在 android N 平台上引入了很多有趣的功能,例如 Java 8 部分支持。我想将它用于我的第一个 android 应用程序。但是我有一个问题 - 如果我的应用程序将使用使用 Java 8 功能的 Android N 工具实现,但设置最小 sdk = 4.1 我的应用程序是否可以在 Android 4、5、6 上运行?

【问题讨论】:

  • “我想将它用于我的第一个 android 应用程序”——恕我直言,这不是一个好主意。等几个月后 Android N 以最终形式(大概是“Android 7.0”)发布。
  • 我是安卓新手,主要是为了学习。但是我的个人手机运行的是 Android 5,所以我需要知道 - 我的应用是否可以在上面运行。
  • 现在不行。针对 N Developer Preview 编译的应用程序只能在 N Developer Preview 设备上运行,除非您采取一些相当讨厌和复杂的步骤来尝试解决该限制。这就是为什么我建议您等到 Android N 以最终形式发布之后再使用它的原因之一。
  • 感谢您的澄清。

标签: java android android-7.0-nougat


【解决方案1】:

是的,如果您使用支持库,您的应用可以在以前版本的 Android 上运行。这些都使用新版本的 Android 进行更新,以提供对新功能的向后兼容性。这是一种常见的做法。

https://developer.android.com/topic/libraries/support-library/index.html

对于 Java 8,听起来您需要选择使用什么。

来自文档:https://developer.android.com/preview/j8-jack.html

支持的 Java 8 语言功能和 API Android 当前不支持所有 Java 8 语言功能。不过,在开发面向 Android N Preview 的应用时,现在可以使用以下功能:

默认和静态接口方法

Lambda 表达式(也可用于 API 级别 23 及更低级别)

可重复的注释

方法参考(也适用于 API 级别 23 及更低级别)

注意:要在早期版本的 Android 上测试 lambda 表达式和方法引用,请转到您的 build.gradle 文件,并将 compileSdkVersion 和 targetSdkVersion 设置为 23 或更低。您仍然需要启用 Jack 工具链才能使用这些 Java 8 功能。

【讨论】:

  • 除非 OP 采取重大措施,否则在 Android N 以最终形式发布之前,OP 的应用程序将无法在早期版本的 Android 上运行。一旦您指定您正在编译和定位'N',您的应用程序的minSdkVersion 将提升为'N',您的应用程序将只能在N 个开发者预览版设备上运行。除此之外,我个人对于 Java 8 支持的哪些部分将向后兼容或不向后兼容有点模糊,Android 支持库必然会涵盖其中的一小部分。
  • 在这篇文章中提到,支持库主要用于修复 API 的缺失。但就我而言,它将是下一个语言版本。你确定它适合这种情况吗?
  • 听起来它对于 Java 8 来说是一个混合包。如果你想确保你的应用程序向后兼容,你将不得不选择你的用途。看起来 Lambdas 和 Method References 已经可以在以前的版本中使用,但其他功能不能。这是您正在寻找的更好的参考:developer.android.com/preview/j8-jack.html
  • 如果您对我给出的答案感到满意,请采纳。谢谢你,祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多