앱 빌드 및 실행

Android 스튜디오에서는 새로운 프로젝트를 클릭 몇 번만으로 Android Emulator 또는 연결된 기기에 배포할 수 있도록 설정합니다. 앱이 설치되면 새 APK를 빌드하지 않고도 Apply Changes를 사용하여 특정 코드 및 리소스 변경사항을 배포할 수 있습니다.

앱을 빌드하고 실행하려면 다음 단계를 따르세요.

  1. 툴바의 실행 구성 드롭다운 메뉴에서 앱을 선택합니다.
  2. 타겟 기기 드롭다운 메뉴에서 앱을 실행하려는 기기를 선택합니다.

    타겟 기기 드롭다운 메뉴

    설정된 기기가 없는 경우 Android Emulator를 사용하려면 USB를 통해 기기를 연결하거나 AVD를 생성해야 합니다.

  3. Run 을 클릭합니다.

실행/디버그 구성 변경

앱을 처음으로 실행하는 경우 Android 스튜디오에서 기본 실행 구성이 사용됩니다. 실행 구성은 APK 또는 Android App Bundle에서 앱을 배포할지 여부, 실행할 모듈, 배포할 패키지, 시작할 활동, 타겟 기기, 에뮬레이터 설정, logcat 옵션 등을 지정합니다.

기본 실행/디버그 구성은 APK를 빌드하고, 기본 프로젝트 활동을 시작하며, Select Deployment Target 대화상자를 타겟 기기를 선택하는 데 사용합니다. 기본 설정이 프로젝트 또는 모듈에 적합하지 않은 경우 실행/디버그 구성을 맞춤설정하거나 프로젝트, 기본 및 모듈 수준에서 새 구성을 만들 수도 있습니다. 실행/디버그 구성을 수정하려면 Run > Edit Configurations를 선택합니다. 자세한 내용은 실행/디버그 구성 만들기 및 수정을 참조하세요.

빌드 변형 변경

기본적으로 Android 스튜디오에서는 앱의 디버그 버전을 빌드하며 이 버전은 개발 중일 때에 한해 Run을 클릭하여 사용할 수 있습니다.

Android 스튜디오에서 사용하는 빌드 변형을 변경하려면 메뉴 바에서 Build > Select Build Variant를 선택합니다.

네이티브/C++ 코드가 없는 프로젝트의 경우 Build Variants 패널에는 ModuleActive Build Variant라는 두 개의 열이 있습니다. 모듈의 Active Build Variant 값으로 IDE에서 연결된 기기에 배포하고 편집기에 표시되는 빌드 변형을 판단합니다.

그림 1. 네이티브/C++ 코드가 없는 프로젝트의 경우 두 개의 열이 있는 Build Variants 패널

변형 간에 전환하려면 모듈의 Active Build Variant 셀을 클릭하고 목록 필드에서 원하는 변형을 선택합니다.

네이티브/C++ 코드가 있는 프로젝트의 경우 Build Variants 패널에는 Module, Active Build VariantActive ABI라는 세 개의 열이 있습니다. 모듈의 Active Build Variant 값으로 IDE에서 기기에 배포하고 편집기에 표시되는 빌드 변형을 판단합니다. 네이티브 모듈의 경우 Active ABI 값으로 편집기에서 사용하는 ABI를 판단하지만 배포 대상에 영향을 주지는 않습니다.

그림 2. 네이티브/C++ 코드가 있는 프로젝트의 경우 Active ABI 열이 추가된 Build Variants 패널

빌드 변형 또는 ABI를 변경하려면 Active Build Variant 또는 Active ABI 열의 셀을 클릭하고 목록에서 원하는 변형 또는 ABI를 선택합니다. 선택을 변경하면 IDE에서 프로젝트를 자동으로 동기화합니다. 앱 또는 라이브러리 모듈의 열을 변경하면 모든 종속 행에 변경사항이 적용됩니다.

기본적으로 새 프로젝트는 디버그와 출시 변형이라는 두 가지 빌드 변형으로 설정됩니다. 출시 변형을 빌드하여 공개 출시를 위한 앱을 준비해야 합니다.

기능 또는 기기 요구사항이 서로 다른 여러 앱 변형을 빌드하려면 추가적인 빌드 변형을 정의하면 됩니다.

프로젝트 빌드

Run 버튼을 누르면 앱이 빌드되어 기기에 배포됩니다. 그러나 Google Play에 공유하거나 업로드할 앱을 빌드하려면 Build 메뉴의 옵션 중 하나를 사용하여 프로젝트의 일부 또는 전부를 컴파일해야 합니다. 표 1에 나열된 빌드 옵션을 선택하기 전에 먼저 사용하려는 빌드 변형을 선택해야 합니다.

