앱 빌드 및 실행

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

앱이 기기에서 어떻게 표시되고 동작하는지 확인하려면 앱을 빌드하고 실행해야 합니다. Android 스튜디오는 클릭 몇 번으로 가상 또는 실제 기기에 앱을 배포할 수 있도록 새 프로젝트를 설정해 줍니다.

이 개요에서는 Android 스튜디오를 사용하여 테스트와 디버깅을 위해 앱을 빌드하고 실행하는 방법을 중점적으로 설명합니다. Android 스튜디오로 사용자에게 출시할 수 있는 앱을 빌드하는 방법에 관한 자세한 내용은 사용자에게 출시할 앱 빌드를 참고하세요. Android 스튜디오 사용 여부와 관계없이 빌드를 관리하고 맞춤설정하는 방법에 관한 자세한 내용은 빌드 구성을 참고하세요.

기본 빌드 및 실행

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

  1. 툴바의 실행 구성 메뉴에서 앱을 선택합니다.
  2. 대상 기기 메뉴에서 앱을 실행하려는 기기를 선택합니다.

    대상 기기 메뉴

    구성된 기기가 없는 경우 Android Virtual Device를 생성하여 Android Emulator를 사용하거나 실제 기기를 연결해야 합니다.

  3. Run 을 클릭합니다.

오류나 경고가 있는 기기로 프로젝트를 시작하려고 하면 Android 스튜디오에서 경고를 표시합니다. 아이콘과 변경된 스타일이 오류(구성 손상을 초래하는 기기 선택)와 경고(예기치 않은 동작을 초래할 수 있지만 여전히 실행 가능한 기기 선택)를 구분합니다.

빌드 프로세스 모니터링

빌드 프로세스에 관한 세부정보를 보려면 View > Tool Windows > Build를 선택하거나 도구 창 모음에서 Build 를 클릭합니다. 그림 1과 같이 Build 도구 창에는 Gradle이 앱을 빌드하기 위해 실행하는 작업이 표시됩니다.

그림 1. Android 스튜디오의 Build 도구 창
  1. Sync 탭: Gradle에서 프로젝트 파일과 동기화하기 위해 실행하는 작업이 표시됩니다. Build Output 탭과 마찬가지로 동기화 오류가 발생하면 트리에서 요소를 선택하여 오류에 관한 자세한 내용을 알아보세요.
  2. Build Output 탭: Gradle에서 실행하는 작업이 트리로 표시됩니다. 여기서 각 노드는 빌드 단계 또는 작업 종속 항목 그룹을 나타냅니다. 빌드 시간 또는 컴파일 시간 오류를 수신하면 그림 2와 같이 트리를 검사하고 요소를 선택하여 오류 출력을 확인하세요.
    그림 2. Build Output 탭에서 오류 메시지 검사
  3. 빌드 분석 도구 탭: 빌드에 관한 빌드 성능 분석 정보를 제공합니다. 자세한 내용은 빌드 분석 도구를 사용하여 빌드 성능 문제 해결을 참고하세요.
  4. 다시 시작: 프로젝트의 모든 모듈에 관해 중간 빌드 파일을 생성하여 Build > Make Project를 선택하는 것과 동일한 작업을 실행합니다.
  5. 필터: 성공적으로 완료된 경고나 작업 또는 둘 다를 필터링합니다. 이렇게 하면 출력에서 문제를 더 쉽게 찾을 수 있습니다.

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

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

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

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

고급 빌드 및 실행 기능

