Android 스튜디오 및 Android Gradle 플러그인의 알려진 문제

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 페이지에서는 Android 스튜디오 Dolphin | 2021.3.1 및 Android Gradle 플러그인 7.3.0의 알려진 문제를 추적합니다 여기에 아직 포함되지 않은 문제가 발생하면 버그를 신고하세요.

미리보기로 업그레이드: 각 Android 스튜디오 및 Android Gradle 플러그인 버전의 목표는 안정성과 성능을 개선하고 새로운 기능을 추가하는 것입니다. 지금 향후 출시의 이점을 활용하려면 Android 스튜디오 미리보기를 다운로드하여 설치하세요.

Android 스튜디오의 알려진 문제

이 섹션에서는 최신 Android 스튜디오 안정화 버전에 존재하는 알려진 문제를 설명합니다.

Compose 미리보기 렌더링 중 오류 발생

Android 스튜디오 Chipmunk부터 문제 패널에 java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner 또는 java.lang.ClassNotFoundException: androidx.savedstate.R$id가 표시되면 모듈의 androidx.lifecycle:lifecycle-viewmodel-savedstate에 대한 debugImplementation 종속 항목을 포함해야 합니다.

문제 패널에 java.lang.NoSuchFieldError: view_tree_lifecycle_owner가 표시되면 모듈의 androidx.lifecycle:lifecycle-runtime에 대한 debugImplementation 종속 항목을 포함해야 합니다.

문제 패널에 java.lang.NoClassDefFoundError: Could not initialize class androidx.customview.poolingcontainer.PoolingContainer 또는 java.lang.NoClassDefFoundError: androidx/customview/poolingcontainer/PoolingContainerListener가 표시되면 모듈의 androidx.customview:customview-poolingcontainer에 대한 debugImplementation 종속 항목을 포함해야 합니다.

키와 키 저장소에 다른 비밀번호를 사용할 때 발생하는 오류

버전 4.2부터는 이제 Android 스튜디오가 JDK 11에서 실행됩니다. 이 업데이트로 인해 서명 키와 관련된 기본 동작이 변경됩니다.

Build > Generate Signed Bundle/APK로 이동하여 App Bundle이나 APK의 앱 서명을 구성하려고 할 때 키와 키 저장소에 다른 비밀번호를 입력하면 다음 오류가 발생할 수 있습니다.

Key was created with errors:
Warning: Different store and Key passwords not supported for PKCS12 Key stores

이 문제를 해결하려면 키와 키 저장소에 모두 같은 비밀번호를 입력하세요.

4.2 버전을 설치한 후 Android 스튜디오가 시작되지 않음

스튜디오는 이전 .vmoptions를 가져와 JDK 11에서 사용하는 가비지 컬렉터와 함께 작동하도록 정리하려고 합니다. 이 프로세스가 실패하면 .vmoptions 파일에서 맞춤 VM 옵션을 설정한 특정 사용자에게 IDE가 시작되지 않을 수 있습니다.

이 문제를 해결하려면 .vmoptions에서 맞춤 옵션을 주석 처리하는 것이 좋습니다('#' 문자 사용). .vmoptions 파일은 다음 위치에서 찾을 수 있습니다.

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudio4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudio4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudio4.2/studio64.vmoptions

이 해결 방법을 시도한 후에도 스튜디오가 시작되지 않으면 아래에서 업그레이드 후 스튜디오가 시작되지 않음을 참고하세요.

Android 11 에뮬레이터에서 Database Inspector를 사용하는 앱의 비정상 종료

Database Inspector를 사용하는 앱은 logcat에 다음과 같은 오류와 함께 Android 11 에뮬레이터에서 실행될 때 비정상 종료될 수 있습니다.

 Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

이 문제를 해결하려면 Tools > SDK Manager로 이동하여 Android 11 에뮬레이터를 버전 9 이후로 업그레이드하세요. SDK Platforms 탭에서 Show Package Details 라벨이 지정된 체크박스를 선택하고 Android 11 에뮬레이터 버전 9 이후를 선택합니다.

