SDK 빌드 도구 출시 노트

Android SDK 빌드 도구는 Android 앱을 빌드하는 데 필요한 Android SDK의 구성요소입니다. 이 도구는<sdk>/build-tools/ 디렉터리에 설치되어 있습니다.

Android SDK Manager로 최신 버전을 다운로드하여 빌드 도구 구성요소를 항상 업데이트된 상태로 유지해야 합니다. Gradle용 Android 플러그인 3.0.0 이상을 사용할 경우 프로젝트는 플러그인이 지정하는 빌드 도구의 기본 버전을 자동으로 사용합니다. 다른 버전의 빌드 도구를 사용하려면 다음과 같이 모듈의 build.gradle에서 buildToolsVersion을 사용하여 버전을 지정합니다.

GroovyKotlin
android {
    buildToolsVersion "34.0.0"
    ...
}
android {
    buildToolsVersion = "34.0.0"
    ...
}

버전 기록

아래 섹션에서는 빌드 도구의 출시에 관한 정보를 확인할 수 있습니다. SDK에서 사용 가능한 빌드 도구의 버전을 확인하려면 Android SDK Manager의 설치된 패키지 목록을 참고하세요.

빌드 도구, 버전 34.0.0 RC3(2023년 4월)

일반적인 버그 수정 및 개선사항

이 업데이트에는 Android 14 미리보기 API로 빌드하기 위한 지원 기능이 포함되었습니다.

