str*_*e10 8 java android android-version
我知道这里有很多关于Android API级别和版本的问题,但这个问题有所不同所以请不要将其标记为重复.
我想知道Java版本1.6,1.7,1.8 ......是如何与这两者相关的.我混淆的原因是我尝试使用Pattern.compile带有Pattern.UNICODE_CHARACTER_CLASS标志的方法,如下所示.
Pattern pattern = Pattern.compile("\\b" + keywordToCheck + "\\b", Pattern.UNICODE_CHARACTER_CLASS);
Run Code Online (Sandbox Code Playgroud)
从在文档上Pattern.UNICODE_CHARACTER_CLASS它说,它说,自从:1.7,这是我承担意味着它是在Java版本1.7及更高版本.我试图在Android项目中使用该行代码,但每次在我的设备上运行它时,我得到:
java.lang.IllegalArgumentException: Unsupported flags: 256
Run Code Online (Sandbox Code Playgroud)
以下是build.gradle文件的相关部分
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这意味着我的应用程序将使用任何API级别19及以上,这意味着它可以在Android 4.4(KitKat)或更高版本上运行.我运行应用程序的设备有Android 6.0.Java版本如何适应这个?我正在使用说我正在使用的Android Studio 3.0:
Android Studio 3.0
Build #AI-171.4408382, built on October 20, 2017
JRE: 1.8.0_152-release-915-b08 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么我会收到此错误,以及Android API级别,版本和Java版本之间的关系?谢谢
在给定示例的情况下,直到API 24才添加该标志.在很多情况下,尽管先前添加了对给定语言级别(例如7)的支持并不意味着所有内容都会立即添加.有些事情是等待谷歌等待它的原因.
我不能告诉你为什么,因为我不知道.
正如Gabe所说,Java的版本不一定与Android兼容.
因此,由于您在API 19及更高版本上使用标志的代码,您将在19和23之间的版本上崩溃,因为尚未添加该标志.
并且值得注意的是,版本兼容性并不限制Android版本的Java版本.现在,您可以在任何版本的Android上运行Java 8.这是兼容性.
然而.如果您阅读Android Java 8语言功能,它会说(强调我的):
Android Studio 3.0及更高版本支持所有Java 7语言功能和Java 8语言功能的子集,这些功能因平台版本而异.
我在这里使用Java 8作为示例,但这适用于大多数Android和Java版本.
实质上:
两者之间没有固定的关系(Android [x] = Java [x]).最终可以立即添加不同的字段/方法/类(在发布对给定版本的Java的支持时)或者根本不添加.
Android中使用的常规Java和Java版本是两个非常不同的,因为Android是基于平台的,而Java是基于版本的.您无法比较它们之间的版本,它们都有单独的文档.
值得一提的是,为Android(Java)的问题,你应该看看它可以在发现了Android文档API参考,而不是使用它并不适用于Android系统,因为API在庞大的差异Oracle文档.
当它说从 1.7 开始可用时,请注意您正在查看的文档 - Oracle(官方 Java 文档)。所以它永远是Java版本。Android 文档将始终为您提供此后可用的 Android SDK 版本。
请注意,Android 并不总是 100% 兼容 Java 的官方版本。它试图做到这一点,但显然图书馆的大部分内容都不在那里。如有疑问,请查看该类的 Android 文档,而不是 Oracle。
至于 Java 版本 - 它们大多独立于 Android 版本。Java 8 刚刚正式获得 AS3 的全面支持。在此之前,它被认为是实验性的。如果您愿意,您仍然可以使用 Java 7。对于 Java 8,大多数语言功能在所有平台上都可用,但一两个功能要求最低 SDK 版本为 24。我知道的两个功能是 Java 流和注释类型/重复注释。
对于您的具体问题,请注意 android 文档对此标志的说明:“此标志对 Android 没有影响,始终使用 unicode 字符类。” 所以你可以直接删除它。
| 归档时间: |
|
| 查看次数: |
5971 次 |
| 最近记录: |