Skip to content

Most visited

Recently visited

navigation

명령줄에서 Gradle 실행

기본적으로, Gradle 빌드 설정을 사용하여 애플리케이션을 구성하기 위해서는 두 가지 유형의 빌드가 있습니다. 하나는 애플리케이션을 디버깅하는 것이고(디버그), 다른 하나는 릴리스용 최종 패키지를 빌드하는 것입니다(릴리스 모드). 어떤 빌드 유형이 모듈에 사용되든 간에, 에뮬레이터나 기기에 앱을 설치하려면 먼저 이 앱을 서명해야 합니다. 디버그 모드에서 빌드할 경우 디버그 키를 사용하고 릴리스 모드에서 빌드할 경우 자신의 개인 키를 사용합니다.

디버그 빌드 유형으로 빌드하든 릴리스 빌드 유형으로 빌드하든 간에 모듈을 실행하고 빌드해야 합니다. 그러면 에뮬레이터나 기기에 설치할 수 있는 .apk 파일이 생성됩니다. 디버그 빌드 유형을 사용하는 빌드의 경우, 모듈의 build.gradle 파일에 있는 debuggable true 설정에 따라 SDK 도구가 디버그 키로 .apk 파일을 자동 서명하므로, 즉시 에뮬레이터나 연결된 개발 기기에 설치할 준비가 됩니다. 디버그 키로 서명된 애플리케이션은 배포할 수 없습니다. 릴리스 빌드 유형을 사용하는 빌드의 경우 .apk 파일은 미서명이므로, 모듈의 build.gradle 파일에 있는 Keytool 및 Jarsigner 설정을 사용하여 자신의 개인 키로 직접 서명해야 합니다.

특히 애플리케이션을 릴리스하고 최종 사용자와 공유할 준비가 되었다면, 애플리케이션 서명을 읽고 이해하는 것이 중요합니다. 이 문서에서는 개인 키를 생성하고 이 키를 사용하여 APK 파일을 서명하는 절차를 설명합니다. 그러나, 갓 시작한 경우에는 디버그 모드에서 빌드를 수행하여 에뮬레이터나 자신의 개발 기기에서 애플리케이션을 신속하게 실행할 수 있습니다.

Gradle이 없는 경우에는 Gradle 홈 페이지에서 구할 수 있습니다. Gradle을 설치하고 실행 가능한 PATH에 있는지 확인합니다. Gradle을 호출하기 전에, JDK가 설치될 위치의 경로를 지정하는 JAVA_HOME 환경 변수를 선언해야 합니다.

참고: ant를 사용하고 JDK를 Windows에 설치할 경우 기본값은 "Program Files" 디렉토리에 설치하는 것입니다. 이 위치는 공백 때문에 ant가 실패합니다. 이 문제를 해결하기 위해 다음과 같이 JAVA_HOME 변수를 지정할 수 있습니다.

set JAVA_HOME=c:\Progra~1\Java\<jdkdir>

그러나, 가장 쉬운 해결책은 공백이 없는 디렉토리에 JDK를 설치하는 것입니다. 예:

c:\java\jdk1.7

또한 Gradle 래퍼를 사용하도록 프로젝트를 설정해야 합니다. 이 래퍼는 다른 사람들이 일관된 환경에서 여러분의 프로젝트를 빌드하도록 해주는 도구입니다. Gradle 래퍼는 Windows용 배치 파일을 제공하고 Linux 및 Mac OSX용 셸 스크립트를 제공하며, 여러분이 프로젝트에 지정하는 Gradle 버전을 자동으로 다운로드하고 사용합니다. 이렇게 하면, 다른 버전의 빌드 시스템과 호환성 문제를 고려하지 않고도 자신의 프로젝트에서 Gradle 작업을 실행할 수 있습니다.

참고: Android Studio를 사용하여 새 프로젝트를 만드는 경우, IDE가 Gradle 래퍼를 자동 설정해 주므로 이러한 설정 지침을 따르지 않아도 됩니다.

프로젝트의 Gradle 버전을 지정하고 Gradle 래퍼를 초기화하려면, 프로젝트의 루트 디렉토리에서 다음 명령을 실행합니다.

gradle wrapper --gradle-version version-number

