본문 바로가기
Works/Android

[Android] Android Library(ARR) 배포 - JCenter(Bintray)

by Vader87 2020. 8. 31.
반응형

Android Studio 에서 새 안드로이드 프로젝트를 만들고 build.gradle 파일을 열어보면 repository에 jcenter 라는 것을 볼 수 있다.

buildscript {
	/**
     * The repositories block configures the repositories Gradle uses to
     * search or download the dependencies. Gradle pre-configures support for remote
     * repositories such as JCenter, Maven Central, and Ivy. You can also use local
     * repositories or define your own remote repositories. The code below defines
     * JCenter as the repository Gradle should use to look for its dependencies.
     *
     * New projects created using Android Studio 3.0 and higher also include
     * Google's Maven repository.
     */
     repositories {
     	...
        jcenter()
        ...
    }
    ...
}

Maven 혹은 Ivy 원격 저장소를 통한 라이브러리 추가 방법 설명에도 jcenter 가 나온다.

https://developer.android.com/studio/build/dependencies#remote-repositories

 

빌드 종속성 추가  |  Android 개발자  |  Android Developers

Android 스튜디오에서 Gradle 빌드 시스템을 이용하여 빌드 종속성을 추가하는 방법에 관해 알아보세요.

developer.android.com

JCenter 는 Bintray 에서  운영중인 Maven Repository 이다.

mvnrepository.com/repos/jcenter

 

Maven Repository: JCenter

 

mvnrepository.com

JCenter에 안드로이드 라이브러리 배포를 하기 위해서는 우선 Bintary 에 회원 가입을 해야 한다.

bintray.com/

 

Bintray - Download Center Automation & Distribution w. Private Repositories

100% Automated via REST API Open for automation, JFrog Bintray easily integrates with your existing DevOps ecosystem, such as your continuous integration pipeline and your internal repositories. A rich REST API allows you to control every aspect of your so

bintray.com

Sign up

Bintray 회원 가입시 주의할 점은 어떠한 Sign up 을 고르느냐에 따라 유료 회원이 될지 무료 회원이 될지 선택된다는 것이다. 이 선택은 회원 탈퇴 말고는 해결 방법이 없으니 가입시 확인하고 진행하기 바란다. 유료 회원의 경우 Trial 버전으로 한달간 무료 사용이 가능하지만 그 이후에는 결제를 해야 계속 사용 가능하다. 어떤 방식을 이용했는지 기억나지 않으면 본인 아이디 왼쪽에 Trial Activel 이 뜨는지 확인해 보면 된다.

Sign up trial
View Profile

일단 Repository 를 등록하는 것이 좋은데 .  Type도 당연히 maven 을 선택해 준다.

Create Repository

Open Source Account 라면 당연히 Public 밖에 선택되지 않는다.

Name 은 maven 을 하길 추천한다. 추후 설명에서 사용한 novoda 플러그인에서 upload 해주는 Respoitory 이름이 maven 고정이기 때문이다.

Type 또한 maven 을 선택한다.

Licenses 는 해당 저장소의 기본 라이센스 설정이다. 저장소에 생성되는 패키지 들은 기본으로 저 라이센스를 따라가는 듯 하다.

Description 은 저장소 설명을 적는란이다.

Create 해서 저장소 생성을 완료한다.

완료된 저장소를 선택하면 다음과 같은 화면을 볼 수 있다.

이제 저장소에 내가 생성한 라이브러리를 올릴 차례이다. Add New Package 버튼이 보이듯 수동으로 추가하는 방법도 있으나 Android Studio 에서 Gradle 빌드를 통해 Upload 하는 것이 더 편하지 않을까?

Bintary 공식 예제에 Android 라이브러리를 Upload 하는 예제가 나와 있어 따라 해 본다.

github.com/bintray/bintray-examples/tree/master/gradle-bintray-plugin-examples

 

bintray/bintray-examples

Examples of resolving and deploying to Bintray.com - bintray/bintray-examples

github.com

Gradle 빌드시 성공했다는 메세지가 나오는데 아무리 기다려도 저장소에 패키지 생성은 되지 않았다.

Bintray Github 에 비슷한 이슈가 등록되 있는데, 제일 큰 원인은 에러가 발생하지 않는게 큰 것 같다.

실패 했는지도 모르고, 원인도 파악이 안되니 진행이 되지 않는다.