Android 스튜디오에서 앱을 빌드하고 실행하는 기본 방법은 간단한 앱을 테스트하기에 충분해야 합니다. 그러나 고급 사용 사례에 다음과 같은 빌드 및 실행 기능을 사용할 수 있습니다.

  • 앱을 디버그 모드로 배포하려면 Debug 를 클릭합니다. 디버그 모드에서 앱을 실행하면 코드에서 중단점을 설정하고, 런타임에 변수를 검사하고 표현식을 평가하며, 디버깅 도구를 실행할 수 있습니다. 자세한 내용은 앱 디버그를 참고하세요.

  • 더 크고 복잡한 앱이 있으면 Run 을 클릭하는 대신 Apply Changes를 사용합니다. 이렇게 하면 변경사항을 배포할 때마다 앱을 다시 시작하지 않아도 되므로 시간이 절약됩니다. Apply Changes에 관한 자세한 내용은 Apply Changes로 점진적으로 배포 섹션을 참고하세요.

  • Jetpack Compose를 사용 중인 경우 실시간 편집은 Run 을 다시 클릭하지 않고도 실시간으로 컴포저블을 업데이트할 수 있는 실험용 기능입니다. 따라서 최소한의 중단으로 UI 코드를 작성하는 데 집중할 수 있습니다. 자세한 내용은 실시간 편집(실험용) 섹션을 참고하세요.

  • 앱에 여러 빌드 변형 또는 버전이 있는 경우 Build Variants 도구 창을 사용하여 배포할 빌드 변형을 선택할 수 있습니다. 특정 빌드 변형의 실행에 관한 자세한 내용은 빌드 변형 변경 섹션을 참고하세요.

  • 앱 설치, 출시, 테스트 옵션을 상세하게 조정하려면 실행/디버그 구성을 변경하세요. 맞춤 실행/디버그 구성 만들기에 관한 자세한 내용은 실행/디버그 구성 만들기 섹션을 참고하세요.

  • 개발 요구사항에 맞게 Android 스튜디오를 사용하는 것이 좋지만 명령줄을 통해 가상 기기나 실제 기기에 앱을 배포할 수도 있습니다. 자세한 내용은 명령줄에서 앱 빌드를 참고하세요.

Apply Changes로 점진적으로 배포

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 아이콘: 활동을 다시 시작하지만 앱을 다시 시작하지는 않고 리소스와 코드 변경사항을 모두 적용하려고 합니다. 일반적으로 메서드 본문에서 코드를 수정했거나 기존 리소스를 수정한 경우 이 옵션을 사용할 수 있습니다.

Control+Alt+F10(macOS에서는 Control+Command+Shift+R)을 눌러 이 작업을 실행할 수도 있습니다.

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

Control+F10(macOS에서는 Control+Command+R)을 눌러 이 작업을 실행할 수도 있습니다.

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의 일부 기능은 Android 플랫폼의 구체적인 버전에 따라 다릅니다. 이러한 유형의 변경사항을 적용하려면 앱이 해당 버전 이상의 Android를 실행하는 기기에 배포되어야 합니다. 예를 들어 메서드를 추가하려면 Android 11 이상이 필요합니다.

Apply Changes 제한사항

Apply Changes는 앱 배포 프로세스의 속도를 높이도록 설계되었습니다. 그러나 사용할 수 있는 시점에는 제한사항이 있습니다.

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

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

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

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

  • 라이브러리 또는 플러그인에서 앱의 매니페스트를 변경하면 Apply Changes를 사용할 수 없습니다. 변경사항을 보려면 앱을 다시 시작해야 합니다.
  • 라이브러리 또는 플러그인에서 앱의 리소스 파일을 변경하면 Apply Code Changes Apply Code Changes 아이콘를 사용할 수 없습니다. 변경사항을 보려면 Apply Changes and Restart Activity Apply Changes and Restart Activity 아이콘를 사용하거나 앱을 다시 시작해야 합니다.

이러한 제한사항을 방지하려면 디버그 빌드 변형의 모든 자동 업데이트를 사용 중지하세요.

예를 들어 Firebase 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 실행 아이콘을 대신 클릭하면 됩니다.

Apply Changes를 사용하는 동안 기타 다른 문제가 발생하면 버그를 신고하세요.

실시간 편집(실험용)

실시간 편집은 Android 스튜디오 Flamingo 카나리아 릴리스의 실험용 기능이며 이를 통해 에뮬레이터와 실제 기기에서 컴포저블을 실시간으로 업데이트할 수 있습니다. 이 기능은 앱 작성과 앱 빌드 사이에 발생하는 컨텍스트 전환을 최소화하므로 중단 없이 코드 작성에 더 오래 집중할 수 있습니다.