업그레이드한 후 스튜디오가 실행되지 않음

업그레이드한 후에도 스튜디오가 실행되지 않는 경우 이전 Android 스튜디오 버전에서 잘못된 Android 스튜디오 설정을 가져왔거나 플러그인이 호환되지 않기 때문일 수 있습니다. 이 문제를 해결하려면 Android 스튜디오 버전 및 운영체제에 따라 아래 디렉터리를 삭제(또는 백업 목적으로 이름 변경)한 후 Android 스튜디오를 다시 시작해 보세요. 그러면 Android 스튜디오가 기본 상태로 재설정되고 서드 파티 플러그인은 모두 삭제됩니다.

Android 스튜디오 4.1 이상:

  • Windows: %APPDATA%\Google\AndroidStudio<version>
    예: C:\Users\your_user_name\AppData\Roaming\Google\AndroidStudio4.1

  • macOS: ~/Library/Application Support/Google/AndroidStudio<version>
    예: ~/Library/Application Support/Google/AndroidStudio4.1

  • Linux: ~/.config/Google/AndroidStudio<version>~/.local/share/Google/AndroidStudio<version>
    예: ~/.config/Google/AndroidStudio4.1~/.local/share/Google/AndroidStudio4.1

Android 스튜디오 4.0 이전 버전:

  • Windows: %HOMEPATH%\.AndroidStudio<version>\config
    예: C:\Users\your_user_name\.AndroidStudio3.6\config

  • macOS: ~/Library/Preferences/AndroidStudio<version>
    예: ~/Library/Preferences/AndroidStudio3.6

  • Linux: ~/.AndroidStudio<version>/config
    예: ~/.AndroidStudio3.6/config

Android 스튜디오의 Canary 및 베타 버전의 설정 디렉터리는 X.Y가 아닌 PreviewX.Y(X.Y는 해당 <version>을 의미)입니다. 예를 들어 Android 스튜디오 4.1 Canary 빌드는 출시 후보 및 안정화 출시에서 사용하는 AndroidStudio4.1 디렉터리 대신 AndroidStudioPreview4.1을 사용합니다.

Kotlin 다중 플랫폼 프로젝트의 컴파일 문제

누락된 기호로 인해 Kotlin MPP 코드에 컴파일 오류가 발생할 수 있습니다. Kotlin 플러그인을 버전 1.4로 업그레이드하면 이 문제가 해결됩니다.

Linux에서 키 매핑 충돌

Linux에서 특정 단축키가 기본 Linux 단축키 및 많이 사용되는 창 관리자(예: KDE, GNIME)의 단축키와 충돌합니다. 충돌하는 단축키는 Android 스튜디오에서 예상대로 작동하지 않을 수도 있습니다.

이 문제에 관한 자세한 내용(잠재적인 해결 방법 포함)은 IntelliJ의 버그 추적기를 참조하세요.

Chrome OS의 작은 UI 텍스트

Chrome OS에서는 텍스트가 이전 버전보다 훨씬 작아 보일 수 있습니다. 이 문제를 해결하려면 다음 단계를 따르세요.

  1. File > Settings를 클릭하여 Settings 창을 엽니다.
  2. Appearance & Behavior > Appearance로 이동합니다.
  3. Use custom font를 선택합니다.
  4. 글꼴 크기를 확대합니다.
  5. Settings 창에서 Editor > Font로 이동합니다.
  6. 글꼴 크기를 확대합니다.
  7. OK를 클릭합니다.

코드 수정

이 섹션에서는 코드 편집기와 관련된 알려진 문제를 설명합니다.

키보드 입력이 정지됨 - Linux의 'iBus' 문제

