웹사이트 검색

Jenkins로 Android 앱을 빌드하는 방법


이 기사에서는 Jenkins가 Android 앱을 빌드하도록 설정됩니다. Jenkins가 이미 설치되어 있어야 하므로 아직 설치되지 않은 경우 먼저 여기의 단계를 따르십시오. 이 기사에서는 프로젝트가 Git 또는 Subversion과 같은 버전 제어를 사용한다고 가정합니다. 나는 주로 Gradle이라는 새로운 빌드 시스템에 대해 이야기할 것이지만 이 기사는 Ant 빌드를 설정하는 데에도 사용할 수 있습니다.

필요한 소프트웨어 설치

시작하려면 Android SDK를 설치해야 합니다. 다운로드 위치를 찾으려면 Android SDK 다운로드 페이지를 방문하십시오. 그런 다음 다른 플랫폼용 다운로드를 클릭하고 Linux 버전의 링크를 복사합니다(SDK 도구만 해당).

링크를 복사한 후 SSH 세션으로 전환합니다. CD를 /opt에 넣고 Android SDK를 다운로드합니다.

cd /opt
wget <link you copied here>

작성 시 다음 명령을 실행해야 합니다.

wget http://dl.google.com/android/android-sdk_r22.3-linux.tgz

그런 다음 파일의 압축을 풉니다.

tar zxvf <filename of the just downloaded file>

이제 방금 다운로드한 파일을 제거할 수 있습니다.

rm <filename of the just downloaded file>

이제 일부 환경 변수를 설정해야 합니다. /etc/profile.d/android.sh(nano /etc/profile.d/android.sh)를 편집하고 다음을 추가합니다.

export ANDROID_HOME="/opt/android-sdk-linux"
export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH"

그런 다음 파일을 다시 로드합니다.

source /etc/profile

Git을 사용하려는 경우 Git도 설치합니다.

sudo apt-get install git-core

Android SDK 구성

프로젝트를 빌드하려면 Android SDK에 몇 가지 패키지가 필요합니다. 먼저 SDK 자체를 업데이트합니다(일부 라이선스를 수락해야 함).

android update sdk --no-ui

이것은 모든 Android 버전을 설치하므로 꽤 오래 걸립니다. 모든 패키지를 설치하지 않으려면 자세히 읽어보십시오.

특정 부분만 설치하려는 경우 SDK 업데이트에 대한 자세한 내용은 이 StackOverflow 질문에서 확인할 수 있습니다.

