웹을 검색하면 Java 8이 Android 개발에 지원되는지 확실하지 않습니다.
Java 8을 다운로드 / 설정하기 전에 Java 8이 Android 개발에 지원되는지 또는 지원되지 않는다는 "공식"설명서를 알려줄 수 있습니까?
웹을 검색하면 Java 8이 Android 개발에 지원되는지 확실하지 않습니다.
Java 8을 다운로드 / 설정하기 전에 Java 8이 Android 개발에 지원되는지 또는 지원되지 않는다는 "공식"설명서를 알려줄 수 있습니까?
답변:
Android는 모든 Java 7 언어 기능과 플랫폼 버전에 따라 다른 Java 8 언어 기능의 하위 세트를 지원합니다.
지원되는 Java 8 기능을 확인하려면
우리는 Java 8 언어 기능에 대한 지원을 현재 javac 및 dx 도구 세트에 직접 추가하고 Jack 툴체인을 더 이상 사용하지 않기로 결정했습니다. 이 새로운 방향으로 Java 클래스 파일 형식에 의존하는 기존 도구 및 플러그인이 계속 작동합니다. 앞으로 Java 8 언어 기능은 Android 빌드 시스템에서 기본적으로 지원됩니다. 앞으로 몇 주 안에 Android Studio의 일부로이 기능을 출시 할 계획이며이 결정을 조기에 공유하고 싶었습니다.
Eclipse를 선호하는 오래된 개발자에게는 Google은 Eclipse Android 개발자 도구를 지원하지 않습니다.
Java 8 JDK를 설치 한 경우 시도해보십시오. 문제가 발생하면 창 메뉴 → 환경 설정 → Java → 컴파일러의 Eclipse에서 컴파일러를 1.6으로 설정하십시오 . Java 7도 작동합니다.
Android 5.0 이상을 대상으로하는 경우 Java 7 이상이 필요합니다.
여러 JDK를 설치하고 시도하십시오.
2017/11/04 업데이트-Android Studio 3.0 gradle-retrolambda
은 이제 Java 8을 기본적으로 지원 합니다. 이제 더 이상 필요하지 않습니다. 보다https://developer.android.com/studio/write/java8-support.html을 하십시오
위 링크에는를 사용하는 경우 마이그레이션 지침도 포함되어 있습니다 gradle-retrolambda
. 아래의 원래 답변 :
Android는 Java 8을 지원하지 않습니다. 최대 Java 7 (kitkat이있는 경우) 만 지원하며 여전히 invokedynamic이없고 새로운 구문 설탕 만 있습니다.
Android에서 Java 8의 주요 기능 중 하나 인 람다를 사용하려면 gradle-retrolamba를 사용할 수 있습니다 . Java 8 바이트 코드를 Java 6/7로 다시 변환하는 도구 인 retrolambda를 통합하는 gradle 빌드 종속성입니다. 기본적으로 Android Studio에서 컴파일러를 설정하여 Java 8 바이트 코드를 컴파일하여 람다를 허용하면 다시 Java 6/7 바이트 코드로 변환 한 다음 다시 dalvik 바이트 코드로 변환됩니다. 공식 지원 대신 안드로이드의 일부 JDK 8 기능을 사용 해보고 싶다면 해킹입니다.
try-with-resources
Kitkat 이후에만 작동합니다.
당신은 실제로 사용할 수 있습니다 gradle-retrolamba
Android 개발에 Java 8을 사용하기 gradle 빌드 종속성을 .
아래는 최근 안드로이드 개발을 위해 람다 식을 실행하기 위해 따라 간 완벽한 가이드입니다. 이 안내서의 원본은 마지막에 언급되어 있습니다.
이 안내서에서는 Java 8 기능을 Android 개발 도구로 가져 오는 방법 , 특히 Eclipse IDE를 대상으로 하는 방법에 대해 설명합니다. 합니다. 그러나이 가이드 전체에 설명 된 단계는 Google의 새로운 반란 개발 환경 인 Android Studio에도 적용될 수 있습니다. JetBrains의 인기있는 IntelliJ Idea IDE 커뮤니티 에디션을 기반으로하며 최근이 가이드가 작성되기 약간 전에 2014 년 7 월 초 Google에서 '베타'버전으로 업그레이드했습니다. Eclipse는 적어도 한동안 눈에 띄는 개발 환경으로 유지 될 것이며 대부분의 Android 프로젝트가 Eclipse를 사용하여 개발되었다는 사실을 고려할 때 람다 식과 같은 새로운 Java 8 기능을 ADT로 가져 오는 방법은 개발자에게 매우 유용한 것 같습니다.
Android Development는 2011 년에 종료 된 Apache Harmony Project라는 사용자 정의 Java 구현을 기반으로합니다. Android Development에서 가장 일반적으로 사용되는 Java 구문은 Java 6 (v1.6) 및 Java 7 (v1.7)도 부분적으로 지원됩니다. KitKat 에디션 (Android 4.4. +). 따라서 람다 식과 같은 Java 8 기능은 개발 도구에 약간의 조정을 적용하지 않고 Android 앱 개발에서 직접 사용할 수 없습니다. 운 좋게도, 이러한 구조는 기본적으로 개발자에게 '익명 클래스'와 같은 단점을 제공하는 '구문 설탕'향상으로 Java 6 또는 Java 7 클래스로 변환 될 수 있습니다.
Java 8 소스 코드를 더 낮은 Java 버전으로 변환하기위한 최근의 접근 방식을 RetroLambda 라고 합니다 . 이 라이브러리를 통해 개발자는 Java 7 이하의 람다 식으로 Java 8 코드를 실행할 수 있습니다. 불행히도 현재 람다 식 이외의 Java 8 기능은 RetroLambda에서 지원하지 않지만 람다 식의 개념은 Java 8 플랫폼에서 가장 큰 도약이며 어쨌든 Android 개발자에게 훌륭한 도구입니다.
이 라이브러리에 대한 자세한 내용은 GitHub 페이지에서 찾을 수 있습니다.
https://github.com/orfjackal/retrolambda#getting-started
또한 다른 개발자가 만든 RetroLambda 용 Gradle 플러그인을 사용하면 Gradle 기반 빌드를 Java 또는 Android 프로젝트에서 구현할 수 있습니다. 그러나 개발자는이 플러그인을 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
개발 시스템에 공존해야합니다. 설치하려면 아래 단계를 따라야합니다.
bin
폴더를 %PATH%
변수에 추가JAVA_HOME
JDK 8 홈 폴더의 경로 값으로 새 환경 변수 를 작성하십시오.JAVA8_HOME
JDK 8 홈 폴더의 경로 값으로 새 환경 변수를 다시 작성하십시오.JAVA7_HOME
JDK 7 홈 폴더의 경로 값으로 새 환경 변수 를 작성하십시오.java -version
명령을 실행하고 Java 8이 시작되어 실행 중인지 확인하십시오.javac -version
동일한 창에서 명령을 실행 하고 JDK 8 Java 컴파일러도 실행 중인지 확인하십시오.이제 다음 링크에서 ADT-22.6.2를 다운로드해야합니다.
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
D:\adt
ANDROID_HOME
ADT 설치 폴더의 경로 값으로 불리는 새로운 환경 변수를 정의하십시오.D:\adt\sdk
Andoid SDK Platform Tools
및 Andoid SDK Tools
폴더, 예를 D:\adt\sdk\tools
하고 D:\adt\sdk\platform-tools
당신에, %PATH%
변수D:\adt\eclipse
D:\adt\workspace
Android SDK Manager
버튼을 클릭하십시오Android SDK Build tools Rev. 19.1
및 Android Support Library
단지. 다른 모든 것을 선택 취소하고이 두 패키지를 설치하십시오.모든 것이 잘 진행되면 ADT가 작동합니다.
다음 도구를 설치하는 것이 좋습니다.
Eclipse Kepler Java 8 지원 : Eclipse에서 새로운 Java 8 구문 확장을 인식하고 red dots
Java 코드 편집기에서 성가신 문제를 제거 합니다. Help -> Install New Software
Eclipse를 통해 설치 될 수 있습니다 . 필드에 http://download.eclipse.org/eclipse/updates/4.3-P-builds/ 를 입력 Work with
하고 계속 설치하십시오.
Nodeclipse / Enide Gradle : 주로 Groovy 언어 키워드를 강조 표시하는 데 사용됩니다. Groovy는 Gradle 빌드 스크립트의 DSL로 사용됩니다. 이 플러그인은를 통해 설치할 수 있습니다 Eclipse Marketplace
. 그러나 ADT-22.6.2의 Eclipse는와 함께 제공되지 않습니다 Eclipse Marketplace Client
. 따라서, 먼저 설치해야합니다 Eclipse Marketplace Client
의해 Install New Software
이클립스 도구입니다. 필드에 http // : download.eclipse.org/mpc/kepler/를 입력 Work with
하고 계속 설치하십시오. 설치 후 Eclipse Marketplace Client
, 당신은 검색 할 수 Nodeclipse/Enide Gradle
에 Eclipse Marketplace Client
설치합니다.
Genymotion 가상 장치 : Android Virtual Device
ADT와 함께 제공 되는 기본값 을 대체합니다 . AVD는 성가 시게 번거롭고 아무런 이유없이 계속 충돌합니다. Genymotion을 사용하면 Oracle VirtualBoxCyanogenMod
가 실행하는 이미지를 사용하여 Android VD를 준비 할 수 있습니다 . 단일 사용자 라이센스는 무료이며 http://www.genymotion.com 에서 다운로드 할 수 있습니다 . 로그인 만 필요하며 Eclipse에 통합 할 수도 있습니다. 세부 사항은 다음에서 찾을 수 있습니다.
https://cloud.genymotion.com/page/doc/#collapse8
아래는 Android 4.3 기반 CyanogenMod 가상 장치의 스크린 샷입니다.
x86 또는 x64 기반 개인용 컴퓨터에서 실행되는 본격적인 Android 장치로 간주 될 수 있습니다. Google PlayStore
이 가상 기기 와 같은 Google 서비스를 사용하려면 사용 gapps
하는 Android 버전 의 이미지가 기기에 플래시되어야합니다. gapps
장치에 적절한 이미지는 CyanogenMod 웹 사이트에서 다운로드 할 수 있습니다.
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_HOME
Gradle 설치 폴더의 경로 값으로 불리는 새로운 환경 변수를 정의하십시오.D:\adt\gradle
D:\adt\gradle\bin
당신에, %PATH%
변수gradle -v
명령을 실행하고 실행 되고 있는지 확인하십시오.이 시점에 도달하면 Java 8 기능을 사용하여 첫 번째 Android 앱을 작성할 준비가 된 것입니다.이전 섹션에서 설명한 도구 사용법을 보여주는 간단한 앱이 만들어집니다. 아래 단계에 따라 Android 개발자 도구에서 람다 식 사용에 대한 통찰력을 얻을 수 있습니다.
File -> New -> Other -> Android -> Android Application Project
Next
다음 양식에 버튼을하고 클릭 Finish
마지막에 버튼을 누릅니다. ADT가 프로젝트로드를 완료 할 때까지 기다리십시오.New -> Folder
하고 이름을 지정하십시오.builders
gen (Generated Java Files)
폴더를 마우스 오른쪽 버튼으로 클릭 하고 삭제하십시오. Gradle은 곧 동일한 파일을 s build path. The
생성하고 기본 Ant 빌더로 작성된 프로젝트 gen 폴더에 파일을 추가 할 것 입니다.이 폴더 아래의 아티팩트는 더 이상 사용되지 않습니다.builders
폴더 아래에 다음 배치 파일을 작성하십시오 .
다음과 같이 이러한 배치 파일을 채우십시오.
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
폴더 삭제Project -> Clean
메뉴 옵션을 선택하십시오 . 다음과 같이 표시되는 양식을 작성하십시오.Clean Project
창문
OK
청소 과정이 완료 될 때까지 클릭 하고 기다립니다setContentView
에서 함수를 호출 한 직후에 아래에 제공된 Java 코드 스 니펫을 추가하십시오 MainActivity
.build.gradle
파일 시작 부분을 sourceCompatibility
섹션 까지 변경하십시오 .Properties -> Java Compiler
옵션을 선택하고 모든 준수 레벨을 Java 8로 설정하십시오. 그러면 Eclipse가 람다 표현식과 같은 새로운 Java 8 구성을 인식합니다.No
알림 창을 클릭하십시오Build project
. Eclipse가 프로젝트 빌드를 시작합니다.빌드 프로세스
프로젝트를 마우스 오른쪽 버튼으로 클릭하고로 이동하십시오 Properties -> Java Build Path
. 빌드 경로에 다음 폴더를 추가하십시오 (아래 이미지 참조).
build\source\buildConfig\debug
build\source\r\debug
Eclipse는 이제 파일 R.java
과 buildConfig.java
파일 을 인식 할 수 red dots
있으며 프로젝트의 자원 파일과 관련된 오류를 나타내는 어떤 것도 표시하지 않습니다 .
Run Configuration
프로젝트를 마우스 오른쪽 버튼으로 클릭하고을 선택하여 Android 대상 플랫폼에 대한 새 파일 을 작성하십시오 Run As -> Run Configurations
. 예를 들어,이 데모 애플리케이션은 Genymotion VD에서 아래와 같이 보입니다 :LogCat
간단한 람다 식의 코드 스 니펫이 제대로 작동한다는 것을 창 에서 볼 수 있습니다
새 업데이트를 보려면이 링크를 따르십시오. Java 8 언어 기능 사용
기존 답변
현재 안드로이드 N 미리보기 릴리스 안드로이드 지원 제한 의 기능 자바 8 참조 자바 8 언어 특징
이러한 기능을 사용하려면 필요한 Jack 툴체인 및 업데이트 된 Gradle 용 Android 플러그인 이 포함 된 Android Studio 2.1 및 Android N Preview SDK 를 다운로드하여 설정해야합니다 . 아직 Android N Preview SDK를 설치하지 않은 경우 Android N 용으로 설정을 참조 하십시오 .
지원되는 Java 8 언어 기능 및 API
Android는 현재 모든 Java 8 언어 기능을 지원하지 않습니다. 그러나 이제 Android N Preview를 대상으로하는 앱을 개발할 때 다음 기능을 사용할 수 있습니다.
람다 식 (API 레벨 23 이하에서도 사용 가능)
메소드 참조 (API 레벨 23 이하에서도 사용 가능)
안드로이드가 지원하는 추가 Java 8 기능이 있습니다. Java 8 언어 기능 에서 자세한 내용을 볼 수 있습니다
최신 정보
참고 : Android N은 익명 클래스를 기반으로 람다 식을 구현합니다. 이 방법을 사용하면 이전 버전의 Android에서 이전 버전과 호환되고 실행 가능할 수 있습니다. 이전 버전에서 람다 식을 테스트하려면 build.gradle 파일로 이동하여 compileSdkVersion 및 targetSdkVersion을 23 이하로 설정하십시오.
업데이트 2
이제 Android Studio 3.0의 안정적인 릴리스는 Java 8 라이브러리 및 Java 8 언어 기능 (Jack 컴파일러 제외)을 지원합니다.
minSdkVersion
있습니까?
이제 가능합니다
그러나 Java 1.8에서 장치 ROM을 실행하고 "jackOptions"를 활성화해야합니다. Jack은 Java 8을 실행하는 새로운 Android 컴파일러의 이름입니다.
https://developer.android.com/guide/platform/j8-jack.html
이 줄을 build_gradle에 추가하십시오
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Java 8은 Android Studio 2.0의 실행중인 Java 엔진 인 것처럼 보이지만 확인한 후에도 여전히 Java 8의 구문을 허용하지 않으므로 Android Studio에서 컴파일러를 선택할 수 없습니다. 그러나 안드로이드 클라이언트에서 기능적 프로그래밍 메커니즘이 필요한 경우 스칼라 플러그인을 사용할 수 있습니다.
Android는 Java 6에서 분기 된 Java를 사용합니다.
Android SDK 버전 19 부터는이를 수행 하여 Java 7 기능 을 사용할 수 있습니다 . 아직 Java 8을 완벽하게 지원하지 않습니다.
기본 Java 8이 Android에 도착합니다! 드디어!
각 모듈의 build.gradle 파일에서 Retrolambda 플러그인 및 retrolambda 블록을 제거하십시오.
Jack을 비활성화하고 기본 툴체인으로 전환하려면 모듈의 build.gradle 파일에서 jackOptions 블록을 제거하십시오.
지원되는 Java 8 언어 기능을 사용하려면 Android 플러그인을 3.0.0 이상으로 업데이트하십시오.
Android Studio 3.0부터 Java 8 언어 기능이 이제 Android에서 기본적으로 지원됩니다.
최소 API 레벨 24부터 다음 Java 8 API를 사용할 수 있습니다.
언어 레벨을 프로젝트에 알리려면 다음 행을 애플리케이션 모듈의 build.gradle에 추가하십시오.
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
gradle.properties 파일에 다음을 추가하여 Java 8 언어 기능 지원을 사용하지 마십시오 .
android.enableDesugar=false
끝났습니다! 이제 네이티브 java8을 사용할 수 있습니다!
Android는 Android N부터 Java 8을 공식적으로 지원합니다.
기능 공지 사항은 여기 에 있으며 Java 8 언어 공지 사항은 다음과 같습니다.
향상된 Java 8 언어 지원 -Java 8 언어 기능을 Android에 제공하게되어 기쁘게 생각합니다. Android의 Jack 컴파일러를 사용하면 이제 진저 브레드까지 거슬러 올라가는 Android 버전에서 람다 등을 비롯한 많은 인기있는 Java 8 언어 기능을 사용할 수 있습니다. 새로운 기능은 상용구 코드를 줄이는 데 도움이됩니다. 예를 들어, 람다는 이벤트 리스너를 제공 할 때 익명 내부 클래스를 대체 할 수 있습니다. 기본 및 정적 메소드, 스트림 및 기능 인터페이스와 같은 일부 Java 8 언어 기능도 이제 N 이상에서 사용할 수 있습니다. Jack은 이전 버전과의 호환성을 유지하면서 Java 언어를보다 면밀하게 추적하기를 기대합니다.
다음을 사용하여 Java 8을 사용할 수 있습니다.
build.gradle (프로젝트 : myProject)에서 다음을 추가하십시오.
classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
build.gradle (모듈 : myModule)에서 다음을 추가하십시오.
apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
업데이트 2020/01/17
안드로이드 스튜디오 4.0 에는 앱의 최소 API 수준을 요구 하지 않고 desugaring이라는 기술을 사용하여 여러 Java 8 언어 API 사용을 지원 합니다.
https://developer.android.com/studio/preview/features#j8-desugar
이 릴리스에서는 다음 API 세트가 지원됩니다.
- 순차적 스트림 (
java.util.stream
)- 의 하위 집합
java.time
java.util.function
- 최근 추가
java.util.{Map,Collection,Comparator}
- 선택 사항 (
java.util.Optional
,java.util.OptionalInt
그리고java.util.OptionalDouble
위의 API를 유용)과 다른 새로운 클래스- 에 일부 추가
java.util.concurrent.atomic
(새로운 방법AtomicInteger
,AtomicLong
및AtomicReference
)ConcurrentHashMap
(Android 5.0 용 버그 수정)이러한 언어 API를 지원하기 위해 D8은 누락 된 API의 구현을 포함하고이를 앱에 포함하는 별도의 라이브러리 DEX 파일을 컴파일합니다. desugaring 프로세스는 런타임에이 라이브러리를 대신 사용하도록 앱 코드를 다시 작성합니다.
이러한 언어 API를 지원하려면 모듈
build.gradle
파일에 다음을 포함 하십시오.android { defaultConfig { // Required when setting minSdkVersion to 20 or lower multiDexEnabled true } compileOptions { // Flag to enable support for the new language APIs coreLibraryDesugaringEnabled true // Sets Java compatibility to Java 8 sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4' }
2017 년 오리지널 포스트
Android Studio 3.0 은 다음과 같은 Java 8 언어 기능 중 일부를 기본적으로 지원하기 시작했습니다.
API 레벨 24부터 다음 Java 8 API를 사용할 수 있습니다.
java.util.stream
java.util.function
java.lang.FunctionalInterface
java.lang.annotation.Repeatable
java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
java.lang.reflect.Method.isDefault()
그 외에도 try-with-resources
지원은 모든 Android API 수준으로 확장되었습니다.
앞으로 더 많은 Java 8 기능이 추가 될 예정입니다.
지원되는 Java 8 언어 기능을 사용하려면 Android 플러그인을 3.0.0-alpha1 이상으로 업데이트하고 모듈의 build.gradle 파일에 다음을 추가하십시오.
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
자세한 내용은 https://developer.android.com/studio/write/java8-support.html을 방문하십시오.
2.4.0-alpha6
) 으로 업데이트해야합니다 . 답변에서 인용 블록을 확인하십시오.
Android 프로젝트에 대해 Java 1.8 지원을 사용할 수 있습니다.
열린 프로젝트 구조
를 눌러 Ctrl + Shift + Alt + S
또는 File > Project Structure
표시된대로 프로젝트 구조 대화 상자에서 소스 호환성 및 대상 호환성 을 1.8 로 업데이트 하십시오 (파일> 프로젝트 구조 클릭).
또는 gradle을 사용할 수 있습니다
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
프로젝트 동기화 그리고 그게 다야!
참고 : Java 1.8 지원은 Android Studio 3.0.0 이상에서 사용할 수 있습니다 . 자세한 내용은 설명서 를 참조하십시오 .
거의 2 년 전에이 질문을했을 때 그 대답은 실제로“공식적으로”아니오 였지만, ekcr1의 대답에서 지적한 것처럼 retrolamba를 사용하면 가장 기대되는 기능 (람다) 중 하나를 사용할 수 있습니다. Android Studio가 "미리보기"모드에 있었기 때문에 나는 여전히 이클립스를 사용하고 있었으므로 결코이 길을 추구하지 않았습니다.
오늘날“공식적인”답변은 여전히 그렇다고 생각하지만 retrolamba는 여전히 좋은 방법으로 보이지만 Kotlin과 같이 다소“비공식적 인”경로를 따라 가고자하는 사람들에게는 또 다른 옵션이 있습니다.
오늘 코 틀린은 1.0.0에 도달했습니다. Kotlin에 익숙하지 않은 사용자는 다음 웹 사이트에서 자세한 정보를 찾을 수 있습니다.
또는 Jake Wharton이 제공 한 강연에 대한이 utube 비디오를보십시오
이 구성 build.gradle을 추가하고 gradle을 동기화하십시오.
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// or
//sourceCompatibility 1.8
//targetCompatibility 1.8
}
}
구글은 자바 8이 안드로이드에서 기본적으로 지원 될 것이며 잭 툴체인은 더 이상 사용되지 않을 것이라고 발표했다.
우리는 Java 8 언어 기능에 대한 지원을 현재 javac 및 dx 도구 세트에 직접 추가하고 Jack 툴체인을 더 이상 사용하지 않기로 결정했습니다. 이 새로운 방향으로 Java 클래스 파일 형식에 의존하는 기존 도구 및 플러그인이 계속 작동합니다. 앞으로 Java 8 언어 기능은 Android 빌드 시스템에서 기본적으로 지원됩니다. 앞으로 몇 주 안에 Android Studio의 일부로이 기능을 출시 할 계획이며이 결정을 조기에 공유하고 싶었습니다.
자세한 내용은 여기 : https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
예. 우리는 곧 Java 8을 사용할 것입니다!
우리는 Java 8 언어 기능에 대한 지원을 현재 javac 및 dx 도구 세트에 직접 추가하고 Jack 툴체인을 더 이상 사용하지 않기로 결정했습니다. 이 새로운 방향으로 Java 클래스 파일 형식에 의존하는 기존 도구 및 플러그인이 계속 작동합니다. 앞으로 Java 8 언어 기능은 Android 빌드 시스템에서 기본적으로 지원됩니다. 앞으로 몇 주 안에 Android Studio의 일부로이 기능을 출시 할 계획이며이 결정을 조기에 공유하고 싶었습니다.
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
Stack Overflow 와 비슷한 질문 에 비슷한 답변 을 썼지 만 여기에 그 답변이 있습니다.
새로운 버전의 Android Studio (2.1)는 Java 8 기능을 지원합니다. 다음은 Android Developers blogspot 게시물 에서 발췌 한 내용입니다 .
... Android Studio 2.1 릴리스에는 새로운 Jack 컴파일러 및 Java 8 지원이 포함됩니다. .
...
N Developer Preview로 개발할 때 Java 8 언어 기능을 사용하려면 Jack 컴파일러를 사용해야합니다. New Project Wizard [File → New → Project]는 N을 대상으로하는 프로젝트에 대한 올바른 구성을 생성합니다.
Android는 아직 Java 1.8을 지원하지 않으며 (최대 1.7 만 지원) 람다와 같은 Java 8 기능을 사용할 수 없습니다.
이 답변은 Android Studio의 호환성에 대해 자세히 설명합니다 . 그것은 말합니다 :
Android에서 Java 8의 주요 기능 중 하나 인 람다를 사용하려면 gradle-retrolamba를 사용할 수 있습니다
사용 gradle-retrolambda
에 대한 자세한 내용을 보려면 이 답변을 통해 자세한 작업을 수행하십시오 .
"SDK Location"
하고 있습니다. (Mac FWIW에 있습니다.) "/Users/me/Library/Android/sdk"
Java8을 사용하고 있습니까? 감사!
좀 더 최신 정보를 찾는 사람들을 위해 업데이트 된 답변을 게시 할 것이라고 생각했습니다.
현재 Android 및 Android Studio는 Java 8 기능의 서브 세트를 지원합니다. 웹 사이트에 있는 Android 설명서에 따르면 Google은 다음과 같이 말합니다.
Java 8 언어 기능을 지원하려면 Jack이라는 새로운 컴파일러가 필요합니다. Jack은 Android Studio 2.1 이상에서만 지원됩니다. 따라서 Java 8 언어 기능을 사용하려면 Android Studio 2.1을 사용하여 앱을 빌드해야합니다.
이미 Android Studio가 설치되어있는 경우 도움말> 업데이트 확인 (Mac의 경우 Android Studio> 업데이트 확인)을 클릭하여 최신 버전으로 업데이트하십시오. 워크 스테이션에 IDE가 설치되어 있지 않은 경우 여기에서 Android Studio를 다운로드하십시오.
지원되는 Java 8 언어 기능 및 API
Android는 모든 Java 8 언어 기능을 지원하지 않습니다. 그러나 Android 7.0 (API 레벨 24)을 대상으로하는 앱을 개발할 때 다음 기능을 사용할 수 있습니다.
- 기본 및 정적 인터페이스 메소드 Lambda 표현식 (API 레벨 23 이하에서도 사용 가능)
- 반복 가능한 주석
- 메소드 참조 (API 레벨 23 이하에서도 사용 가능)
- 유형 주석 (API 레벨 23 이하에서도 사용 가능)
또한 다음 Java 8 언어 API도 사용할 수 있습니다.
반영 및 언어 관련 API :
- java.lang.FunctionalInterface
- java.lang.annotation.Repeatable
- java.lang.reflect.Method.isDefault () 및 AnnotatedElement.getAnnotationsByType (Class)와 같은 반복 가능한 주석과 연관된 Reflection API
유틸리티 API :
- java.util.function
- java.util.stream
새로운 Java 8 언어 기능을 사용하려면 Jack 툴체인 도 사용해야합니다 . 이 새로운 Android 툴체인은 Java 언어 소스를 Android에서 읽을 수있는 DEX 바이트 코드로 컴파일하고 자체 .jack 라이브러리 형식을 가지며 대부분의 툴체인 기능을 단일 도구의 일부로 제공합니다 : 재 패키징, 축소, 난독 화 및 멀티 덱스.
다음은 Android DEX 파일을 빌드하는 데 사용되는 두 개의 툴체인을 비교 한 것입니다.
Legacy javac toolchain: javac (.java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.java → .jack → .dex)
나는 3 년 전에이 질문을했으며 그 대답은 수년에 걸쳐 바뀌었다. 위의 많은이 이미 대답 것처럼, 언젠가 다시 현재로, 대답은되었다 네 . 수락 된 답변은 당시의 정답이므로 업데이트하지 않았습니다. (스택 오버플로 정책이 무엇인지 잘 모르겠습니다)
나는 여전히이 주제를 검색하는 사람들을 위해 다른 답변을 추가하고 싶었습니다. 2017 년 5 월 17 일 현재 Google은 Kotlin 도 안드로이드 개발을위한 공식 언어 라고 발표했습니다 .
공식 보도 자료를 찾지 못했지만 발표 된 Google I / O 비디오를 보았습니다 . 다음은 Kotlin 팀이 발표 한 블로그 게시물 에 대한 링크 입니다.
다음을 추가하면 문제가 해결되었습니다 (Android studio 2.3.2).
build.gradle (프로젝트)
buildscript {
repositories {
...
jcenter()
}
dependencies {
...
classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
...
}
}
build.gradle (모듈 : 앱)
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
} // SET JAVA VERSION
...
}
Java 8의 서브 세트가 이제 Android Studio에서 지원됩니다. 아래 창에서 소스 및 대상 호환성을 조정하십시오.
파일-> 프로젝트 구조
자세한 내용은 아래 링크를 참조하십시오.
https://developer.android.com/studio/write/java8-support.html
예, Android Studio에서 Java 8 언어 기능을 사용할 수 있지만 버전은 3.0 이상이어야합니다. android studio에서 java 8 기능을 사용하는 방법에 대해서는이 기사를 읽으십시오.
https://bijay-budhathoki.blogspot.com/2020/01/use-java-8-language-features-in-android-studio.html