Linux의 iBus 데몬과 Android 스튜디오 간에는 몇 가지 알려진 상호작용이 있습니다. 일부 시나리오에서는 IDE가 키보드 입력에 응답하지 않거나 임의의 문자를 입력하기 시작합니다. 이 버그는 iBus와 XLib + AWT 간의 일부 누락된 동기화로 인해 트리거되며 이미 JetBrainsiBus에 보고되었습니다. 현재 이 문제를 해결하는 세 가지 방법이 있습니다.

  • 해결 방법 1: iBus를 동기 모드로 강제 전환합니다. Android 스튜디오를 시작하기 전에 명령줄에서 다음을 실행합니다.
    $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
  • 해결 방법 2: Android 스튜디오에서 iBus 입력을 사용 중지합니다. Android 스튜디오에서만 iBus 입력을 사용 중지하려면 명령줄에서 다음을 실행합니다.
    $ XMODIFIERS= ./bin/studio.sh
    이렇게 하면 실행 중인 다른 애플리케이션은 그대로 두고 Android 스튜디오의 입력 방법만 사용 중지됩니다. Android 스튜디오가 실행 중일 때 데몬을 다시 시작하면(예: ibus-daemon -rd를 실행) 다른 모든 애플리케이션의 입력 방법이 사용 중지되며 세그먼트 오류로 인해 Android 스튜디오의 JVM이 다운될 수도 있습니다.
  • 해결 방법 3: 단축키 바인딩을 다시 확인하여 Next input shortcut이 Control+Space로 설정되지 않았는지 확인합니다. 이 단축키는 Android 스튜디오에서 코드 작성 단축키입니다. Ubuntu 14.04(Trusty)에서는 Super+Space가 기본 단축키지만 이전 버전의 설정이 여전히 남아있을 수 있습니다. 단축키 바인딩을 확인하려면 명령줄에서 ibus-setup을 실행하여 IBus 환경설정 창을 엽니다. Keyboard Shortcuts 아래에서 Next input method를 확인합니다. Control+Space로 설정되어 있으면 Super+Space나 원하는 다른 단축키로 변경합니다.

프로젝트 구성

이 섹션에서는 프로젝트 구성 및 Gradle 동기화와 관련된 알려진 문제를 설명합니다.

Gradle 동기화 실패: 파이프 단절

Gradle 데몬에서 IPv6 대신 IPv4를 사용하려고 하는 문제입니다.

  • 해결 방법 1: Linux에서 ~/.profile 또는 ~/.bash_profile에 다음을 삽입합니다.
    export _JAVA_OPTIONS="-Djava.net.preferIPv6Addresses=true"
  • 해결 방법 2: Android 스튜디오의 vmoptions 파일에서 -Djava.net.preferIPv4Addresses=true 줄을 -Djava.net.preferIPv6Addresses=true로 변경합니다. 자세한 내용은 네트워킹 IPv6 사용자 가이드를 참조하세요.

Gradle 동기화 또는 SDK Manager의 '피어가 인증되지 않음' 오류

이러한 오류의 근본 원인은 $JAVA_HOME/jre/lib/certificates/cacerts의 인증서 누락입니다. 이 오류를 해결하려면 다음과 같이 진행합니다.

  • 프록시 서버를 통해 연결되어 있다면 직접 연결해 봅니다. 직접 연결이 작동하는 경우 프록시를 통해 연결하려면 keytool을 사용하여 프록시 서버의 인증서를 cacerts 파일에 추가해야 할 수 있습니다.
  • 수정되지 않은 지원 JDK를 다시 설치합니다. Ubuntu 사용자에게 영향을 미치는 알려진 문제가 있으며, 이 문제로 인해 /etc/ssl/certs/java/cacerts가 비어있게 됩니다. 이 문제를 해결하려면 명령줄에서 다음을 실행합니다.
    sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

배포

이 섹션에서는 연결된 기기에 앱을 배포하는 것과 관련된 알려진 문제를 설명합니다.

[Mac OS만 해당] /System/Volumes/Data에 저장된 프로젝트에서 Gradle 파일을 감시하는 데 문제가 있어 증분 업데이트가 적용되지 않음