Gradle이 래퍼 작업을 실행하고 다음 파일을 생성합니다.

참고: 위에 나열된 파일을 버전 제어 시스템에 포함시켜야 합니다. 이렇게 하면, 여러분의 프로젝트를 사용하는 모든 사람들이 자신에게 필요한 래퍼 파일과 구성을 가지고 여러분의 빌드를 재현할 수 있습니다.

이제 여러분은 Gradle 래퍼를 사용하여 Gradle 작업을 프로젝트에서 실행할 수 있으며, 래퍼가 올바른 버전의 Gradle에 작업을 자동으로 위임합니다. 래퍼에서 작업을 실행하려면, 다음 명령 중 하나를 사용합니다.

디버그 모드에서 빌드

즉각적인 애플리케이션 테스트 및 디버깅을 위해서는, 애플리케이션을 디버그 모드에서 빌드하고 이 애플리케이션을 에뮬레이터에 즉시 설치할 수 있습니다. 디버그 모드에서는 빌드 도구가 디버그 키로 애플리케이션을 자동 서명하고 zipalign으로 패키지를 최적화합니다.

디버그 모드에서 빌드하려면, 명령줄을 열고 프로젝트 디렉토리의 루트로 이동합니다. Gradle을 사용하여 디버그 모드에서 프로젝트를 빌드하고, Gradle 래퍼 스크립트(gradlew assembleRelease)를 사용하여 assembleDebug 빌드 작업을 호출합니다.

그러면 <your_module_name>-debug.apk로 명명된 디버그 .apk 파일이 모듈 build/ 디렉토리 내에 생성됩니다. 이 파일은 디버그 키로 이미 서명되었으며 zipalign로 정렬되었습니다.

Windows 플랫폼에서 다음 명령을 입력합니다.

> gradlew.bat assembleDebug

Mac OS 및 Linux 플랫폼에서는 다음 명령을 입력합니다.

$ chmod +x gradlew
$ ./gradlew assembleDebug

첫 번째 명령(chmod)은 Gradle 래퍼 스크립트에 실행 권한을 추가하며, 이 명령은 명령줄에서 이 프로젝트를 처음 빌드할 때만 필요합니다.

프로젝트가 빌드된 후, 앱 모듈의 출력 APK는 app/build/outputs/apk/에 위치하고 lib 모듈의 출력 AAR는 lib/build/outputs/libs/에 위치합니다.

프로젝트에서 사용 가능한 모든 빌드 작업의 목록을 보려면, 다음 명령을 입력합니다.

$ ./gradlew tasks

최신 버전의 애플리케이션을 패키징하려면, 소스 파일이나 리소스를 변경할 때마다 Gradle을 다시 실행해야 합니다.

애플리케이션을 에뮬레이터에 설치하고 실행하려면, 에뮬레이터에서 실행 섹션을 참조하세요.

릴리스 모드에서 빌드

애플리케이션을 최종 사용자에게 릴리스하고 배포할 준비가 되었다면, 애플리케이션을 릴리스 모드에서 빌드해야 합니다. 릴리스 모드에서 빌드한 경우, 최종 .apk로 추가적인 테스트 및 디버깅을 수행하는 것이 좋습니다.

릴리스 모드에서 애플리케이션 빌드를 시작하기 전에, 자신의 개인 키를 가지고 결과 애플리케이션 패키지를 서명해야 하며, 그런 다음 zipalign 도구를 사용하여 패키지를 정렬해야 합니다. 릴리스 모드에서 빌드하는 방법은 두 가지가 있습니다. 릴리스 모드에서 미서명 패키지를 빌드하고 이 패키지를 수동으로 서명하고 정렬하거나 또는 빌드 스크립트를 통해 자동으로 패키지를 서명하고 정렬하는 방법입니다.

미서명 빌드

애플리케이션을 미서명 빌드하는 경우, 패키지를 수동으로 서명하고 정렬해야 합니다.

미서명 .apk를 릴리스 모드에서 빌드하려면, 명령줄을 열고 모듈 디렉토리의 루트로 이동합니다. assembleRelease 빌드 작업을 호출합니다.

Windows 플랫폼에서 다음 명령을 입력합니다.

> gradlew.bat assembleRelease

Mac OS 및 Linux 플랫폼에서 다음 명령을 입력합니다.