표 1. Build 메뉴의 빌드 옵션

메뉴 항목 설명
Make Module 마지막 빌드 이후 수정된, 선택된 모듈의 모든 소스 파일 및 선택된 모듈이 종속되는 모든 모듈을 반복적으로 컴파일합니다. 컴파일에는 종속된 소스 파일 및 관련된 모든 빌드 작업이 포함됩니다. Project 창에서 모듈 이름 또는 모듈의 파일 중 하나를 선택하여 빌드할 모듈을 선택할 수 있습니다. 이 명령어는 APK를 생성하지 않습니다.
Make Project 모든 모듈을 만듭니다.
Clean Project 중간/캐시된 파일을 모두 삭제합니다.
Rebuild Project 선택된 빌드 변형에 관해 Clean Project를 실행하고 APK를 생성합니다.
Build Bundle(s) / APK(s) > Build APK(s)

선택된 변형에 관해 현재 프로젝트 내 모든 모듈의 APK를 빌드합니다. 빌드가 완료되면 확인 알림이 표시되어 APK 파일의 링크 및 APK Analyzer에서 APK 파일을 분석하는 링크가 제공됩니다.

선택한 빌드 변형이 디버그 빌드 유형인 경우 APK가 디버그 키로 서명되고 설치할 준비가 됩니다. 출시 변형을 선택한 경우 기본적으로 APK가 서명되지 않으며 수동으로 APK에 서명해야 합니다. 또는 메뉴 바에서 Build > Generate Signed Bundle / APK를 선택할 수 있습니다.

Android 스튜디오는 빌드된 APK를 project-name/module-name/build/outputs/apk/에 저장합니다.

Build Bundle(s) / APK(s) > Build Bundle(s)

선택된 변형에 관해 현재 프로젝트 내 모든 모듈의 Android App Bundle을 빌드합니다. 빌드가 완료되면 확인 알림이 표시되어 App Bundle의 링크 및 APK Analyzer에서 App Bundle을 분석하는 링크가 제공됩니다.

선택한 빌드 변형이 디버그 빌드 유형인 경우 App Bundle이 디버그 키로 서명되며 bundletool을 사용하여 App Bundle의 앱을 연결된 기기에 배포할 수 있습니다. 출시 변형을 선택한 경우 기본적으로 App Bundle이 서명되지 않으며 jarsigner를 사용하여 수동으로 App Bundle에 서명해야 합니다. 또는 메뉴 바에서 Build > Generate Signed Bundle / APK를 선택할 수 있습니다.

Android 스튜디오는 빌드된 APK를 project-name/module-name/build/outputs/bundle/에 저장합니다.

Generate Signed Bundle / APK 마법사가 포함된 대화상자를 표시하여 새로운 서명 구성을 설정하고 서명된 App Bundle 또는 APK를 빌드합니다. 출시 키로 앱에 서명해야만 Play Console에 앱을 업로드할 수 있습니다. 앱 서명에 관한 자세한 내용은 앱 서명을 참조하세요.

참고: Run 버튼을 누르면 testOnly="true"로 APK를 빌드합니다. 즉, Android 스튜디오에서 사용하는 adb를 통해서만 APK를 설치할 수 있습니다. adb 없이 설치할 수 있는, 디버그 가능한 APK를 빌드하려면 디버그 변형을 선택하고 Build Bundle(s) / APK(s) > Build APK(s)를 클릭하세요.

Gradle이 각 명령어와 관련하여 실행하는 작업에 관한 자세한 내용은 다음 섹션에 설명된 대로 Build 창을 여세요. Gradle 및 빌드 프로세스에 관한 자세한 내용은 빌드 구성을 참조하세요.

빌드 프로세스 모니터링

View > Tool Windows > Build를 클릭하거나 도구 창 바에서 Build 를 클릭하여 빌드 프로세스에 관한 세부정보를 확인할 수 있습니다. 창에는 그림 3과 같이 Gradle에서 앱을 빌드하기 위해 실행하는 작업이 표시됩니다.

