Android Gradle 외부 라이브러리 추가

가장 기본적 Gradle 외부라이브러리 참조 방법

 app module의 dependencies 블록에 외부 라이브러리를 지정합니다. 외부 라이브러리를 지정할때 compile 명령을 사용합니다. 
http://fsd-jinss.tistory.com/36 앞서 생성했던 안드로이드 그래들 프로젝트에서의 app module gradle dependencies 부분을 살펴 보시겠습니다.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])                    //1
    testCompile 'junit:junit:4.12'                                       //2
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'            //3
}

1. libs폴더의 JAR파일을 추가하는 방법입니다.
2. 테스트 빌드시 참조하는 라이브러리 입니다.
3. 로컬에 없는, 외부라이브러리를 참조합니다. Gradle 에서 외부 라이브러리를 참조하기 위해서는 다음 세가지 정보가 필요합니다.
– group Id : 라이브러리 패키지 이름이 필요합니다. (com.android.support)
– arifact id : 라이브러리 이름이 필요합니다. (appcompat)
– version   : 참조하는 버전명이 필요합니다. (v7:26.0.0-alpha1)

다른 모듈 소스코드 참조하기

아래는 라이브러리 모듈(library module, app module 말고요)의 소스코드 참조하는 방법입니다.

dependencies {
   compile project(':mylibrary') 
}

다음은 하위폴더에 위치한 라이브러리 모듈의 소스코드를 참조하는 방법입니다.
lib_modules 폴더 하위에 mylibrary가 위치한다면 다음과 같이 기술합니다.

dependencies {
   compile project(':lib_modules:mylibrary') 
 } 

디버그 모드와 릴리즈 모드 참조하기

 dependencies {
 debugCompile ‘com.abcd.test:myTest-android:1.3’
 releaseCompile ‘com.abcd.test:myTest_release-android:1.3’
}

디버그 컴파일과 릴리즈 컴파일로 구분합니다.

안드로이드 유닛 테스트 참조하기

dependencies {
    androidTestCompile 'junit:junit:4.12'
}

참고로 androidTestCompile은 안드로이드 UI 테스팅할때 사용하는 명령어로, testCompile과 구별됩니다.

공개라이브러리 참조하기 – JAR 파일

HTTP 클라이언트와 웹소켓 클라이언트를 지원하는 AndroidSync 참조 예입니다. github에 Gradle에서 간편하게 추가하는 방식을 소개하고있습니다.

 dependencies{
 compile 'com.koushikdutta.async:androidasync:2.+'
}

공개라이브러리 참조하기 – AAR 파일

AAR파일을 참조해야하는 경우가 있습니다.  @aar을 끝에 붙여주면 됩니다.

dependencies{
  complie 'com.abcd:andrid-xxx:1.0.1@aar'
}

로컬에 있는 AAR파일 참조하기

로컬에 AAR을 복사하여 참조하는 경우도 있을 수 있습니다. 이럴때는 libs 폴더에 복사후 gradle을 통해 참조할 수 있습니다. 

이때 module build.gradle 파일의 dependencies 블록만 변경해서는 안되고, repositories 블록도 함께 변경해야 합니다.

repositories{
    flatDirs{
        dirs 'libs'
    }
}

다음 예는 mylibrary 모듈의 패지 이름과 aar파일 예시이름 버전 1.0으로 로컬에 있는 경우 예입니다. 

dependencies{
  compile 'com.example.mylibray:myTest:1.0@aar'
}

.so(JNI)파일 참조하기

so 파일을 참조해야하는 경우도 있습니다. libs폴더 하위에 x86, armeabi-v7a 등 폴더를 만들고 그에맞는 .so파일을 복사하면 됩니다. (JNI 참고하세요)
아래와 같이 작성하시면 되겠습니다.
sourceSets는 안드로이드 앱을 gradle로 빌드하기 위해 사전에 약속된 폴더 구조입니다. 메인소스의 jniLibs.srcDirs 항목을 libs로 지정합니다.

android {
 sourceSets{
    main{
     jniLibs.srcDirs = ['libs']
    }
  }
}

그 외의 경우.

Gradle은 외부라이브러리르 가져올때, 그라이브러리가 내부적으로 참조하는 다른라이브러리도 함께 땡겨옵니다. 이럴 때exclude group 으로 특정 참조그룹을 제외시킬 수 도 있습니다. 현재 프로젝트와 의도지않게 가져오는 라이브러리의 버전 충돌문제로 사용하는 편입니다.

compile('xxx.xxx.xx:2.2.2'){<br>  <strong>exclude group:</strong> 'com.xxx' <br>}

transitive 옵션을 줄 수 있습니다. aar을 붙여 참조하게되면 transitive 옵션은 false 로 변경됩니다. (aar의 경우 그런것 같습니다.)
명시적으로 true값을 준다면, aar 파일이 필요로 하는 라이브러리를 추가로 땡겨 오게 됩니다.

compile('xxx.xxx.xx:2.2.2'){
 <strong>transitive </strong>= true or false 
}

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다