실시간 편집에는 두 가지 모드가 있습니다.

  • 수동: 코드 변경사항이 Control+S(macOS는 Command+S)를 눌러 수동으로 저장될 때 적용됩니다.
  • 자동: 구성 가능한 함수를 업데이트할 때 기기나 에뮬레이터에서 변경사항이 적용됩니다.

실시간 편집은 UI 및 UX 관련 코드 변경사항에 중점을 둡니다. 메서드 서명 업데이트 또는 새 메서드 추가, 클래스 계층 구조 변경과 같은 변경사항은 지원하지 않습니다. 자세한 내용은 실시간 편집 제한사항 목록을 참고하세요.

이 기능은 앱 빌드 및 실행 또는 Apply Changes를 대체하지 않습니다. 대신 Compose UI 개발을 위해 빌드, 배포, 반복할 때 워크플로를 최적화하도록 설계되었습니다.

권장사항 워크플로는 다음과 같습니다.

  1. 애플리케이션이 실행될 수 있도록 설정합니다.
  2. 실시간 편집이 지원하지 않는 변경(예: 앱이 실행되는 동안 새 메서드 추가)을 해야 할 때까지 실시간 편집을 가능한 한 많이 사용합니다.
  3. 지원되지 않는 변경을 한 후 Run Run 아이콘을 클릭하여 앱을 다시 시작하고 실시간 편집을 재개합니다.

기기로 실시간 편집을 사용하는 GIF

그림 3. 자동 모드에서 실시간 편집이 지원하는 수정 작업을 할 때마다 기기나 에뮬레이터에서 실행 중인 앱이 실시간으로 업데이트됩니다.

실시간 편집 시작

시작하려면 다음 단계를 따라 빈 Compose Activity를 만들고 프로젝트에 실시간 편집을 사용 설정한 후 실시간 편집을 사용하여 변경합니다.

새 프로젝트 설정
  1. 시작하기 전에 최신 카나리아 버전의 Android 스튜디오 Flamingo가 설치되어 있고 실제 기기나 에뮬레이터의 API 수준이 30 이상인지 확인합니다.

  2. Android 스튜디오를 열고 Welcome to Android Studio 대화상자에서 New Project를 선택합니다. 이미 프로젝트가 열려 있다면 File > New > New Project로 이동하여 새 프로젝트를 만들 수 있습니다.

  3. Phone and TabletEmpty Compose Activity 템플릿을 선택한 후 Next를 클릭합니다.

    Android 스튜디오에서 템플릿 선택 그림 4. 선택할 수 있는 템플릿. 실시간 편집의 경우 Empty Compose Activity를 선택합니다.

  4. 필수 정보(이름, 패키지 이름, 저장 위치, 언어(Kotlin으로 설정), 최소 SDK)를 입력하여 New Project 대화상자를 완료합니다.

    AS에 입력된 4단계의 프로젝트 설정 예시 그림 5. 프로젝트 설정 예시

  5. Finish를 클릭합니다.

실시간 편집 사용 설정
  1. 설정으로 이동하여 실시간 편집을 사용 설정합니다.

    • Windows 또는 Linux의 경우 File > Settings > Editor > Live Edit으로 이동합니다.
    • macOS에서는 Android 스튜디오 > Preferences > Editor > Live Edit으로 이동합니다.
  2. 설정에서 Live Edit 옵션과 실행할 모드를 선택합니다.

    수동 모드에서는 Control+S(macOS는 Command+S)를 눌러 수동으로 저장할 때마다 코드 변경사항이 적용됩니다. 자동 모드에서는 코드를 변경할 때 코드 변경사항이 기기 또는 에뮬레이터에 적용됩니다.

    Android 스튜디오 설정의 실시간 편집 체크박스 UI 그림 6. 실시간 편집 설정

  3. 편집기에서 앱의 진입점인 MainActivity 파일을 엽니다.

  4. Run UI 버튼을 클릭하여 앱을 배포하고 편집기의 오른쪽 상단에 있는 Split을 클릭하여 미리보기를 엽니다.

  5. 실시간 편집을 사용 설정하면 편집기의 오른쪽 상단에 실시간 편집 녹색 체크표시가 나타납니다.

    실시간 편집 녹색 체크표시 UI