그림 3. Android 스튜디오의 Build 출력 창

  1. Build 탭: Gradle에서 실행하는 작업을 트리로 표시합니다. 여기서 각 노드는 빌드 단계 또는 작업 종속성의 그룹을 나타냅니다. 빌드 시간 또는 컴파일 시간 오류를 수신하면 그림 4와 같이 트리를 검사하고 요소를 선택하여 오류 출력을 확인하세요.

    그림 4. Build 출력 창에서 오류 메시지 검사

  2. Sync 탭: Gradle에서 프로젝트 파일과 동기화하기 위해 실행하는 작업이 표시됩니다. Build 탭과 마찬가지로 동기화 오류가 발생하면 트리에서 요소를 선택하여 오류에 관한 자세한 내용을 알아보세요.
  3. 다시 시작: 프로젝트의 모든 모듈에 관해 중간 빌드 파일을 생성하여 Build > Make Project를 선택하는 것과 동일한 작업을 실행합니다.
  4. 뷰 전환: 작업 실행을 그래픽 트리로 표시하는 것과 Gradle의 더 자세한 텍스트 출력으로 표시하는 것 사이에 전환합니다. Gradle의 출력은 Android 스튜디오 3.0 이전 버전의 Gradle Console 창에 표시되는 것과 같은 출력입니다.

빌드 변형에서 제품 버전을 사용하는 경우 Gradle에서는 그러한 제품 버전을 빌드하는 작업도 호출합니다. 사용 가능한 모든 빌드 작업의 목록을 보려면 View > Tool Windows > Gradle을 클릭하거나 도구 창 바에서 Gradle 을 클릭하세요.

빌드 프로세스 중에 오류가 발생하면 Gradle에서 --stacktrace 또는 --debug와 같은 문제를 해결하는 데 도움이 되는 명령줄 옵션을 추천할 수도 있습니다. 빌드 프로세스에서 명령줄 옵션을 사용하려면 다음 단계를 따르세요.

  1. Settings 또는 Preferences 대화상자를 엽니다.
    • Windows 또는 Linux의 경우 메뉴 바에서 File > Settings를 선택합니다.
    • Mac OSX의 경우 메뉴 바에서 Android Studio > Preferences를 선택합니다.
  2. Build, Execution, Deployment > Compiler로 이동합니다.
  3. Command-line Options 옆의 텍스트 필드에 명령줄 옵션을 입력합니다.
  4. OK를 클릭하여 저장하고 종료합니다.

다음에 앱을 빌드하려고 할 때 Gradle에서 이 명령줄 옵션을 적용합니다.

변경사항 적용

Android 스튜디오 3.5 이상에서는 Apply Changes를 사용하면 앱을 다시 시작하지 않고, 경우에 따라서는 현재 활동을 다시 시작하지 않고도 코드 및 리소스 변경사항을 실행 중인 앱에 푸시할 수 있습니다. 기기의 현재 상태를 유지하면서 작고 점진적인 변경사항을 배포하고 테스트하려는 경우 이러한 유연성 덕분에 앱에서 다시 시작할 부분을 제어할 수 있습니다. Apply Changes는 Android 8.0(API 수준 26) 이상을 실행하는 기기에서 지원되는 Android JVMTI 구현 기능을 사용합니다. Apply Changes 작동 방식에 관한 자세한 내용은 Android 스튜디오 Project Marble: Apply Changes를 참조하세요.

요구사항

Apply Changes 작업은 다음 조건을 충족하는 경우에만 사용할 수 있습니다.

  • 디버그 빌드 변형을 사용하여 앱의 APK를 빌드합니다.
  • Android 8.0(API 수준 26) 이상을 실행하는 타겟 기기 또는 에뮬레이터에 앱을 배포합니다.

Apply Changes 사용

호환되는 기기에 변경사항을 배포하려면 다음 옵션을 사용하세요.

Apply Changes and Restart Activity Apply Changes and Restart Activity 아이콘

활동은 다시 시작하지만 앱을 다시 시작하지는 않고 리소스 및 코드 변경사항을 모두 적용하려고 합니다. 일반적으로 메서드의 본문에서 코드를 수정했거나 기존 리소스를 수정한 경우 이 옵션을 사용할 수 있습니다.

Ctrl+Alt+F10(macOS의 경우 Control+Shift+Command+R)을 눌러 이 작업을 실행할 수도 있습니다.

Apply Code Changes Apply Code Changes 아이콘

어떤 것도 다시 시작하지 않고 코드 변경사항만 적용하려고 합니다. 일반적으로 메서드의 본문에서 코드를 수정했지만 리소스는 어떤 것도 수정하지 않은 경우 이 옵션을 사용할 수 있습니다. 코드와 리소스를 모두 수정했다면 대신 Apply Changes and Restart Activity를 사용하세요.

Ctrl+F10(macOS의 경우 Control+Command+R)을 눌러 이 작업을 실행할 수도 있습니다.

Run Run 아이콘

모든 변경사항을 배포하고 앱을 다시 시작합니다. Apply Changes 옵션 중 어떤 것을 사용해도 변경사항을 적용할 수 없을 때 이 옵션을 사용합니다. 앱을 다시 시작해야 하는 변경 유형에 관한 자세한 내용은 Apply Changes 제한사항을 참조하세요.

Apply Changes의 실행 대체 사용 설정

Apply Changes and Restart ActivityApply Code Changes를 클릭했다면 Android 스튜디오에서는 새 APK를 빌드하고 변경사항을 적용할 수 있는지 판단합니다. 변경사항을 적용할 수 없으며 Apply Changes의 실패를 야기하는 경우 Android 스튜디오에서는 대신 앱을 다시 실행 Run 아이콘하라는 메시지를 표시합니다. 그러나 이러한 일이 발생할 때마다 메시지가 표시되지 않도록 하려면 변경사항을 적용할 수 없을 때 자동으로 앱을 다시 실행하도록 Android 스튜디오를 구성하면 됩니다.

이 동작을 사용 설정하려면 다음 단계를 따르세요.

  1. Settings 또는 Preferences 대화상자를 엽니다.

    • Windows 또는 Linux의 경우 메뉴 바에서 File > Settings를 선택합니다.
    • macOS의 경우 메뉴 바에서 Android Studio > Preferences를 선택합니다.
  2. Build, Execution, Deployment > Deployment로 이동합니다.

  3. 체크박스를 선택하여 Apply Changes 작업 중 하나에 자동 실행 대체를 사용 설정합니다.

  4. OK를 클릭합니다.

Apply Changes 제한사항

Apply Changes는 앱 배포 프로세스의 속도를 높이도록 설계되었습니다. 그러나 사용할 수 있는 시점에는 제한사항이 있습니다. Apply Changes를 사용하는 동안 문제가 발생하면 버그를 신고하세요.

앱을 다시 시작해야 하는 코드 변경사항

일부 코드 및 리소스 변경사항은 다음을 포함하여 앱이 다시 시작될 때까지 적용할 수 없습니다.

  • 클래스, 메서드 또는 필드 추가 또는 삭제
  • 메서드 서명 변경
  • 메서드 또는 클래스의 수식어 변경
  • 클래스 이름 바꾸기
  • 클래스 상속 변경
  • Enum의 값 변경
  • 리소스 추가 또는 삭제
  • 앱 매니페스트 변경
  • 네이티브 라이브러리(SO 파일) 변경

라이브러리 및 플러그인

일부 라이브러리 및 플러그인은 앱의 manifest 파일 또는 manifest에서 참조되는 리소스를 자동으로 변경합니다. 이러한 자동 업데이트는 다음과 같은 방식으로 Apply Changes를 방해할 수 있습니다.

  • 라이브러리 또는 플러그인에서 앱의 manifest를 변경하면 Apply Code Changes Apply Code Changes 아이콘 또는 Apply Changes and Restart Activity Apply Changes and Restart Activity 아이콘를 사용할 수 없으므로 앱을 다시 시작해야 변경사항을 볼 수 있습니다.
  • 라이브러리 또는 플러그인에서 앱의 리소스 파일을 변경하면 Apply Code Changes Apply Code Changes 아이콘를 사용할 수 없으며 Apply Changes and Restart Activity Apply Changes and Restart Activity 아이콘를 사용해야만 변경사항을 볼 수 있습니다.

디버그 빌드 변형의 모든 자동 업데이트를 사용 중지하여 이러한 제한사항을 방지할 수 있습니다.

예를 들어 Crashlytics는 모든 빌드 중에 고유한 빌드 ID로 앱 리소스를 업데이트하므로 Apply Code Changes Apply Code Changes 아이콘를 사용할 수 없고 앱 활동을 다시 시작해야 변경사항을 볼 수 있습니다. 이 동작을 사용 중지하면 디버그 빌드가 있는 Crashlytics와 함께 Apply Code Changes를 사용할 수 있습니다.

설치된 APK의 콘텐츠를 직접 참조하는 코드

코드가 기기에 설치된 앱의 APK 콘텐츠를 직접 참조하는 경우 Apply Code Changes Apply Code Changes 아이콘를 클릭하면 이 코드로 인해 비정상 종료나 오동작이 발생할 수 있습니다. 이 동작은 Apply Code Changes를 클릭하면 기기의 기본 APK가 설치 중에 교체되기 때문에 발생합니다. 이러한 경우에는 Apply Changes and Restart Activity Apply Changes and Restart Activity 아이콘 또는 Run Run 아이콘을 대신 클릭하면 됩니다.