18/03/23

Android 라이브러리 jCenter 배포하기

개인 프로젝트에서 사용하던 기능을 개선하면서 이왕 하는김에 라이브러리로 만들어버리기로 했다.
그리고 그 라이브러리를 오픈소스로 만들어 maven 저장소에 등록해보기로 했다.

bintray

  1. bintray 가입
    -----------2018-03-23-------12.26.12-1
    이리저리 찾아본 결과 bintray에 등록하는게 가장 쉬운 방법인 것 같았다.
    https://bintray.com/ 에 들어가면 중앙에 누르고싶게 생긴 START YOUR FREE TRIER 초록색 버튼이 있다. 오픈소스 프로젝트는 저 버튼에 속지 말고 그 오른쪽에 있는 Sign Up Here을 누르자

  2. bintray repository 등록
    -----------2018-03-23-------12.39.29-3
    repository의 name은 보통 public 혹은 maven을 사용하는 것 같다.

  3. API Key 확인
    -----------2018-03-23-------1.32.04
    [Edit Profile] -> [API Key] 에서 API Key를 확인한다.

bintray-release

bintray로 쉽게 배포할 수 있게 도와주는 gladle plugin.

  1. dependency 추가
    프로젝트의 build.gradle파일 혹은 라이브러리 모듈의 build.gradle파일에 dependency를 추가한다.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.novoda:bintray-release:0.8.0'
    }
}

bintray-release의 버전은 여기서 확인

  1. publish 세팅
    라이브러리 모듈의 build.gradle파일에 아래와 같이 추가한다.
apply plugin: 'com.novoda.bintray-release'

publish {
    userOrg = 'kimjunil'
    groupId = 'kim.junil.banneradmediator'
    artifactId = 'banner-ad-mediator'
    publishVersion = '0.1.4'
    desc = 'https://github.com/kimjunil/BannerAdMediator'
    website = 'https://github.com/kimjunil/BannerAdMediator'
    issueTracker = "https://github.com/kimjunil/BannerAdMediator/issues"
    repository = "https://github.com/kimjunil/BannerAdMediator.git"
}

헷갈릴만할 항목 :
userOrg = BINTRAY_USERNAME
groupId = PACKAGE_NAME
artifactId = 라이브러리의 이름 (영문 소문자와 - 만 사용 가능)
publishVersion = 라이브러리 버전

  1. 빌드
$ ./gradlew clean build bintrayUpload -PbintrayUser=[BINTRAY_USERNAME] -PbintrayKey=[API_KEY] -PdryRun=false

위 명령어로 빌드하면 자동으로 bintray에 배포된다

프로젝트에 배포한 라이브러리 적용

  1. 배포한 라이브러리 사용
    여기까지 진행이 되면 다른 프로젝트에서 아래와 같이 라이브러리를 사용할 수 있다.
    이렇게 사용할 경우 라이브러리 버전 뒤에 @aar을 꼭 붙여야한다.
// 프로젝트 build.gradle
allprojects {
    repositories {
        jcenter()
        google()
        ...
        maven { url 'http://dl.bintray.com/kimjunil/maven/'}
        ...
    }
}
// app모듈 build.gradle
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:26.1.0'
    ...
    implementation 'kim.junil.banneradmediator:banner-ad-mediator:0.1.4@aar'
    ...
}
  1. jCenter를 통해 배포하기
    안드로이드 프로젝트는 jCenter저장소가 기본적으로 적용되어있기 때문에 jCenter를 통해 배포될 경우 repositories에 따로 maven 저장소를 추가해주지 않아도 된다. 그리고 라이브러리를 참조할 때 @aar을 붙이지 않아도 되어 build.gradle의 코드가 더 깔끔해보이는 효과가 있다.
    -----------2018-03-23-------1.55.51
    오른쪽에 Add to jCenter 버튼을 누르면 jCenter에 라이브러리 등록요청을 보낼 수 있다.
    요청을 보내도 별다른 피드백이 없길래 구글링을 해본 결과 요청을 보낸 뒤 반나절쯤 후에 등록되었다는 메일이 온다고 한다.
    나는 반나절이 아니라 하루정도 걸렸던 것 같다.
    등록이 되고 나면 다른 잘나가는 오픈소르 라이브러리들처럼 maven { url 'http://dl.bintray.com/kimjunil/maven/'}@aar을 지우고 implementation 'kim.junil.banneradmediator:banner-ad-mediator:0.1.4' 만으로 라이브러리를 다른 프로젝트에서 사용할 수 있다
  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Comments powered by Disqus