Gradle 문제 18149Gradle 버전 7.0 이상이 필요하기 때문에 Android Gradle 플러그인 버전 7.0 이상에 영향을 미칩니다. Gradle 7.0부터 파일 감시가 기본적으로 사용 설정됩니다. Mac OS에서 작업 중이며 프로젝트가 /System/Volumes/Data에 저장되는 경우 Gradle 파일 감시가 파일 변경사항을 제대로 추적하지 못합니다. 이로 인해 빌드 시스템이 파일 변경사항을 볼 수 없으므로 APK가 업데이트되지 않습니다. 그러면 증분 배포 코드는 아무 작업도 수행하지 않습니다. 로컬 APK 상태가 기기에서의 상태와 동일하기 때문입니다.

이 문제를 해결하려면 프로젝트 디렉터리를 사용자 디렉터리(/Users/username 아래)로 옮겨야 합니다. 그러면 빌드 시스템은 Gradle 파일 감시에 의해 파일 변경사항에 관해 적절하게 알림을 받게 되고 증분 변경사항이 성공적으로 적용됩니다.

macOS High Sierra의 Android Emulator HAXM

macOS High Sierra(10.13)의 Android Emulator는 HAXM 6.2.1+가 있어야 macOS 호환성과 안정성이 극대화됩니다. 그러나 macOS 10.13에는 HAXM과 같은 커널 확장자를 설치하는 더 복잡한 프로세스가 있습니다. 다음과 같이 커널 확장자가 설치될 수 있도록 수동으로 허용해야 합니다.

  1. 먼저 SDK Manager에서 최신 버전의 HAXM을 설치합니다.
  2. macOS에서 System Preferences(시스템 환경설정) > Security and Privacy(보안 및 개인 정보 보호)로 이동합니다.
  3. System software from developer 'Intel Corporation Apps' was blocked from loading(개발자 'Intel Corporation Apps'의 시스템 소프트웨어가 차단되어 로드할 수 없습니다)라는 경고가 표시되면 Allow(허용)를 클릭합니다.

자세한 내용과 해결 방법은 이 Apple 웹페이지문제 62395878을 참조하세요.

변경사항 적용

이 섹션에서는 변경사항 적용과 관련된 알려진 문제를 설명합니다.

새로운 앱 이름이 적용되지 않음

앱 이름을 변경한 후 변경사항을 적용하려고 할 때 업데이트된 이름이 반영되지 않을 수 있습니다. 이 문제를 해결하려면 Run 실행 아이콘 을 클릭하여 앱을 다시 배포한 후 변경사항을 확인하세요.

Android 런타임의 문제로 인해 오류가 발생함

Android 8.0 또는 8.1을 실행하는 기기를 사용하는 경우 특정 유형의 변경사항을 적용하려고 할 때(특히 Kotlin을 사용하는 경우) 'VERIFICATION_ERROR' 메시지가 표시될 수 있습니다. 이 메시지는 Android 9.0 이상에서 수정된 Android 런타임의 문제로 인해 표시됩니다. 이 문제로 인해 변경사항이 적용되지 않지만 앱을 다시 실행 실행 아이콘하여 변경사항을 확인할 수 있습니다. 하지만 기기를 Android 9.0 이후로 업그레이드하는 것이 좋습니다.

디버깅 및 테스트

이 섹션에서는 앱의 디버깅 및 테스트와 관련된 알려진 문제를 설명합니다.

Android 스튜디오에서 JUnit 테스트를 실행할 때 클래스 경로의 리소스가 누락됨

자바 모듈에 특정 리소스 폴더가 있으면 IDE에서 테스트를 실행할 때 이러한 리소스가 발견되지 않습니다. 명령줄에서 Gradle을 사용하여 테스트를 실행하면 제대로 작동합니다. IDE에서 실행하는 Gradle check 작업도 제대로 작동합니다. 자세한 내용은 문제 64887을 참조하세요.

