=========================================
// 앱을 받고 빌드하는데 에러가 발생했다.
org.gradle.api.internal.provider.AbstractProperty$PropertyQueryException: Failed to calculate the value of task ':core:model:compileJava' property 'javaCompiler'.
… 이하생략.
Failed to calculate the value of task ':core:model:compileJava' property 'javaCompiler'. No matching toolchains found for requested specification: {languageVersion=11, vendor=any, implementation=vendor-specific}. No locally installed toolchains match (see https://docs.gradle.org/8.1/userguide/toolchains.html#sec:auto_detection) and toolchain download repositories have not been configured (see https://docs.gradle.org/8.1/userguide/toolchains.html#sub:download_repositories).
→ 의심 : 내 스튜디오에 기본 jdk가 17버전이라서 그런가?
JDK를 왠지 11로 바꾸면 될 것 같은데 toolchain이라는게 뭔지 알아봐야겠다.
문서를 대충 보니, 내 pc에 jdk깔린거 알아서 찾아서 붙인다는 거 같은데, jdk11이 설치가 안되어 있어서 gradle sync빌드가 터지는듯 하다.
https://docs.gradle.org/current/userguide/toolchains.html
https://docs.gradle.org/8.1/userguide/toolchains.html#sec:auto_detection
https://docs.gradle.org/8.1/userguide/toolchains.html#sec:precedence
https://docs.gradle.org/8.1/userguide/toolchains.html#sub:download_repositories
// 이미 다른 사람이 이슈에 올렸고 PR이 하나 올라갔다.
https://github.com/android/nowinandroid/issues/727
→ 와.. 이 이슈 보자마자 실시간으로 PR merge되어서 close되었다.
// 위 이슈에 대한 PR
https://github.com/android/nowinandroid/pull/731
→ 얼마 후에 merge가 될 듯하다. → 2분쯤 있다 바로 merge됨.
해당 커밋을 보긴했는데, 그래들에서 jdk17로 지정하는건 알겠는데,
플러긴?을 만들어서 지정하는부분은 전혀 모르겠다.
// 위 PR에 링크가 있어서, java 11+이니까, ‘+’ 이니까, java17도 해당 된다는 말일듯(?)하고,
android에서 java17에서 작동할 수 있는 api 목록?으로 알고 있다.
https://developer.android.com/studio/write/java11-minimal-support-table
이 11문서가 공홈에서 메뉴에 업데이트가 안되서 접근이 바로 안되는듯하다.
(java8문서에 recommend for you에 다른 볼 게시글로 java11문서도 보였던거 같은데 착각인가..?)
=========================================
(11문서 말고, 다른 비슷한거 참고용)
// android developer blog - API desugaring supporting Android 13 and java.nio
// android developer blog(미디엄) - Support for newer Java language APIs
https://medium.com/androiddevelopers/support-for-newer-java-language-apis-bca79fc8ef65
// 안드공홈 java8+ 문서
안드공홈 - android studio - android studio editor - 좌측 메뉴에 write your code - Use Java8 language features
https://developer.android.com/studio/write/java8-support
https://developer.android.com/studio/write/java8-support-table
// 안드공홈 AGP - kotlin - D8, R8 버전 호환성 테이블 문서
안드공홈 - android studio - android gradle plugin - 좌측메뉴에 D8 and R8 compiler version compatiblility
https://developer.android.com/build/kotlin-support
==========================================
// Toochain은 무엇인가?
⇒ 해당 PR을 받아서 돌리면 되겠는데,
일단 toolchain이 뭔지는 확인하자.
gradle공식문서를 보면,
대강 봐서는 로컬jdk들 환경이 다르니까, gradle스크립트에서 자바버전을 확인하게 하려고 하는듯?
jdk버전뿐만아니라, 벤더사까지 맞추게 할 수 있다.
툴체인 가져오는 우선순위도 있는거 같다?
toolchain이라는 단어자체는 도구모음을 범용적으로 쓰는 말인거 같고,
android toolchain으로 한국어로는 검색되는게 별로 없는듯하다.
지금 gradle toolchain for jvm은 그냥 자바버전 아다리 맞춰서 돌리려고 쓰는거라고 대충 알고 있어야겠다.
// 영문으로 검색해서 코틀린 블로그에서 그나마 설명이 되어있다.
https://blog.jetbrains.com/kotlin/2021/11/gradle-jvm-toolchain-support-in-the-kotlin-plugin/
// toochain 문법 어떻게 쓸지 약간 참고할만한 블로그.
https://daryeou.tistory.com/347
==========================================
일단, 툴체인은 여기까지만 알아보고, 다시 할거 진도를 나가보자.
'Google sample app > nowinandroid' 카테고리의 다른 글
REDAME.md 파일과 관련 문서 읽기 (0) | 2023.05.18 |
---|---|
샘플앱 fork하기 (0) | 2023.05.16 |
0. sunflower, now in android 분석을 시도해보자 (0) | 2023.05.16 |