$ ./gradlew assembleRelease

그러면 <your_module_name>-unsigned.apk로 명명된 Android 애플리케이션 .apk 파일이 프로젝트 bin/ 디렉토리 내에 생성됩니다.

참고: 이 시점에서 .apk 파일은 미서명이며 개인 키로 서명하기 전에는 이 파일을 설치할 수 없습니다.

미서명 .apk를 생성했다면 그 다음 단계는 개인 키로 .apk를 서명한 다음, zipalign으로 정렬하는 것입니다. 이 절차를 완료하려면 애플리케이션 서명을 참조하세요.

.apk가 서명되고 정렬되었다면 최종 사용자에게 배포할 준비가 된 것입니다. 다양한 플랫폼에서 올바로 실행되는지 확인하기 위해 다양한 기기나 AVD에서 최종 빌드를 테스트해야 합니다.

서명되고 정렬된 빌드

원하는 경우, 애플리케이션 패키지를 자동으로 서명하고 정렬하도록 Android 빌드 스크립트를 구성할 수 있습니다. 이렇게 하려면, 키스토어의 경로와 키 별칭의 이름을 모듈의 build.gradle 파일에 제공해야 합니다. 이 정보가 제공되면, 릴리스 빌드 유형을 사용하여 빌드하고 배포 준비가 된 최종 애플리케이션 패키지를 생성할 때 키스토어와 별칭 암호를 입력하라는 메시지가 나타납니다.

키스토어와 별칭을 지정하려면, 모듈 build.gradle 파일(모듈 디렉토리의 루트에 있음)을 열고 storeFile, storePassword, keyAliaskeyPassword에 항목을 추가합니다. 예:

storeFile file("myreleasekey.keystore")
keyAlias "MyReleaseKey"

변경사항을 저장합니다. 이제 서명된 .apk를 릴리스 모드에서 빌드할 수 있습니다.

  1. 명령줄을 열고 모듈 디렉토리의 루트로 이동합니다.
  2. 프로젝트를 릴리스 모드에서 빌드하려면 build.gradle 파일을 편집합니다.

    ...
    android {
        ...
        defaultConfig { ... }
        signingConfigs {
            release {
                storeFile file("myreleasekey.keystore")
                storePassword "password"
                keyAlias "MyReleaseKey"
                keyPassword "password"
            }
        }
        buildTypes {
            release {
                ...
                signingConfig signingConfigs.release
            }
        }
    }
    ...
    

  3. 메시지가 나타나면, 키스토어와 별칭 암호를 입력합니다.

    주의: 위에서 설명한 대로, 암호가 화면에 보입니다.

그러면 <your_module_name>-release.apk로 명명된 Android 애플리케이션 .apk 파일이 모듈 build/ 디렉토리 내에 생성됩니다. 이 .apk 파일은 build.gradle 파일에 지정된 개인 키로 서명되었으며 zipalign으로 정렬되었습니다. 설치 및 배포 준비가 되었습니다.

릴리스 모드에서 빌드되고 서명된 후

애플리케이션을 개인 키로 서명한 후에는, 이 애플리케이션을 에뮬레이터기기에 설치할 수 있습니다. 또한 애플리케이션을 웹 서버에서 기기에 설치할 수도 있습니다. 서명된 .apk를 웹사이트에 업로드한 다음, Android 웹 브라우저에 .apk URL을 로드하여 애플리케이션을 다운로드하고 설치를 시작하면 됩니다. (기기에서 Settings > Applications > Unknown sources를 활성화했는지 확인하세요.)

에뮬레이터에서 실행

Android 에뮬레이터에서 애플리케이션을 실행하려면, AVD를 생성해야 합니다.

애플리케이션을 실행하려면:

  1. AVD Manager를 열고 가상 기기 실행

    Virtual Devices 뷰에서 AVD를 선택하고 Start를 클릭합니다.

  2. 애플리케이션 설치

    SDK의 tools/ 디렉토리에서 .apk를 에뮬레이터에 설치합니다.

    adb install <path_to_your_bin>.apk
    

    애플리케이션을 빌드한 후 .apk 파일(릴리스 또는 디버그 키로 서명된 파일)은 모듈 build/ 디렉토리에 있습니다.

    둘 이상의 에뮬레이터가 실행 중이면, 애플리케이션을 설치할 에뮬레이터를 -s 옵션과 함께 일련 번호로 지정해야 합니다. 예:

    adb -s emulator-5554 install path/to/your/app.apk
    

    사용 가능한 기기 일련 번호의 목록을 보려면, adb devices를 실행합니다.