IntelliJ 13부터 클래스 경로로 하나의 폴더만 사용할 수 있기 때문에 이 문제가 발생합니다. IntelliJ의 빌더는 모든 리소스를 빌드 폴더에 복사하지만, Gradle은 리소스를 복사하지 않습니다.

  • 해결 방법 1: 단위 테스트를 실행하는 대신 IDE에서 Gradle check 작업을 실행합니다.
  • 해결 방법 2: 빌드 스크립트를 업데이트하여 리소스를 빌드 폴더에 수동으로 복사합니다. 자세한 내용은 댓글 #13을 참조하세요.

JUnit 테스트를 실행하면 코드가 두 번 컴파일될 수 있음

새로운 프로젝트를 생성하면 두 가지 '출시 전' 단계인 Make와 Gradle 인식 Make를 포함하는 템플릿 JUnit 구성이 생성될 수 있습니다. 그런 다음, 이 구성은 생성된 모든 JUnit 실행 구성으로 전파됩니다.

  • 현재 프로젝트에서 이 문제를 해결하려면 Run > Edit Configurations를 클릭하고 기본 JUnit 구성을 변경하여 Gradle 인식 Make 단계만 포함하도록 합니다.
  • 향후 프로젝트에서 이 문제를 해결하려면 File > Close Project를 클릭합니다. 그러면 환영 화면이 나타납니다. 다음으로, Configure > Project Defaults > Run Configurations를 클릭하고 JUnit 구성을 변경하여 Gradle 인식 Make 단계만 포함하도록 합니다.

일부 테스트 실행 구성이 작동하지 않음

테스트 메서드를 마우스 오른쪽 버튼으로 클릭할 때 사용 가능한 실행 구성이 모두 유효한 것은 아닙니다. 특히 다음 구성이 유효하지 않습니다.

  • Gradle 실행 구성(Gradle 로고 아이콘이 있음)은 작동하지 않습니다.
  • JUnit 실행 구성(초록색 Android가 없는 아이콘이 있음)은 로컬 JVM에서 실행할 수 없는 계측 테스트에 적용되지 않습니다.
Android 스튜디오는 또한 주어진 컨텍스트(예: 특정 클래스 또는 메서드를 마우스 오른쪽 버튼으로 클릭)에서 생성된 실행 구성을 기억하여 향후에 다른 구성에서 실행하지 않도록 합니다. 이 문제를 해결하려면 Run > Edit Configurations를 클릭하고 잘못 생성된 구성을 삭제합니다.

네이티브 코드를 디버깅하는 동안 자바 중단점 추가

앱이 네이티브 코드의 중단점에서 일시중지된 동안 AutoDual 디버거가 새롭게 설정된 자바 중단점을 즉시 인식하지 못할 수 있습니다. 이 문제를 방지하려면 디버그 세션을 시작하기 전에 또는 자바 중단점에서 앱이 일시중지된 상태에서 자바 중단점을 추가합니다. 자세한 내용은 문제 229949를 참조하세요.

네이티브 디버거에서 나가기

자바 및 네이티브 코드를 디버그할 때 Auto 또는 Dual 디버거를 사용하는 동안 자바 코드에서 네이티브 함수로 들어갔으며(예: 네이티브 함수를 호출하는 자바 코드 줄에서 디버거가 실행을 일시중지하고 개발자가 Step Into 를 클릭함) 개발자가 자바 코드로 돌아가고 싶은 경우 Step Out 또는 Step Over 대신 Resume Program 을 클릭합니다. 앱 프로세스는 계속 일시중지되므로 재개하려면 your-module-java 탭에서 Resume Program 을 클릭하세요. 자세한 내용은 문제 224385를 참조하세요.

라이브러리를 로드하는 동안 네이티브 디버거가 중단됨

Android 스튜디오 4.2 이후로 업그레이드한 후 처음으로 네이티브 디버거를 사용하는 동안 Android 기기에서 라이브러리를 로드하는 중에는 네이티브 디버거가 응답하지 않을 수 있습니다. 이 문제는 디버거를 중지했다가 다시 시작하더라도 계속 발생하는 고질적인 문제입니다. 이 문제를 해결하려면 $USER/.lldb/module-cache/에서 LLDB 캐시를 삭제하세요.