가장 필요할 가능성이 높은 패키지는 다음 명령으로 설치됩니다(android-19의 "19\를 최신 Android SDK 버전으로 교체).

android update sdk -u --filter platform-tools,android-19

그러나 이렇게 하면 Gradle에 필요한 빌드 도구가 설치되지 않습니다. 이를 위해 다음 명령을 실행합니다.

android list sdk --all

이 목록에서 Android SDK Build-tools, 버전 xx.xx.xx라는 첫 번째 항목을 찾습니다. 항목 앞에 나열된 번호를 기억하고 다음을 실행합니다.

android update sdk -u --all --filter <number>

Android 지원 리포지토리 및 Android 지원 라이브러리에 대해서도 이 작업을 수행합니다.

프로젝트에서 빌드 도구의 특정 버전을 사용할 것임을 알고 있으면 목록에서 해당 항목을 찾으십시오. buildToolsVersion으로 build.gradle 파일에서 볼 수 있습니다.

android {
	buildToolsVersion "18.1.1"
	compileSdkVersion 18
}

또한 build.gradle에서 compileSdkVersion으로 볼 수 있는 적절한 플랫폼 버전을 설치합니다.

이제 Jenkins에서 Android SDK에 액세스할 수 있도록 다음을 실행합니다.

sudo chmod -R 755 /opt/android-sdk-linux

또한 64비트 OS를 사용 중인 경우 32비트 라이브러리를 설치합니다.

sudo apt-get install ia32-libs

그런 다음 Droplet을 재부팅합니다.

sudo shutdown -r now

Android 프로젝트 구성

여전히 Eclipse에서 프로젝트를 빌드하는 경우 빌드 스크립트를 생성해야 합니다. 가장 쉬운 옵션은 파일 -> 내보내기로 이동한 다음 Android -> Generate Gradle 빌드 파일을 선택하여 Eclipse에서 바로 이 작업을 수행하는 것입니다. 그런 다음 프로젝트를 선택하고 마침을 클릭합니다. 그러면 Jenkins에서 빌드할 수 있는 Gradle 프로젝트가 생성됩니다.

Gradle을 사용하지 않으려면 Apache Ant를 계속 사용할 수 있습니다. 이것이 무엇인지 모르거나 Gradle 프로젝트 내보내기가 실패한 경우 이 단계를 건너뛸 수 있습니다. 필요한 유일한 단계는 Android SDK가 설치된 PC에서 다음 명령을 실행하는 것입니다.

android update project -p .

젠킨스 구성

Jenkins도 구성해야 합니다. 먼저 JDK를 설치해야 합니다. 이렇게 하려면 Jenkins 관리 -> 시스템 구성을 방문하십시오. 그런 다음 JDK를 찾아 JDK 추가를 클릭합니다. 오라클 계정이 있어야 합니다. 자격 증명을 입력하려면 JDK 섹션에 사용자 이름/암호를 입력하십시오를 클릭하십시오. 없는 경우 다음 화면의 링크를 따르십시오. 입력했으면 JDK 구성으로 돌아갑니다. 이름 입력 – Java 버전을 따라 이름을 지정하는 것이 좋습니다. 그런 다음 자동으로 설치를 선택하고 최신 Java SE Development Kit 버전을 선택하십시오. 이렇게 하면 나중에 JDK가 설치됩니다.

Ant를 사용하는 경우 Ant 섹션에서 동일한 단계를 실행합니다.

이제 Jenkins 관리 -> 플러그인 관리 -> 사용 가능을 방문하십시오. 다음 플러그인을 확인하고 다시 시작하지 않고 설치를 클릭합니다.

  • Gradle 플러그인(Ant를 사용하는 경우 필요하지 않음)\n
  • Git 플러그인(Git을 사용하는 경우)\n
  • Android 에뮬레이터 플러그인(에뮬레이터를 사용하려는 경우)\n

이렇게 하면 몇 가지 다른 플러그인이 자동으로 설치됩니다. Gradle을 사용하려는 경우 JDK에서 Gradle을 자동으로 설치하는 것과 동일한 단계를 실행합니다. 작성 당시에는 Gradle 0.9가 필요합니다. Gradle 래퍼를 사용하는 경우, 즉 소스 제어에 체크인된 프로젝트에 gradlew 파일이 있는 경우에는 필요하지 않습니다.

작업 설정

이제 작업을 설정할 수 있습니다. 새 작업을 클릭하고 이름을 지정한 다음 자유 스타일 소프트웨어 프로젝트 빌드를 선택합니다. 그런 다음 확인을 클릭합니다. 소스 코드 관리 섹션에서 프로젝트에서 사용 중인 버전 제어 시스템을 선택하고 정보를 제공합니다. 그런 다음 빌드 섹션에서 Gradle을 사용하는 경우 Invoke Gradle 스크립트를 추가하고 Ant를 사용하는 경우 Invoke Ant를 추가합니다. 모든 매개변수를 입력합니다. Gradle의 경우 가장 가능성이 높은 매개변수는 다음과 같습니다.

이렇게 하면 프로젝트가 빌드되지만 APK 파일은 아직 저장되지 않습니다. 이를 구성하려면 아티팩트 보관이라는 빌드 후 작업을 추가합니다. 파일을 보관하려면 **/*.apk를 입력하세요.

저장을 클릭하면 건물을 시작할 수 있습니다! 지금 빌드를 클릭합니다. JDK가 설치되고 잠시 후 빌드가 완료됩니다! 프로젝트 페이지에는 Last successful Artifacts라는 제목이 있습니다. 여기에 생성된 모든 APK 파일이 표시됩니다.

무엇을 더?

첫 번째 Android 프로젝트가 Jenkins 인스턴스에 빌드되었습니다. 축하해요!

Jenkins 인스턴스는 1개 이상의 작업을 보유할 수 있으므로 더 많이 만들고 더 많은 Android 앱을 개발하세요!

Gradle은 앱에 자동으로 서명할 수도 있지만 이 민감한 정보는 build.gradle 파일에 저장해야 하며 이는 권장되지 않습니다. 다음은 Jenkins와 함께 사용할 수 있는 완전한 build.gradle의 예입니다.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'

    signingConfigs {
        release {
            storeFile file("keystores/release.keystore")
            storePassword "your-keystore-password"
            keyAlias "your-alias"
            keyPassword "your-alias-password"
        }
    }

    buildTypes {
        release {
            zipAlign true
            signingConfig signingConfigs.release
        }
        debug {
            zipAlign true
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.0.0'
    compile 'com.android.support:support-v4:19.0.0'
}

제출자: