我知道這裏有很多關於Android API級別和版本的問題,但這個問題不同,所以請不要將其標記爲重複。操作系統版本,API級別和Java版本之間的關係
我在想,Java版本1.6,1.7,1.8是如何與這兩者相關的。我的困惑的來源是我試圖使用標誌Pattern.compile
方法如下所示。
Pattern pattern = Pattern.compile("\\b" + keywordToCheck + "\\b", Pattern.UNICODE_CHARACTER_CLASS);
從the docs上Pattern.UNICODE_CHARACTER_CLASS
它說,它說,自從:1.7,這是我承擔意味着它是在Java版本1.7及更高版本。我想使用該行的代碼在Android項目,但每次我的設備上運行它時,我得到:
java.lang.IllegalArgumentException: Unsupported flags: 256
下面是我的build.gradle文件中的相關部分
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
根據我的理解,這意味着我的應用程序將使用任何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
爲什麼我得到這個錯誤可以有人向我解釋,還Android的API級別,版本和Java版本之間的關係?謝謝
非常感謝!看起來特殊的標誌在API Level 24之前不被支持。你能否解釋「Oracle Java」和「Android Java」之間的區別? Google是否與Oracle分開實施這個Pattern類?或者兩者之間的JRE不同?兩者有什麼區別? – strikerdude10
Java是一種語言。甲骨文收購了創建它的公司(Sun)並且有參考實現。 Android使用單獨的Java實現 - 語法是相同的,但它不支持所有的庫(並增加了許多它自己的)。就像不同的公司有他們自己的C++或Javascript版本一樣。谷歌的實施是100%自己的。事實上谷歌使用不同的字節碼語言 - 達爾維克。 –
啊,確定了。語言的語法是一樣的(Java是什麼),但是之後的所有東西:編譯器,JVM庫都特定於Google/Oracle? – strikerdude10