어느 날부터 안드로이드 스튜디오에서 빌드를 하는 데
PermittedSubclasses requires ASM9
이런 메시지를 만나게 되었습니다. 빌드를 하더라도 크게 문제가 발생하거나 하지는 않았습니다. 다만, 빌드 창에 나오는 오류 메시지가 신경을 쓰이게 합니다.
이런 메시지가 나와 오늘은 bard 에게 질문을 해 보았습니다.
"java.lang.UnsupportedOperationException: PermittedSubclasses require ASM9" 오류는 Java 컴파일러가 현재 사용 중인 ASM(ASM 바이트코드 엔지니어링 라이브러리) 버전에서 지원하지 않는 기능을 사용하려고 시도하고 있음을 나타냅니다. ASM은 Java 컴파일러에서 클래스 로딩 및 바이트코드 생성과 같은 특정 작업을 수행하는 데 사용되는 라이브러리입니다.
오류를 일으키는 특정 기능은 "PermittedSubclasses" 특성입니다. 이 속성은 특정 클래스에 액세스 할 수 있는 하위 클래스를 지정하는 데 사용됩니다. PermittedSubclasses 속성은 ASM 버전 9 이상에서만 지원됩니다.
이 오류를 해결하는 방법에는 두 가지가 있습니다.
- ASM 버전 9 이상으로 업그레이드하세요. 이는 문제 없이 PermittedSubclasses 속성을 사용할 수 있게 해주는 권장 솔루션입니다. ASM을 업그레이드하려면 프로젝트의 종속성을 업데이트해야 합니다. 이를 수행하기 위한 구체적인 지침은 빌드 시스템에 따라 다릅니다.
- 코드에서 PermittedSubclasses 특성을 제거합니다. 이는 PermittedSubclasses 기능을 사용하지 못하게 하므로 권장되는 해결 방법은 아닙니다. 그러나 이는 오류 없이 코드를 컴파일할 수 있는 임시 해결 방법입니다.
다음은 이 오류를 방지하기 위한 몇 가지 추가 팁입니다.
- 프로젝트에서 최신 버전의 ASM을 사용하고 있는지 확인하십시오.
- ASM에 의존하는 타사 라이브러리를 사용하는 경우 해당 라이브러리가 사용 중인 ASM 버전과 호환되는지 확인하세요.
- 사용 중인 ASM 버전이 확실하지 않은 경우 java -version명령을 사용하여 확인할 수 있습니다.
bard.google.com 에서 말해주는 답변입니다. 이번에는 다른 포인트로 질문을 해 보았습니다.
"PermittedSubclasses에 ASM9 필요" 오류는 Java 코드에서 ASM9라는 ASM(ASM 바이트코드 엔지니어링 라이브러리)의 특정 버전이 필요한 "PermittedSubclasses" 기능을 사용하려고 시도하고 있음을 나타냅니다. 이전 버전의 ASM을 사용하고 있기 때문에 이 오류가 발생합니다.
이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.
옵션 1: ASM9로 업그레이드
권장되는 솔루션은 ASM9을 활용하도록 프로젝트의 종속성을 업그레이드하는 것입니다. 이렇게 하면 PermittedSubclasses 기능과의 호환성이 보장되고 해당 기능을 완전히 활용할 수 있습니다. ASM 업그레이드를 위한 구체적인 단계는 빌드 시스템 및 프로젝트 구성에 따라 다릅니다. 빌드 시스템 문서를 참조하거나 숙련된 개발자의 도움을 받아 프로세스를 안내받으세요.
옵션 2: PermittedSubclasses 속성 제거
ASM9으로 즉시 업그레이드할 수 없는 경우 코드에서 PermittedSubclasses 속성을 일시적으로 제거할 수 있습니다. 이렇게 하면 오류 발생을 방지할 수 있지만 PermittedSubclasses 기능에서 제공하는 기능도 제거됩니다. 이 옵션은 적절한 ASM 업그레이드를 준비하는 동안 단기적인 해결 방법에 적합합니다.
앞으로 이 오류가 발생하지 않도록 하기 위한 몇 가지 추가 팁은 다음과 같습니다.
- 호환성 보장: 프로젝트에서 사용하는 ASM 버전이 활용 중인 라이브러리 및 프레임워크와 호환되는지 항상 확인하세요.
- 종속성 관리: 서로 다른 라이브러리에 있는 ASM 버전 간의 잠재적인 충돌을 식별하고 해결하기 위해 적절한 종속성 관리를 유지합니다.
- 버전 인식: 최신 ASM 릴리스에 대한 최신 정보를 유지하고 적절한 경우 새로운 기능과 버그 수정의 혜택을 누리려면 업그레이드를 고려하십시오.
이러한 지침을 따르면 "PermittedSubclasses에 ASM9가 필요합니다." 오류를 효과적으로 방지하고 원활한 개발 워크플로를 유지할 수 있습니다.
이렇게 답을 하네요. 이번 답변에서는 옵션 2를 다시 질문해 보겠습니다.
ASM9로 업그레이드하려면 다음 단계를 따르세요.
- ASM9 버전 다운로드
ASM9는 ASM: https://asm.ow2.io/ 웹사이트에서 다운로드할 수 있습니다.
- 프로젝트의 의존성 업데이트
프로젝트의 빌드 시스템을 사용하여 ASM9 버전의 의존성을 업데이트합니다.
Maven을 사용하는 경우 다음과 같은 명령을 사용하여 ASM9 버전의 의존성을 업데이트할 수 있습니다.
mvn dependency:update -Drevision=9.1
Gradle을 사용하는 경우 다음과 같은 명령을 사용하여 ASM9 버전의 의존성을 업데이트할 수 있습니다.
gradle dependencyUpdates -Drevision=9.1
- 프로젝트 빌드
업데이트된 의존성을 사용하여 프로젝트를 빌드합니다.
Maven을 사용하는 경우 다음과 같은 명령을 사용하여 프로젝트를 빌드할 수 있습니다.
mvn clean install
Gradle을 사용하는 경우 다음과 같은 명령을 사용하여 프로젝트를 빌드할 수 있습니다.
gradle clean build
프로젝트를 빌드하면 ASM9 버전으로 업그레이드됩니다.
Maven을 사용하여 ASM9로 업그레이드하는 예
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>9.1</version>
</dependency>
</dependencies>
위의 코드는 Maven 프로젝트의 의존성을 ASM9 버전으로 업데이트합니다.
Gradle을 사용하여 ASM9로 업그레이드하는 예
dependencies {
implementation 'org.ow2.asm:asm:9.1'
}
위의 코드는 Gradle 프로젝트의 의존성을 ASM9 버전으로 업데이트합니다.
업그레이드 시 고려 사항
ASM9는 이전 버전과 호환되지 않을 수 있습니다. 따라서 업그레이드하기 전에 프로젝트의 코드를 테스트하여 모든 문제가 해결되었는지 확인해야 합니다.
또한, ASM9는 새로운 기능과 버그 수정을 포함합니다. 따라서 업그레이드하면 프로젝트의 성능이나 안정성에 영향을 미칠 수 있습니다.
이번 답변에서는 gradle 파일에 dependencies을 추가해 보겠습니다.
dependencies {
implementation 'org.ow2.asm:asm:9.2'
}
bard 가 알려준 버전은 9.1 버전이었지만, 현재 시점 (2023.11.22)으로는 9.2가 최신 버전인 것 같습니다. 그리고 이제 빌드를 시도해 보겠습니다.
처음에 보았던 것과 같은 오류 메시지가 나오지 않고 빌드가 마무리되었습니다.
현재 android studio의 빌드 환경은 어떤데?
Android Studio Giraffe | 2022.3.1 Patch 4
Build #AI-223.8836.35.2231.11090377, built on November 14, 2023
Runtime version: 17.0.6+0-b2043.56-10027231 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 4096M
Cores: 8
Registry:
external.systehttp://m.auto.import.disabled=true
debugger.new.tool.window.layout=true
ide.text.editor.with.preview.show.floating.toolbar=false
ide.instant.shutdown=false
ide.experimental.ui=true
Non-Bundled Plugins:
cohttp://m.godwin.json.parser (1.7.1)
SeleniumPlugin (1.3.3)
wu.seal.tool.jsontokotlin (3.7.4)
com.intellij.STAintellij.intellij_plugin (23.10.600)
com.millennialmedia.intellibot@SeleniumLibrary Patched (0.10.143.381)
idea.plugin.protoeditor (223.8214.6)
cohttp://m.jetbrains.kmm (0.8.1(223)-26)
org.jetbrains.compose.desktop.ide (1.5.10)
보시는 것처럼 java 버전은 17까지 올린 상태이고, Android Studio는 Giraffe 버전에서 마지막 patch까지 되어 있는 상태입니다. statable 한 버전에서는 마지막 버전이지 않을까 합니다. canari 버전으로 갈 수 도 있지만, 안정화된 버전을 사용하고 있는 것은 작업하는 데 있어서 안정화된 버전을 이용하는 것이 조금은 수월해 보여서이기도 합니다.
개발 tool 사용에 참고가 되시길 바랍니다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
앱 개발자가 살아가는 방식 (?) (72) | 2023.12.20 |
---|---|
안드로이드 앱 만들기 : Hedgehog 고슴도치 버전 이 안정화 되었습니다. (34) | 2023.12.01 |
안드로이드 앱 만들기 : PDF 열어보기 (인터넷펌) (62) | 2023.11.07 |
안드로이드 앱 만들기 : Paging 처리의 오해(?) (103) | 2023.10.30 |
안드로이드 앱 만들기 studio 에도 bot 바람이??? (4) | 2023.09.24 |