HOME > android > tips

안드로이드 - CTS hostside를 gradle로 빌드하는 방법

JSFollow06 Jul 2018

CTS(Compatibility Test Suite)는 안드로이드의 호환성테스트입니다. AOSP프로젝트 안에 코드가 있기 때문에 AOSP를 받으면 CTS를 빌드할 수 있습니다.

CTS의 Hostside 코드를 수정하고 빌드해보려고 했는데 framework 전체 코드와 함께 빌드하는 것이 귀찮게 느껴졌습니다. 의존성 있는 jar만 구할 수 있다면 gradle만으로 빌드가 될 것 같았거든요. 그래서 AOSP(8.1)의 CTS를 빌드하여 의존성있는 jar 라이브러리를 얻었고 이것과 함께 gradle로 CTS hostside 코드가 빌드되도록 해보았습니다.

프로젝트

의존성 jar는 libs/에 넣었습니다. 사실 프로젝트가 빌드되는데 3개의 jar만 있으면 되는데 혹시 몰라 CTS에서 빌드되는 모든 jar를 넣었습니다. 소스는 CTS hostside의 multiuser를 예제로 사용하였습니다.

.
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── libs
│   ├── compatibility-host-util.jar
│   ├── cts-tradefed.jar
│   ├── ddmlib-prebuilt.jar
│   ├── emmalib.jar
│   ├── host-libprotobuf-java-full.jar
│   ├── host-libprotobuf-java-lite.jar
│   ├── hosttestlib.jar
│   ├── jack-jacoco-reporter.jar
│   ├── jarjar-apache-ant.jar
│   ├── jarjar-maven-plugin-api.jar
│   ├── json-prebuilt.jar
│   ├── junit-host.jar
│   ├── kxml2-2.3.0.jar
│   ├── loganalysis.jar
│   ├── tools-common-prebuilt.jar
│   └── tradefed.jar
├── settings.gradle
└── src
    ├── AndroidTest.xml
    └── main
        └── java
            └── android
                └── host
                    └── multiuser
                        ├── BaseMultiUserTest.java
                        ├── CreateUsersNoAppCrashesTest.java
                        └── CreateUsersPermissionTest.java

build.gradle은 아래처럼 설정하였습니다.

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'android.host.multiuser'

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

빌드

$ gradle build
BUILD SUCCESSFUL in 1s
5 actionable tasks: 5 executed

참고