네이티브 디버거가 '디버거 프로세스가 종료 코드 127로 완료됨'과 충돌함

이 오류는 Linux 기반 플랫폼에서 네이티브 디버거를 시작할 때 발생합니다. 네이티브 디버거에 필요한 라이브러리 중 하나가 로컬 시스템에 설치되지 않았음을 나타냅니다. 누락된 라이브러리의 이름은 이미 idea.log 파일에 출력되었을 수도 있습니다. 그렇지 않은 경우 터미널을 사용하여 Android 스튜디오 설치 디렉터리로 이동한 후 bin/lldb/bin/LLDBFrontend --version 명령줄을 실행하여 누락된 라이브러리를 알아볼 수 있습니다. 일반적으로, 일부 Linux 배포판이 이미 ncurses6로 업그레이드되었으므로 누락된 라이브러리는 ncurses5입니다.

프로파일러

이 섹션에서는 프로파일러와 관련된 알려진 문제를 설명합니다.

네이티브 메모리 프로파일러: 앱이 시작되는 동안 프로파일링을 할 수 없음

현재 앱이 시작되는 동안 네이티브 메모리 프로파일러를 사용할 수 없습니다. 이 옵션은 향후 출시에서 사용 설정될 예정입니다.

이 문제를 해결하려면 Perfetto 독립형 명령줄 프로파일러를 사용하여 시작 프로필을 캡처하면 됩니다.

CPU 프로파일러의 시간 초과 오류

Sample Java Methods 또는 Trace Java Methods 구성을 선택하면 Android 스튜디오 CPU 프로파일러에서 '기록 중지 실패' 오류가 발생할 수도 있습니다. 특히 idea.log 파일에 다음 오류 메시지가 표시되는 경우 시간 초과 오류입니다.

Wait for ART trace file timed out

시간 초과 오류는 샘플링된 메서드보다 추적된 메서드에, 짧은 기록보다 긴 기록에 더 많은 영향을 미치는 경향이 있습니다. 일시적인 해결 방법으로, 짧은 기록을 시도하여 오류가 사라지는지 확인하는 것이 유용할 수도 있습니다.

프로파일러에 시간 초과 문제가 발생하면 기기의 제조업체/모델과 idea.log 및 logcat의 관련 항목을 포함하여 버그를 신고하세요.

디버깅 또는 프로파일링 시 ADB 예외 발생

플랫폼 도구 29.0.3을 사용하는 경우 네이티브 디버깅 및 Android 스튜디오 프로파일러가 제대로 작동하지 않을 수 있으며 Help > Show Log를 선택하면 idea.log 파일에 'AdbCommandRejectedException' 또는 'Failed to connect port'가 표시될 수 있습니다. 플랫폼 도구를 29.0.4 이후로 업그레이드하면 두 가지 문제가 모두 해결됩니다.

플랫폼 도구를 업그레이드하려면 다음을 실행하세요.

  1. Android 스튜디오에서 Tools > SDK Manager를 클릭하거나 툴바에서 SDK Manager 를 클릭하여 SDK Manager를 엽니다.
  2. Android SDK Platform-Tools 옆의 체크박스를 클릭하여 체크표시를 표시합니다. 왼쪽 열에 다운로드 아이콘 이 표시됩니다.
  3. Apply 또는 OK를 클릭합니다.

플러그인에서 빌드 출력 창이 작동하지 않음

