Android 스튜디오 3.2(2018년 9월)
Android 스튜디오 3.2는 다양한 새 기능과 개선사항이 포함된 메이저 버전입니다.
3.2.1(2018년 10월)
이번 Android 스튜디오 3.2 업데이트에는 다음과 같은 변경 및 수정사항이 포함되어 있습니다.
- 이제 번들 Kotlin 버전이 1.2.71입니다.
- 이제 기본 빌드 도구 버전은 28.0.3입니다.
- 탐색 라이브러리의 인수 유형 이름이
type
에서argType
으로 변경되었습니다. - 다음 버그가 수정되었습니다.
- Data Binding 라이브러리 사용 시 변수 이름에 밑줄이 포함되어 있으면 컴파일 오류가 발생했습니다.
- CMake로 인해 IntelliSense 및 기타 CLion 기능이 작동하지 않았습니다.
SliceProvider
를 추가하면androidx.*
라이브러리를 사용하지 않는 프로젝트에서 컴파일 오류가 발생했습니다.- 일부 Kotlin 단위 테스트가 실행되지 않았습니다.
- 데이터 결합 문제로 인해
PsiInvalidElementAccessException
이 발생했습니다. <merge>
요소로 인해 때로 Layout Editor가 비정상 종료되었습니다.
3.2.0 알려진 문제
참고: 이 문제는 Android 스튜디오 3.2.1에서 해결되었습니다.
Kotlin 버전 1.2.70을 사용하지 않는 것이 좋습니다.
Kotlin 버전 1.2.61에서는 Android 스튜디오 중단을 일으킬 수 있는 버그가 수정되었지만, Kotlin 1.2.70에는 포함되지 않았습니다.
그러나 Kotlin 버전 1.2.71 이상에는 이 수정사항이 포함되었습니다.
-
일반적으로 빌드 도구 버전을 지정할 필요는 없지만
renderscriptSupportModeEnabled
가true
로 설정된 Android Gradle 플러그인 3.2.0을 사용한다면 각 모듈의build.gradle
파일에 다음을 포함해야 합니다.android.buildToolsVersion "28.0.3"
도우미의 새로운 기능
새로운 도우미가 Android 스튜디오의 최신 변경사항을 알려줍니다.
새로 설치하거나 업데이트한 후 Android 스튜디오를 시작할 때 표시할 새 정보가 있음이 감지되면 도우미가 열립니다. Help > What's new in Android Studio를 선택하여 도우미를 열 수도 있습니다.
Android Jetpack
Android Jetpack을 사용하면 제공되는 구성요소, 도구, 가이드를 통해 반복적인 작업을 하지 않고도 테스트 가능한 고품질 앱을 쉽고 빠르게 빌드해 Android 개발을 가속화할 수 있습니다. Android 스튜디오에는 Jetpack을 지원하기 위한 다음 업데이트가 포함되어 있습니다. 자세한 내용은 Jetpack 문서를 참조하세요.
Navigation Editor
새로운 Navigation Editor가 Android Jetpack의 탐색 구성요소와 통합되어 앱의 탐색 구조를 만들기 위한 그래픽 뷰를 제공합니다. Navigation Editor는 인앱 대상 간 탐색의 디자인과 구현을 단순화합니다.
Android 스튜디오 3.2에서는 Navigation Editor가 실험 기능입니다. Navigation Editor를 사용 설정하려면 File > Settings(Mac에서는 Android Studio > Preferences)를 클릭하고, 왼쪽 창에서 Experimental 카테고리를 선택한 후 Enable Navigation Editor 옆의 체크박스를 선택하고 Android 스튜디오를 다시 시작합니다.
자세한 내용은 Navigation Editor 문서를 참고하세요.
AndroidX 이전
Jetpack의 일부로 androidx
네임스페이스를 사용하여 Android 지원 라이브러리를 새로운 Android 확장 라이브러리로 이전하고 있습니다. 자세한 내용은 AndroidX 개요를 참고하세요.
Android 스튜디오 3.2를 사용하면 새로운 이전 기능을 통해 이 과정을 완료할 수 있습니다.
기존 프로젝트를 AndroidX로 이전하려면 Refactor > Migrate to AndroidX를 선택하세요. AndroidX 네임스페이스로 이전하지 않은 Maven 종속 항목이 있다면 Android 스튜디오 빌드 시스템에서 이러한 프로젝트 종속 항목도 자동으로 변환합니다.
Android Gradle 플러그인은 gradle.properties
파일에 설정할 수 있는 다음과 같은 전역 플래그를 제공합니다.
android.useAndroidX
:true
로 설정하면 이 플래그는 지금부터 AndroidX 사용을 시작하려고 함을 나타냅니다. 플래그가 없으면 Android 스튜디오는 플래그가false
로 설정된 것처럼 작동합니다.android.enableJetifier
:true
로 설정하면 이 플래그는 Android Gradle 플러그인의 도구 지원을 사용하여 기존 서드 파티 라이브러리가 AndroidX용으로 작성된 것처럼 자동으로 변환될 것임을 나타냅니다. 플래그가 없으면 Android 스튜디오는 플래그가false
로 설정된 것처럼 작동합니다.
Migrate to AndroidX 명령어를 사용하면 두 플래그가 true
로 설정됩니다.
AndroidX 라이브러리 사용을 즉시 시작하려고 하며 기존 서드 파티 라이브러리를 변환할 필요가 없다면 android.useAndroidX
플래그를 true
로 설정하고 android.enableJetifier
플래그를 false
로 설정합니다.
Android App Bundle
Android App Bundle은 앱의 컴파일된 코드와 리소스를 모두 포함하지만 APK 생성 및 서명을 Google Play 스토어에 맡기는 새로운 업로드 형식입니다.
Google Play의 새로운 앱 제공 모델은 App Bundle을 사용하여 각 사용자의 기기 설정에 최적화된 APK를 생성하고 제공하므로, 각 사용자는 앱 실행에 필요한 코드와 리소스만 다운로드하면 됩니다. 개발자가 더 이상 여러 APK를 빌드하고 서명하고 관리할 필요가 없으며 사용자는 더 작고 최적화된 앱을 다운로드하게 됩니다.
또한 앱 프로젝트에 기능 모듈을 추가하여 App Bundle에 포함할 수 있습니다. 그러면 사용자가 앱의 기능을 필요에 따라 다운로드하여 설치할 수 있습니다.
번들을 빌드하려면 Build > Build Bundle(s) / APK(s) > Build Bundle(s)를 선택하세요.
Android App Bundle 빌드와 분석에 관한 안내를 비롯하여 자세한 내용은 Android App Bundle을 참고하세요.
Layout Editor의 샘플 데이터
많은 Android 레이아웃에는 앱 개발의 디자인 단계에서 레이아웃의 모양과 느낌을 시각화하기 어렵게 만들 수 있는 런타임 데이터가 있습니다. 이제는 샘플 데이터가 풍부한 Layout Editor에서 손쉽게 뷰의 미리보기를 볼 수 있습니다. 뷰를 추가하면 Design 창의 뷰 아래에 버튼이 표시됩니다. 이 버튼을 클릭하여 design-time 뷰 속성을 설정할 수 있습니다. 다양한 샘플 데이터 템플릿에서 선택하고 뷰를 채울 샘플 항목 수를 지정할 수 있습니다.
샘플 데이터를 사용해 보려면 RecyclerView
를 새 레이아웃에 추가하고 뷰 아래에 있는 design-time 속성 버튼 을 클릭한 후 샘플 데이터 템플릿의 캐러셀에서 항목을 선택하세요.
슬라이스
슬라이스를 사용하면 새로운 방식으로 Android의 다른 사용자 인터페이스 표면에 앱 기능의 일부를 삽입할 수 있습니다. 예를 들어 슬라이스를 사용하여 Google 검색 제안사항에 앱 기능과 콘텐츠를 표시할 수 있습니다.
Android 스튜디오 3.2에는 새로운 Slice Provider API로 앱을 확장하는 데 도움이 되는 템플릿이 내장되어 있으며, 슬라이스를 구성할 때 권장사항을 따를 수 있게 하는 새로운 Lint 검사가 있습니다.
시작하려면 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭한 다음 New > Other > Slice Provider를 선택합니다.
슬라이스 상호작용을 테스트하는 방법을 비롯하여 자세한 내용은 슬라이스 시작 가이드를 참조하세요.
Kotlin 1.2.61
Android 스튜디오 3.2는 Kotlin 1.2.61과 번들로 제공되며, 새로운 Android SDK는 Kotlin과 더 잘 통합됩니다. 자세한 내용은 Android 개발자 블로그를 참조하세요.
IntelliJ IDEA 2018.1.6
핵심 Android 스튜디오 IDE가 2018.1.6 출시를 통해 업데이트되어 IntelliJ IDEA에서 개선되었습니다.
Android 프로파일러
Android 스튜디오 3.2에서 다음과 같은 새로운 Android 프로파일러 기능을 사용해 보세요.
세션
이제 프로파일러 데이터를 세션으로 저장하여 나중에 다시 확인하고 검사할 수 있습니다. 프로파일러는 IDE가 다시 시작될 때까지 세션 데이터를 유지합니다.
메서드 트레이스를 기록하거나 힙 덤프를 캡처하면 IDE에서 앱의 네트워크 활동과 함께 그 데이터를 현재 세션에 별도 항목으로 추가하므로 기록을 앞뒤로 손쉽게 전환하여 데이터를 비교할 수 있습니다.
시스템 트레이스
CPU 프로파일러에서 새로운 시스템 트레이스 구성을 선택하여 기기의 시스템 CPU와 스레드 활동을 검사할 수 있습니다. 이 트레이스 구성은 systrace
기반으로 구축되며, UI 버벅거림 현상과 같은 시스템 수준 문제를 조사하는 데 유용합니다.
이 트레이스 구성을 사용하는 동안 네이티브 추적 API로 C/C++ 코드를 계측하거나 Trace
클래스로 자바 코드를 계측하여 프로파일러 타임라인에서 중요한 코드 루틴을 시각적으로 표시할 수 있습니다.
메모리 프로파일러의 JNI 참조 검사
Android 8.0(API 수준 26) 이상을 실행하는 기기에 앱을 배포한다면 이제 메모리 프로파일러를 사용하여 앱의 JNI 코드를 위한 메모리 할당을 검사할 수 있습니다.
앱이 실행되는 동안 아래에서와 같이, 검사하려는 타임라인 부분을 선택하고, 클래스 목록 위에 있는 드롭다운 메뉴에서 JNI heap을 선택합니다. 그런 다음 평소와 같이 힙에 있는 객체를 검사하고 Allocation Call Stack 탭에서 객체를 더블클릭하여 코드에서 JNI 참조가 할당되고 해제된 위치를 확인할 수 있습니다.
메모리 힙 덤프 파일 가져오기, 내보내기 및 검사하기
이제 메모리 프로파일러로 생성된 .hprof
메모리 힙 덤프 파일을 가져오고, 내보내고, 검사할 수 있습니다.
프로파일러의 Sessions 창에서 Start new profiler session 을 클릭한 후 Load from file을 선택하여 .hprof
파일을 가져옵니다. 그런 다음 다른 힙 덤프와 마찬가지로 메모리 프로파일러에서 데이터를 검사할 수 있습니다.
힙 덤프 데이터를 저장하고 나중에 검토하려면 Sessions 창의 Heap Dump 항목 오른쪽에 있는 Export Heap Dump 버튼을 사용하세요. Export As 대화상자가 표시되면 .hprof
파일 이름 확장자를 사용하여 파일을 저장하세요.
앱이 시작하는 동안 CPU 활동 기록
이제 다음과 같이 앱이 시작하는 동안 CPU 활동을 기록할 수 있습니다.
- 기본 메뉴에서 Run > Edit Configurations를 선택합니다.
- 원하는 실행 구성의 Profiling 탭에서 Start recording a method trace on startup 옆의 체크박스를 선택합니다.
- 드롭다운 메뉴에서 사용할 CPU 기록 구성을 선택합니다.
- Run > Profile을 선택하여 Android 8.0(API 수준 26) 이상을 실행하는 기기에 앱을 배포합니다.
CPU 트레이스 내보내기
CPU 프로파일러로 CPU 활동을 기록한 후 데이터를 .trace
파일로 내보내어 다른 사용자와 공유하거나 나중에 검사할 수 있습니다.
CPU 활동을 기록한 후 트레이스를 내보내려면 다음 단계를 따르세요.
- CPU 타임라인에서 내보내려는 기록을 마우스 오른쪽 버튼으로 클릭합니다.
- 드롭다운 메뉴에서 추적 내보내기를 선택합니다.
- 파일을 저장할 위치로 이동한 다음 저장을 클릭합니다.
CPU 트레이스 파일 가져오기 및 검사
이제 Debug API 또는 CPU 프로파일러에서 만든 .trace
파일을 가져와서 검사할 수 있습니다. 현재 시스템 트레이스 기록은 가져올 수 없습니다.
프로파일러의 Sessions 창에서 Start new profiler session 을 클릭한 후 Load from file을 선택하여 트레이스 파일을 가져옵니다. 그런 다음 평소와 비슷한 방식으로 CPU 프로파일러에서 데이터를 검사할 수 있지만 다음과 같은 몇 가지 예외가 있습니다.
- CPU 활동은 CPU 타임라인을 따라 표시되지 않습니다.
- 스레드 활동 타임라인은 각 스레드에서 트레이스 데이터를 사용할 수 있는 위치만 나타내며 실제 스레드 상태(예: 실행 중, 대기 중, 일시중지 중)를 나타내지는 않습니다.
Debug API를 사용하여 CPU 활동 기록
이제 Debug API로 앱을 계측하여 CPU 프로파일러에서 CPU 활동 기록을 시작하고 중지할 수 있습니다. 앱을 기기에 배포하면 프로파일러는 앱이 startMethodTracing(String tracePath)
를 호출할 때 CPU 활동 기록을 자동으로 시작하고 앱이 stopMethodTracing()
을 호출할 때 기록을 중지합니다. 이 API를 사용하여 트리거된 CPU 활동을 기록하는 동안 CPU 프로파일러는 Debug API를 선택된 CPU 기록 구성으로 표시합니다.
에너지 프로파일러
에너지 프로파일러는 앱의 예상 에너지 사용량뿐 아니라 wakelock, 알람, 작업과 같이 에너지 사용량에 영향을 주는 시스템 이벤트를 시각적으로 표시합니다.
Android 8.0(API 26) 이상을 실행하는 연결된 기기 또는 Android Emulator에서 앱을 실행하면 Profiler 창 하단에 에너지 프로파일러가 새 행으로 표시됩니다.
Energy 행을 클릭하면 에너지 프로파일러 뷰가 최대화됩니다. 마우스 포인터를 타임라인 막대 위에 놓으면 CPU, 네트워크, 위치(GPS) 리소스뿐 아니라 관련 있는 시스템 이벤트별로 분석한 에너지 사용 내역을 볼 수 있습니다.
에너지 사용량에 영향을 미치는 시스템 이벤트는 Energy 타임라인 아래의 System 타임라인에 표시됩니다. Energy 타임라인에서 기간을 선택하면 지정된 기간 내의 시스템 이벤트 세부정보가 이벤트 창에 표시됩니다.
호출 스택 및 wakelock과 같은 시스템 이벤트의 기타 세부정보를 보려면 이벤트 창에서 선택하세요. 시스템 이벤트에 책임이 있는 코드로 이동하려면 호출 스택에서 항목을 더블클릭하세요.
린트 검사
Android 스튜디오 3.2에는 린트 검사의 새롭고 향상된 기능이 많이 포함되어 있습니다.
새로운 린트 검사는 잠재적인 사용성 문제 관련 경고에서 잠재적인 보안 취약점과 관련된 우선순위가 높은 오류에 이르기까지 일반적인 코드 문제를 찾고 식별하는 데 도움이 됩니다.
자바/Kotlin 상호 운용성 린트 검사
자바 코드가 Kotlin 코드와 원활하게 상호 운용되도록, 새 린트 검사에서는 Kotlin 상호 운용성 가이드에 설명된 권장사항을 시행합니다. 이 검사의 예에는 Null 허용 여부 주석이 있는지 찾기, Kotlin 하드 키워드 사용, 람다 매개변수를 마지막에 배치 등이 포함됩니다.
이 검사를 사용 설정하려면 File > Settings(Mac에서는 Android 스튜디오 > Preferences)를 클릭하여 Settings 대화상자를 열고 Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability 섹션으로 이동하여 사용 설정하려는 규칙을 선택합니다.
명령줄 빌드에 이 검사를 사용하려면 build.gradle
파일에 다음 코드를 추가하세요.
android {
lintOptions {
check 'Interoperability'
}
}
슬라이스 린트 검사
새로운 슬라이스 린트 검사를 사용하면 슬라이스를 올바로 구성하는 데 도움이 됩니다. 예를 들어 슬라이스에 기본 작업을 할당하지 않은 경우 린트 검사에서 경고를 표시합니다.
새로운 Gradle 대상
새로운 lintFix
Gradle 작업을 사용하면 린트 검사에서 제안한 모든 안전한 수정사항을 소스 코드에 직접 적용할 수 있습니다. 적용할 수 있는 안전한 수정사항을 제안하는 린트 검사의 예는 SyntheticAccessor
입니다.
메타데이터 업데이트
린트 검사가 Android 9(API 수준 28)와 호환되도록 서비스 전송 확인과 같은 다양한 메타데이터가 업데이트되었습니다.
새로운 변형에서 린트를 실행하는 경우 경고 표시
이제 린트에서 기준이 기록된 변형과 버전을 기록하며, 기준이 생성된 변형과 다른 변형에서 린트를 실행하면 경고를 표시합니다.
기존 린트 검사 개선사항
Android 스튜디오 3.2에는 기존 린트 검사의 다양한 개선사항이 포함되어 있습니다. 예를 들어 이제 리소스 주기 검사가 추가 리소스 유형에 적용되며, 번역 감지기가 편집기에서 필요에 따라 누락된 번역을 찾을 수 있습니다.
더 쉽게 검색 가능한 문제 ID
이제 문제 ID가 Inspection Results 창을 비롯하여 더 많은 위치에 표시됩니다. 따라서 build.gradle
의 lintOptions
를 통해 특정 검사를 사용 설정하거나 중지하는 데 필요한 정보를 더욱 쉽게 찾을 수 있습니다.
자세한 내용은 Gradle로 린트 옵션 구성을 참고하세요.
데이터 결합 V2
이제 데이터 결합 V2가 기본적으로 사용 설정되며 V1과 호환됩니다. 즉, V1로 컴파일된 라이브러리 종속 항목이 있는 경우 데이터 결합 V2를 사용하는 프로젝트에서 함께 사용할 수 있습니다. 하지만 V1을 사용하는 프로젝트는 V2로 컴파일된 종속성을 사용할 수 없습니다.
D8 디슈가링
Android 스튜디오 3.1에서는 실험적 기능으로 D8 도구에 디슈가링 단계를 통합하여 전체 빌드 시간을 줄였습니다. Android 스튜디오 3.2에서는 D8에 디슈가링이 기본적으로 사용 설정됩니다.
새 코드 축소기
R8은 ProGuard를 대체하는 코드 축소 및 난독화를 위한 새로운 도구입니다. 프로젝트의 gradle.properties
파일에 다음 코드를 포함하여 R8의 미리보기 버전 사용을 시작할 수 있습니다.
android.enableR8 = true
여러 APK의 기본 ABI가 변경됨
각각 다른 ABI를 타겟팅하는 여러 APK를 빌드할 때 플러그인이 더 이상 mips
, mips64
, armeabi
등 ABI용 APK를 기본적으로 생성하지 않습니다.
이러한 ABI를 타겟팅하는 APK를 빌드하려면 NDK r16b 이하를 사용하고 아래와 같이 build.gradle
파일에 ABI를 지정해야 합니다.
splits { abi { include 'armeabi', 'mips', 'mips64' ... } }
splits { abi { include("armeabi", "mips", "mips64") ... } }
참고: 이러한 동작 변경은 Android 스튜디오 3.1 RC1 이상에도 포함되어 있습니다.
CMake 빌드 파일의 편집기 기능이 향상됨
CMake를 사용하여 C 및 C++ 코드를 프로젝트에 추가하면 이제 Android 스튜디오에서 다음과 같이 CMake 빌드 스크립트를 편집하는 데 유용한 향상된 편집기 기능을 사용할 수 있습니다.
- 문법 강조표시 및 코드 완성: 이제 IDE에서 일반적인 CMake 명령어를 강조표시하고 코드 완성을 제안합니다. 또한 Control 키(Mac에서는 Command 키)를 누른 상태에서 파일을 클릭하여 파일로 이동할 수 있습니다.
- 코드 형식 다시 지정: 이제 IntelliJ의 코드 형식 다시 지정 옵션을 사용하여 CMake 빌드 스크립트에 코드 스타일을 적용할 수 있습니다.
- 안전한 리팩터링: 이제 IDE의 내장된 리팩터링 도구에서 CMake 빌드 스크립트에서 참조하는 파일의 이름이 변경되거나 파일이 삭제되는지 여부도 확인합니다.
외부 헤더 파일 탐색
이전 버전의 Android 스튜디오에서는 Project 창을 사용할 때 로컬 프로젝트에서 빌드하는 라이브러리에 속한 헤더 파일만 탐색하고 검사할 수 있었습니다. 이 출시 버전에서는 이제 앱 프로젝트로 가져오는 외부 C/C++ 라이브러리 종속 항목에 포함된 헤더 파일을 보고 검사할 수 있습니다.
이미 C/C++ 코드 및 라이브러리가 프로젝트에 포함되어 있다면 기본 메뉴에서 View > Tool Windows > Project를 선택하여 IDE의 왼쪽에 있는 Project 창을 열고 드롭다운 메뉴에서 Android를 선택합니다. cpp 디렉터리에서, 앱 프로젝트 범위 내에 있는 모든 헤더는 아래와 같이 각 로컬 C/C++ 라이브러리 종속 항목의 include 노드 아래에 구성됩니다.
네이티브 멀티덱스가 기본적으로 사용 설정됨
이전 버전의 Android 스튜디오에서는 Android API 레벨 21 이상을 실행하는 기기에 앱의 디버그 버전을 배포할 때 네이티브 multidex를 사용 설정했습니다. 이제는 기기 배포 또는 출시용 APK 빌드 여부와 상관없이, Gradle용 Android 플러그인이 minSdkVersion=21
이상을 설정한 모든 모듈에 네이티브 multidex를 사용하도록 설정합니다.
AAPT2가 Google의 Maven 저장소로 이동함
Android 스튜디오 3.2부터는 AAPT2(Android Asset Packaging Tool 2)의 소스가 Google의 Maven 저장소입니다.
AAPT2를 사용하려면 다음과 같이 build.gradle
파일에 google()
종속성이 있어야 합니다.
buildscript { repositories { google() // here jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' } } allprojects { repositories { google() // and here jcenter() } }
buildscript { repositories { google() // here jcenter() } dependencies { classpath("com.android.tools.build:gradle:3.2.0") } } allprojects { repositories { google() // and here jcenter() } }
AAPT2의 새 버전에서는 Windows에서 ASCII가 아닌 문자의 처리 개선을 비롯하여 많은 문제가 해결되었습니다.
주문형 구성 삭제
주문형 구성 환경설정이 Android 스튜디오에서 삭제되었습니다.
Android 스튜디오는 더 이상 --configure-on-demand
인수를 Gradle에 전달하지 않습니다.
ADB Connection Assistant
새로운 ADB Connection Assistant에서는 Android 디버그 브리지(ADB) 연결을 통해 기기를 설정하고 사용할 수 있도록 단계별 안내를 제공합니다.
이 도우미를 사용하려면 Tools > Connection Assistant를 선택하세요.
ADB 연결 도우미는 Assistant 패널의 여러 페이지에 걸쳐 안내, 문맥에 맞는 컨트롤, 연결된 기기 목록을 제공합니다.
에뮬레이터 개선사항
이제 언제든지 Android Emulator에서 AVD(Android Virtual Device)의 스냅샷을 저장하고 로드하여, 에뮬레이션된 기기를 테스트를 위한 알려진 상태로 쉽고 빠르게 되돌릴 수 있습니다. AVD 관리자를 사용하여 AVD를 수정할 경우 AVD가 시작될 때 로드할 AVD 스냅샷을 지정할 수 있습니다.
AVD 스냅샷의 저장, 로드, 관리를 위한 컨트롤이 이제 에뮬레이터의 Extended controls 창의 Snapshots 탭에 있습니다.
자세한 내용은 스냅샷을 참조하세요.
에뮬레이터의 새로운 기능 및 변경사항에 관한 추가 정보는 에뮬레이터 출시 노트를 참고하세요.