에뮬레이터에서 애플리케이션이 보이지 않으면, 에뮬레이터를 닫고 AVD Manager에서 가상 기기를 다시 실행해 보세요. 애플리케이션을 처음 설치할 때, 이 애플리케이션이 애플리케이션 런처에 나타나지 않거나 다른 애플리케이션에서 액세스할 수 없는 경우가 가끔 있습니다. 그 이유는 대개 에뮬레이터 시작 시에만 Package Manager가 매니페스트를 완전히 검사하기 때문입니다.

애플리케이션을 테스트할 때 반드시 여러 AVD를 생성하세요. 여러분의 애플리케이션과 호환되는 각 플랫폼과 화면 유형에 대해 AVD가 하나씩 있어야 합니다. 예를 들어, Android 4.0(API 레벨 14) 플랫폼에 대해 애플리케이션을 컴파일하는 경우, 4.0 이상의 각 플랫폼에 대해 하나의 AVD를 만들고 지원하는 각 화면 유형에 대해 하나의 AVD를 만든 다음, 각각에서 애플리케이션을 테스트해야 합니다.

팁: 에뮬레이터가 하나만 실행 중인 경우, 한 단계만으로 애플리케이션을 빌드하여 에뮬레이터에 설치할 수 있습니다. 프로젝트 디렉토리의 루트로 이동하고, Ant를 사용하여 install mode: ant install로 프로젝트를 컴파일합니다. 그러면 애플리케이션이 빌드되고, 디버그 키로 애플리케이션이 서명된 후 현재 실행 중인 에뮬레이터에 설치됩니다.

기기에서 실행

애플리케이션을 기기에서 실행하려면, 기기에 대해 다음과 같은 기본 설정을 수행해야 합니다.

자세한 내용은 기기를 개발용으로 설정을 참조하세요.

기기가 설정되고 USB를 통해 연결된 후, SDK의 platform-tools/ 디렉토리로 이동하여 .apk를 기기에 설치합니다.

adb -d install path/to/your/app.apk

-d 플래그는 연결된 기기를 사용할 것임을 지정합니다(에뮬레이터도 실행 중인 경우).

위에 사용된 도구들에 대한 자세한 내용은, 다음 문서를 참조하세요.

애플리케이션 서명

Android 애플리케이션 개발을 시작할 때 명심할 점은, 시스템이 이 애플리케이션을 에뮬레이터나 기기에 설치하기 전에 모든 Android 애플리케이션이 디지털로 서명되어야 한다는 것입니다. 그 방법은 두 가지가 있습니다: 디버그 키(에뮬레이터나 개발 기기에서 즉시 테스트용) 또는 개인 키(애플리케이션 배포용).

Android 빌드 도구를 사용하면 빌드 시에 디버그 키로 .apk 파일을 자동으로 서명할 수 있습니다. 즉, 자신의 개인 키를 생성하지 않고도 애플리케이션을 빌드하여 에뮬레이터에 설치할 수 있습니다. 그러나, 애플리케이션을 게시하려는 경우에는 SDK 도구에 의해 생성된 디버그 키기 아니라 자신의 개인 키로 애플리케이션을 서명해야 합니다.

Android에서 애플리케이션 서명과 이 서명이 Android 애플리케이션 개발자인 여러분에게 어떤 의미가 있는지에 대한 자세한 내용은 애플리케이션 서명을 참조하세요. 이 문서에는 애플리케이션 게시 및 서명에 대한 가이드도 포함됩니다.

Gradle용 Android 플러그인

Android 빌드 시스템에서는 Gradle DSL(Domain Specific Language) 및 선언적 언어 요소를 지원하기 위해 Gradle용 Android 플러그인을 사용합니다. 플러그인에 대한 설명과 지원되는 Gradle DSL 요소의 전체 목록 링크는 Gradle용 Android 플러그인 섹션을 참조하세요.

This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.