CMake simple highlighter 플러그인을 사용하면 콘텐츠가 빌드 출력 창에 표시되지 않습니다. 빌드가 실행되고 빌드 출력 탭이 표시되지만 출력이 표시되지 않습니다(문제 #204791544).

설치 순서로 인해 실행되지 않음

이전 버전보다 먼저 최신 버전의 Android 스튜디오를 설치하면 이전 버전이 실행되지 않을 수 있습니다. 예를 들어 먼저 Android 스튜디오의 카나리아 버전을 설치한 후 안정화 버전을 설치하고 실행하려고 하면, 안정화 버전이 실행되지 않을 수 있습니다. 이러한 경우 안정화(이전) 버전을 실행하려면 캐시를 삭제해야 합니다. macOS에서 캐시를 지우려면 Library/ApplicationSupport/Google/AndroidStudioversion_number 디렉터리를 삭제합니다. Windows에서 캐시를 삭제하려면 디스크 정리를 사용합니다.

Espresso Test Recorder가 Compose와 함께 작동하지 않음

Compose를 포함하는 프로젝트에서 Espresso Test Recorder가 작동하지 않습니다. Compose가 포함된 프로젝트용 UI 테스트를 만들려면 Compose 레이아웃 테스트를 참고하세요.

Android Gradle 플러그인의 알려진 문제

이 섹션에서는 최신 Android Gradle 플러그인 안정화 버전에 존재하는 알려진 문제를 설명합니다.

일부 동적 기능 라이브러리 종속 항목이 린트 검사되지 않음

앱 모듈에서 checkDependencies = true인 상태에서 린트를 실행할 경우 동적 기능 라이브러리 종속 항목은 동시에 앱 종속 항목이 아닌 한, 검사되지 않습니다(문제 #191977888). 이 문제를 해결하려면 린트 작업을 동적 기능 라이브러리에서 실행하면 됩니다.

캐리지 리턴(CR) 문자로 이름이 지정된 파일 서명

JAR 서명(v1 체계)은 캐리지 리턴 문자가 포함된 파일 이름을 지원하지 않습니다(문제 #63885809).

빌드 시점에서 변형 출력 수정이 작동하지 않을 수 있음

Variant API를 사용하여 변형 출력을 조작하는 기능이 새로운 플러그인에서 작동하지 않습니다. 그러나 아래와 같이 빌드 시간 중에 APK 이름을 변경하는 등의 간단한 작업은 여전히 작동합니다.

// If you use each() to iterate through the variant objects,
// you need to start using all(). That's because each() iterates
// through only the objects that already exist during configuration time—
// but those object don't exist at configuration time with the new model.
// However, all() adapts to the new model by picking up object as they are
// added during execution.
android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

그러나 outputFile 객체 액세스가 관련된 더 복잡한 작업은 더 이상 작동하지 않습니다. 구성 단계에서 변형별 작업이 더 이상 생성되지 않기 때문입니다. 그 결과, 플러그인이 모든 출력을 미리 다 알지는 못하지만 구성 시간은 더 빨라집니다.

manifestOutputFile을 더 이상 사용할 수 없음

processManifest.manifestOutputFile() 메서드는 더 이상 사용할 수 없으며 이 메서드를 호출하면 다음과 같은 오류가 발생합니다.

A problem occurred configuring project ':myapp'.
   Could not get unknown property 'manifestOutputFile' for task
   ':myapp:processDebugManifest' of type
   com.android.build.gradle.tasks.ProcessManifest.

각 변형의 매니페스트 파일을 가져오기 위해 manifestOutputFile()을 호출하는 대신 생성된 모든 매니페스트가 포함된 디렉터리의 경로를 반환하기 위해 processManifest.manifestOutputDirectory()를 호출할 수 있습니다. 그런 다음, 매니페스트를 찾아 여기에 로직을 적용할 수 있습니다. 아래 샘플은 매니페스트에서 버전 코드를 동적으로 변경합니다.

android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        output.processManifest.doLast {
            // Stores the path to the maifest.
            String manifestPath = "$manifestOutputDirectory/AndroidManifest.xml"
            // Stores the contents of the manifest.
            def manifestContent = file(manifestPath).getText()
            // Changes the version code in the stored text.
            manifestContent = manifestContent.replace('android:versionCode="1"',
                    String.format('android:versionCode="%s"', generatedCode))
            // Overwrites the manifest with the new text.
            file(manifestPath).write(manifestContent)
        }
    }
}

AGP 7.3.0 AIDL 지원 및 Kotlin 1.7.x 문제

Kotlin 1.7.x에서 KAPT와 함께 AGP 7.3.0을 사용하면 특정 빌드 변형의 AIDL 소스 세트가 삭제됩니다. main/, 빌드 유형, 제품 버전, 제품 버전의 조합을 비롯한 다른 AIDL 소스 세트는 여전히 사용할 수 있습니다. 특정 변형의 AIDL 소스 세트를 사용해야 하는 경우 Kotlin 1.6.21을 사용하세요.

수정된 알려진 문제

이 섹션에서는 최근 버전에서 해결된 알려진 문제를 설명합니다. 이러한 문제가 발생한 경우 최신 안정화 버전 또는 미리보기 버전으로 Android 스튜디오를 업데이트해야 합니다.

Android 스튜디오 2021.1.1에서 해결됨

  • 린트 출력 누락: 린트 작업이 UP-TO-DATE일 때 stdout에 린트 텍스트 출력이 표시되지 않습니다(문제 #191897708). AGP 7.1.0-alpha05에서 해결되었습니다.
  • Hilt 플러그인을 사용하는 앱 프로젝트의 단위 테스트 관련 문제: 단위 테스트 클래스 경로에 계측되지 않은 앱 클래스가 포함되어 있습니다. 즉, Hilt에서는 단위 테스트 실행 시 종속 항목 처리를 위해 앱 클래스를 계측하지 않습니다(문제 #213534628). AGP 7.1.1에서 해결되었습니다.

Android 스튜디오 2020.3.1에서 해결됨

  • Kotlin 프로젝트의 린트 예외: checkDependencies = true를 설정한 Kotlin 프로젝트에서는 null 포인터 예외 또는 오류가 발생할 수 있습니다(문제 #158777858).

Android 스튜디오 4.2에서 해결됨

  • macOS Big Sur에서 IDE가 정지됨: 대화상자를 열 때 Android 스튜디오 4.1이 중지될 수 있습니다.

Android 스튜디오 4.1에서 해결됨

  • 이전 버전의 IDE에서 메모리 설정을 적용하기 위해 다시 시작: Android 스튜디오를 업데이트한 후 이전 버전의 IDE에서 이전한 메모리 설정을 모두 적용하려면 Android 스튜디오를 다시 시작해야 합니다.
  • 맞춤 권한 문자열이 있는 매니페스트 클래스가 더 이상 기본적으로 생성되지 않음: 클래스를 생성하려면 android.generateManifestClass = true를 설정합니다.

Android 스튜디오 3.6에서 해결됨

  • LineageOS의 APK 설치 오류: LineageOS 또는 CyanogenMod의 특정 버전을 실행하는 기기에 앱을 배포할 수 없고 INSTALL_PARSE_FAILED_NOT_APK 예외가 발생할 수 있습니다.

    Android 스튜디오 3.6 베타 1 이상에서 IDE는 앱이 LineageOS 또는 CyanogenMod 기기에 앱을 배포할 때 전체 앱 설치를 실행하여 이 예외를 처리하며 이에 따라 배포 시간이 길어질 수 있습니다.

Android 스튜디오 3.5.2에서 해결됨

  • 손상된 XML 코드 스타일: XML 코드를 수정할 때 메뉴 바에서 Code > Reformat Code를 선택하면 IDE에서 잘못된 코드 스타일을 적용합니다.

Android 스튜디오 3.3.1에서 해결됨

  • C++ 기반 프로젝트 검색 시 메모리 부족 오류: Gradle이 동일한 드라이브에서 둘 이상의 위치에 C ++ 코드가 있는 프로젝트를 검색하면 첫 번째 공통 디렉터리 아래의 모든 디렉터리가 검색에 포함됩니다. 대량의 디렉터리와 파일을 검색하면 메모리 부족 오류가 발생할 수 있습니다.

    이 문제에 관한 자세한 내용은 문제와 관련된 버그를 참조하세요.