이 업데이트에 따라 다음 문제가 해결되었습니다.

  • core-lambda-stubs.jar 버전 33.0.0은 macOS와 Linux/Windows에서 다릅니다. (문제 #237299698)

이 업데이트에 따라 다음 문제가 해결되었습니다.

이 업데이트에는 Android 11 미리보기 API로 빌드하기 위한 지원 기능이 포함되었습니다.

이 업데이트에 따라 다음 문제가 해결되었습니다.

이 업데이트에 따라 다음 문제가 해결되었습니다.

이 업데이트에는 API 수준 29로 빌드하기 위한 지원 기능이 포함되었습니다.

이 업데이트에는 Android Gradle 플러그인 3.2.0 지원이 포함되었으며, 다음과 같은 문제가 해결되었습니다.

  • androidx.renderscript.RenderScript.create()를 호출할 때 앱이 다운되는 JNI 라이브러리 버그가 수정되었습니다.
  • androidx.annotation 리소스에서 Program type already present 빌드 오류를 일으키는 버그가 수정되었습니다.

최신 버전의 D8이 포함되었습니다.

자바 8 언어 기능을 사용 설정할 때 람다 컴파일 지원이 향상되었습니다.

자바 8 언어 기능 지원이 향상되었습니다.

테스트 APK를 위한 레거시 멀티덱스 지원 기능이 추가되었습니다. (문제 #37324038)

일반적인 버그 수정 외에도 이번 출시에는 다음과 같은 업데이트가 포함되었습니다.

  • apksigner를 버전 0.8로 업데이트합니다.
    • 자바 9와의 호환성 (문제 #37137869)
    • ASCII가 아닌 비밀번호를 사용하여 키 저장소와 암호화된 키를 처리하는 새로운 --pass-encoding 매개변수가 추가되었습니다. 자바 9로 전환하고 apksigner가 키 저장소 또는 키를 복호화하지 못하는 경우, 이 매개변수를 사용하여 키 저장소 또는 키를 만들 때 사용한 문자 인코딩을 지정하세요. 자세한 내용은 apksigner 문서를 참고하거나 명령줄에서 apksigner sign --help를 실행하세요.
    • 지원되지 않는 다이제스트 또는 서명 알고리즘으로 인해 apksigner가 JAR 서명을 확인할 수 없을 때 나타나는 오류 메시지가 개선되었습니다. (문제 #63525618)
  • Gradle용 Android 플러그인 3.0.0-beta7 이상을 사용할 때 AAPT2 데몬 모드를 지원합니다.

일반적인 버그 수정 외에도 이번 출시에는 빌드 도구 패키지에 apksigner가 복원되고(버전 26.0.0에서는 실수로 누락됨), 다음과 같은 도구 업데이트가 포함되었습니다.

  • 보안 하드웨어가 보유한 키로 서명할 수 있도록 PKCS #11 지원이 추가되었습니다. (문제 #37140484)
  • 서명하기 전에 추가 JCA Providers의 로드를 지원합니다.
  • APK를 확인할 때 android:targetSandboxVersion을 적용합니다.
  • 서명할 때 파일명에 'CR'(캐리지 리턴), 'LF'(라인 피드) 또는 'NUL'(Null) 특수문자가 포함된 파일이 있는 APK를 거부합니다.
  • 공백이 있는 매개변수를 제대로 처리하기 위해 apksigner.bat를 수정합니다. (문제 #38132450)
  • MANIFEST.MF에서 동일한 항목에 다수의 다이제스트가 있을 때 JAR 서명 확인에서 버그를 수정합니다. (문제 #38497270)

API 수준 26으로 빌드하기 위한 지원 기능이 추가되고 일반적인 버그가 수정되었습니다.

apksigner 업데이트:

  • 기존의 --out 매개변수와의 대칭을 위해 --in 매개변수가 추가되었습니다.
  • --key-pass를 사용하여 키의 비밀번호를 지정하지 않는 경우 apksigner는 키 비밀번호로 키 저장소 비밀번호를 사용합니다. 그러나 키에 다른 비밀번호가 필요한 경우 명령줄에 키 비밀번호를 입력하라는 메시지가 표시됩니다. (문제 #37134986)
  • ASCII가 아닌 비밀번호와 관련해 jarsigner와의 호환 기능이 추가되었습니다. (문제 #37135737)

버그가 수정되었습니다.

이번 출시에는 버그 수정 및 다음과 같은 apksigner의 개선사항이 포함되었습니다.

  • 난독화된 JAR 항목명의 APK를 지원합니다.
  • --print-certs 스위치는 이제 MD5 지문도 덤프합니다.

Jack 도구 모음의 버그 수정:

  • ASCII가 아닌 소스 파일을 지원하는 Jack 문제가 해결되었습니다. (문제 #218892)
  • 일부 컴파일 중에 AssertionError를 일으키는 문제가 해결되었습니다. (문제 #208414)
  • jarsigner를 대체할 APK 서명 도구 apksigner가 추가되었습니다. 기본적으로 apksigner는 (jarsigner가 사용한) 기존의 JAR 서명 체계와 Android 7.0(API 수준 24)에 도입된 APK 서명 체계 v2를 사용하여 APK에 서명합니다. APK 서명 체계 v2로 서명한 APK를 수정하면 서명이 무효화됩니다. 따라서 zipalign과 같은 APK 후처리를 apksigner가 호출된 이후가 아니라 이전에 실행해야 합니다. jarsigner와 달리 apksigner는 APK 정렬과 압축을 유지하기 때문에 apksigner 전에 zipalign을 호출하면 잘 작동됩니다.
  • arm64 기기에서의 RenderScript 지원 라이브러리 문제가 해결되었습니다.
  • 일부 Jelly Bean 기기에서의 RenderScript 지원 라이브러리 문제가 해결되었습니다.
  • Gradled용 Android 플러그인 버전 2.1.0 이상을 사용할 때 renderscriptTargetAPI 21+을 지원합니다.
  • dx 도구의 병합 성능이 향상되었습니다.
  • Windows용 RenderScript 컴파일러 문제가 수정되었습니다.

RenderScript 도구 문제가 해결되었습니다.

Android 6.0(API 수준 23) 출시 관련 지원 기능이 추가되었습니다.

Android 4.4(API 수준 19)~Android 4.1(API 수준 16) 기기에서 RenderScript 커널과의 호환성 문제가 해결되었습니다.

Android 5.1(API 수준 22) 지원 기능이 추가되었습니다.

32비트 모드에서 데이터 레이아웃을 빌드할 때 발생하는 문제가 수정되었습니다.

멀티덱스 스크립트 문제를 수정했습니다.

64K 메서드 참조 제한 문제를 해결하기 위해 APK 및 Jack 지원용 멀티덱스 파일 지원이 추가되었습니다.

Windows 플랫폼의 불안정 문제를 해결하기 위해 Eclipse ADT의 업데이트가 완료되었습니다.

Windows에서 Eclipse ADT 초기 업데이트가 이루어졌습니다. 버전 21.0.2를 사용하세요.

일반 사항:
  • Android 5.0(API 수준 21) 지원 기능이 추가되었습니다.
  • RenderScript는 이제 API 수준 21 이상에서 원활한 32/64비트 작업을 지원합니다.
  • JaCoCo 플러그인 사용 시 Gradle 빌드 시스템 관련 문제가 해결되었습니다. (문제 69174)
  • Windows에서 긴 명령줄과 함께 사용할 input-list 옵션이 추가되었습니다.
일반 사항:
  • Android Wear 지원이 추가되었습니다.
일반 사항:
  • 빌드 도구에 zipalign이 추가되었습니다.
  • 컴파일에 실패한 XML 파일을 무시하기 위해 aapt를 수정했습니다.

RenderScript 지원 문제가 해결되었습니다.

RenderScript 빌드 문제가 해결되었습니다.
  • RenderScript 비트코드 인코딩 문제가 해결되었습니다. (문제 64775)
  • RenderScript에서 수학 기호가 누락되는 문제가 해결되었습니다. (문제 64110)

그 밖의 빌드 문제를 해결했습니다.
  • Gradle을 사용하여 NDK 모드에서 RenderScript를 컴파일하는 지원 기능의 문제를 해결했습니다.
  • dx 빌드에서 BufferOverflowException 문제가 해결되었습니다. (문제 61710)

Android 4.4(API 수준 19) 빌드 타겟 지원이 추가되었습니다.

일부 사소한 빌드 문제가 해결되었습니다.

RenderScript 지원 모드 관련 문제가 해결되었습니다.

Android 4.3(API 수준 18) 빌드 타겟의 지원이 추가되었습니다.

첫 출시입니다.

일반 사항:
  • Android 4.2(API 수준 17) 빌드 타겟의 지원이 포함되었습니다.
  • 빌드 도구를 통합 개발 환경(IDE) 구성요소와 별도로 업데이트할 수 있도록 Android SDK의 빌드별 구성요소를 플랫폼 도구 구성요소와 분리했습니다.