변경 및 검토

편집기에서 지원되는 변경사항을 적용하면 미리보기가 자동으로 업데이트됩니다.

예를 들어 MainActivity에서 기존 Greeting 메서드를 다음과 같이 수정합니다.

@Composable
fun Greeting(name: String) {
    Text(text = "Hello $name!",
        Modifier.padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

그림 7과 같이 미리보기에 변경사항이 즉시 표시됩니다.

기기에 적용된 Greeting 메서드 변경사항

그림 7. Greeting 메서드의 실시간 편집 변경사항을 표시하는 미리보기

실시간 편집 문제 해결

미리보기 창에 수정사항이 표시되지 않으면 Android 스튜디오가 수정사항을 업데이트하지 못한 것일 수 있습니다. 그림 8과 같이 실시간 편집 UI 표시기에 일시중지 아이콘이 표시되는지 확인합니다. 이는 컴파일 오류를 나타냅니다. 오류에 관한 정보와 해결 방법에 관한 제안을 보려면 오류 표시기를 클릭하세요.

실시간 편집 상태 UI

그림 8. 실시간 편집 상태 표시기

실시간 편집 제한사항

다음은 현재 제한사항 목록입니다.

  • 실시간 편집이 Compose 1.2.0 이하에서 오류 처리 및 보고를 지원하지 않을 수도 있습니다. 최적의 환경을 제공하려면 Compose 1.3.0 이상을 사용하세요.
  • 실시간 편집을 사용하려면 API 수준 30 이상을 실행하는 실제 기기 또는 에뮬레이터가 있어야 합니다.
  • 실시간 편집은 함수 본문의 수정만 지원합니다. 즉, 함수 이름 또는 서명을 변경하거나 함수를 추가 또는 제거하거나 함수가 아닌 필드를 변경할 수 없습니다.
  • 실시간 편집으로 수정된 클래스로 인해 성능 저하가 발생할 수 있습니다. 앱을 실행하고 성능을 평가하는 경우 클린 출시 빌드를 사용합니다.
  • 실시간 편집으로 수정한 클래스에서 디버거가 작동하려면 전체 실행을 실행해야 합니다.
  • 실행 중인 앱을 실시간 편집으로 수정하면 앱이 다운될 수 있습니다. 이 경우 Run UI 버튼 버튼을 사용하여 앱을 다시 배포하면 됩니다.
  • 실시간 편집은 프로젝트의 빌드 파일에 정의된 바이트 코드 조작을 실행하지 않습니다. 바이트 코드 조작의 예시로는 Build 메뉴의 옵션을 사용하거나 Build 또는 Run 버튼을 클릭하여 프로젝트를 빌드할 때 적용되는 경우를 들 수 있습니다.
  • 구성 불가능한 함수는 기기나 에뮬레이터에서 실시간으로 업데이트되고 전체 재구성이 트리거됩니다. 전체 재구성에서는 업데이트된 함수를 호출하지 않을 수 있습니다. 구성 불가능한 함수의 경우 새로 업데이트된 함수를 트리거하거나 앱을 다시 실행해야 합니다.
  • 실시간 편집은 앱을 다시 시작해도 재개되지 않습니다. 앱을 다시 실행해야 합니다.
  • 프로젝트에서 Compose 버전 1.2 이상을 사용하는 경우 특정 파일의 첫 번째 코드 변경사항만 컴포지션을 재설정합니다. 이후에 해당 파일을 수정해도 컴포지션은 재설정되지 않습니다.

실시간 편집에 관해 자주 묻는 질문(FAQ)

  • 실시간 편집의 현재 상태는 무엇인가요?
    • 실시간 편집은 Android 스튜디오 Flamingo 카나리아 채널에서 실험용 기능으로 사용할 수 있습니다. 이 기능을 사용 설정하거나 사용 중지하려면 File > Settings > Editor > Live Edit(macOS는 Android Studio > Preferences > Editor > Live Edit)으로 이동합니다.
  • 실시간 편집은 언제 사용해야 하나요?
    • UX 요소의 업데이트(예: 수정자 업데이트, 애니메이션)가 전반적인 앱 환경에 미치는 영향을 빠르게 확인하고 싶을 때 실시간 편집을 사용하세요.
  • 실시간 편집을 사용하면 안 되는 경우는 언제인가요?
    • 실시간 편집은 현재 UI 및 UX 관련 코드 변경사항에 중점을 둡니다. 메서드 서명 업데이트나 새 메서드 추가, 클래스 계층 구조 변경과 같은 변경사항은 지원하지 않습니다. 자세한 내용은 실시간 편집 제한사항을 참고하세요.
  • Compose 미리보기는 언제 사용해야 하나요?
    • 개별 컴포저블을 개발할 때 Compose 미리보기를 사용하세요. 미리보기는 Compose 요소를 시각화하고 자동으로 새로고침하여 코드 변경사항의 효과를 표시합니다. 미리보기는 다양한 구성 및 상태(예: 어두운 모드, 언어, 글꼴 크기)의 UI 요소 보기도 지원합니다.

빌드 변형 변경

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

Android 스튜디오에서 사용하는 빌드 변형을 변경하려면 다음 중 하나를 실행하세요.

  • 메뉴에서 Build > Select Build Variant를 선택합니다.
  • 메뉴에서 View > Tool Windows > Build Variants를 선택합니다.
  • 도구 창 모음에서 Build Variants 탭을 클릭합니다.

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

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

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

네이티브/C++ 코드가 있는 프로젝트의 경우 Build Variants 패널에는 다음과 같은 3개의 열이 있습니다.

  • Module
  • Active Build Variant
  • Active ABI

모듈의 Active Build Variant 값을 통해, IDE에 의해 기기에 배포되고 편집기에 표시되는 빌드 변형을 판단합니다. 네이티브 모듈의 경우 Active ABI 값이 편집기에서 사용하는 ABI를 결정하지만 배포되는 항목에는 영향을 미치지 않습니다.

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

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

기본적으로 새 프로젝트는 디버그 변형과 출시 변형이라는 두 가지 빌드 변형으로 설정됩니다. 출시 변형을 빌드하여 공개 출시를 위한 앱을 준비해야 합니다. 다양한 기능 또는 기기 요구사항이 있는 앱의 다른 변형을 정의하려면 추가 빌드 변형을 정의하면 됩니다.

Android 스튜디오의 Build Variants 대화상자 충돌

Android 스튜디오의 Build Variants 대화상자에서 다음과 같은 빌드 변형 간의 충돌을 나타내는 오류 메시지가 표시될 수 있습니다.

변형 충돌 오류가 표시된 Build Variants 창

이 오류는 Gradle의 빌드 문제를 나타내지 않습니다. 이는 선택된 모듈의 변형 간에 기호를 Android 스튜디오 IDE에서 결정할 수 없음을 나타냅니다.

예를 들어 모듈 M2의 변형 v1에 종속되는 모듈 M1이 있으며, M2의 변형 v2가 IDE에서 선택되었다면 기호가 IDE에서 결정되지 않습니다. M1v1에서만 사용할 수 있는 클래스에 종속되어 있다고 가정해 보겠습니다. v2를 선택하면 해당 클래스는 IDE에서 인식되지 않습니다. 따라서 클래스 이름을 확인하지 못하며 M1 모듈의 코드에 오류가 표시됩니다.

이러한 오류 메시지는 IDE가 여러 변형의 코드를 동시에 로드할 수 없기 때문에 표시됩니다. 그러나 이 대화상자에 선택된 변형은 앱 빌드 측면에서 아무런 영향을 미치지 않습니다. Gradle에서 앱을 빌드할 때 IDE에 현재 로드된 항목이 아닌 Gradle 빌드 레시피에 지정된 소스 코드를 사용하기 때문입니다.

실행/디버그 구성 변경

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

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

실행/디버그 구성을 수정하려면 Run > Edit Configurations를 선택합니다. 자세한 내용은 실행/디버그 구성 만들기 및 수정을 참고하세요.