이슈에서는 API Key 를 재발급 해서 성공했다는 글이 있어 따라해 봤으나 실패하고 다른 방법을 찾아보았다.

github.com/bintray/gradle-bintray-plugin/issues/214

 

package not create in my maven repository · Issue #214 · bintray/gradle-bintray-plugin

i clone android-gradle-3.0.0-maven-example from github and create maven repository in my panel after bintrayupload i got this result: Executing external task 'bintrayUpload'... Configuratio...

github.com

novoda/bintray-release 라고 Bintray Upload를 간단하게 해주는 Gradle Plugin 이 있다.

github.com/novoda/bintray-release/releases

 

Releases · novoda/bintray-release

A helper for releasing from gradle up to bintray. Contribute to novoda/bintray-release development by creating an account on GitHub.

github.com

주의할 점은 최신 Plugin 버전을 사용해야 된 다는 것이다. 이것도 Bintray 정책이 변경되면 따라서 수정되어야 하기 때문에 최신 버전도 안될 수 도 있다. 현재 작성중에는 0.9.2 가 최신 버전이다.

build.gradle(Project) 에 다음 종속성을 추가해 준다.

buildscript {
    repositories {
        ...
        jcenter()
    }
    dependencies {
    	...
        classpath 'com.novoda:bintray-release:0.9.2'
        ...
    }
}

build.gradle(Module) 쪽 마지막 부분에 다음을 추가해 준다.

apply plugin: 'com.novoda.bintray-release'

publish {
    userOrg = 'chanuklee0227'
    groupId = 'com.vader87.logcatlayout'
    artifactId = 'logcatlayout-lib'
    publishVersion = '0.0.1'
    desc = 'LogcatLayout library'
    website = 'https://github.com/ChanUkLee/LogcatLayout'
    issueTracker = "https://github.com/ChanUkLee/LogcatLayout/issues"
    repository = "https://github.com/ChanUkLee/LogcatLayout.git"
}

userOrg 는 Bintary 의 Organizations 이름이라고 설명되 있는데 아무거나 사용해도 상관 없는 듯하다.

groupId 는 패키지명이라고 생각하면 될 것 같다.

artifactId 는 - 포함 영어 소문자만 정의 가능한 고유 이름이다. 저장소에 보여지는 이름이고 나중에 Gradle 을 통한 라이브러리 추가시에도 사용되는 이름이다.

publishVersion 은 defaultConfig 에 설정한 versionName 과 일치시킨다.

desc 는 저장소 패키지에 표시되는 설명 문구이다.

website 는 본인 Github 페이지나, 홈페이지 등을 연결하면 될 듯 하다.

issueTracker 또한 Github 의 이슈 페이지 연결을 하면 될듯 하다.

repository 는 Git 과 같은 원격 저장소 링크를 설정해 주면 되는데 Github 의 저장소를 연결해 주었다.

여기까지 설정이 끝났다면 이제 Android Studio 의 Terminal 에서 Command Line Build 를 해주면 된다.

gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false

BINTRAY_USERNAME 에는 본인 아이디를 입력하고 BINTRAY_KEY 에는 API Key 값을 입력해 주면 된다.

API Key 값은 프로필 Edit 선택해서 나오는 Edit Your Profile 창에서 API Key 를 입력하면 나온다.

해당 API Key 는 확인하는 위치에서 손쉽게 재발행이 가능하니 나중에 재발행이 필요한 경우 참고 하기 바란다.

View Profile
Edit Your Profile
Command Line Builder

Command Line Build 로 문제 없이 Upload가 완료되었다면 저장소에서 바로 패키지를 확인할 수 있다.

해당 패키지에 들어가면 추가적으로 디테일한 패키지 설정을 해줄 수 있으니 참고 하기 바란다.

또한 JCenter 등록도 패키지 설정에서 버튼 한번으로 가능하다.

JCenter 등록은 신청 즉시 되는것은 아니고 약간의 시간이 걸리는데 완료되면 Bintray 쪽에 아래와 같은 메세지 알림이 온다.

이제 패키지 설정의 Maven build setting 의 Choose dependency snippet: Gradle 을 선택해 복사한뒤 사용하고자 하는 Android 프로젝트의 build.gradle dependency 에 추가하면 해당 라이브러리를 직접 추가하지 않고 gradle build 를 통해 추가할 수 있다.

반응형

댓글