안녕하세요.
이번 포스팅에서는 내가 만든 라이브러리를 외부에 등록하고 implementation해서 쓸수 있는
방법을 알려드릴거에요. 이전 포스팅에서 만든 프로젝트를 가지고 이어서 진행해보도록 하겠습니다!
만약 이전 포스팅을 보지 않으셧다면 https://dog-footprint.tistory.com/4
보시는 것을 추천드립니다!
안드로이드 라이브러리를 배포하는 방법이 여러개가 있는데 그중에 가장 쉽다고 알려진 bintray를 통해 배포를 진행해 보겠습니다!
지난번에 만든 프로젝트를 이제 깃허브에 올려야 합니다.
위와 같이 제가 만든 프로젝트를 등록하였습니다. 이후에 bintray에 회원가입을 진행해야하는데요.
위 사이트에 들어가셔서 Sign-In을 클릭합니다. 이후에 아래 빨간 박스 부분으로 회원가입을 진행하시면 됩니다.
이제 회원가입을 진행 한 후에 Add New Repository를 클릭하여 내가 등록할 라이브러리 모듈의 repository를 만들면 되는데요. 저는 test라는 이름을 가지고 type을 maven으로 설정하여 만들었습니다.
그 다음 bintray에 내 모듈을 업로드 하기 위한 api key를 알아야 하는데요. View Profile을 클릭 후 Edit을 클릭합니다.
View Profile -> Edit -> Api Key 를 클릭하셔서 모듈을 업로드할때 필요한 키를 얻어내면 됩니다. 이렇게 키까지 얻게 되었으면 다시 IDE로 돌아가서 build.gradle(Module:mylibrary) 에 업로드하기 위한 코드를 추가해 줘야 하는데요.
깃허브에서 참고해서 적으시면 되는데 완전히 친절하게 되어있는거 같진 않은거같아요. 이부분에서 삽질을 좀 했습니다... 우선 깃헙 주소는
https://github.com/panpf/bintray-publish
여기서 빠진 부분중에 repoName을 적는 부분이 빠져있었습니다. 이 부분이 없어서 계속 업로드를 요청해도 제대로 업로드가 되지 않았구요. 그래서 publish{} 부분에 repoName을 추가해줬습니다. build.gradle(Module:mylibrary)에 입력한 내용은 아래와 같습니다.
1. 2번째 줄에 bintray 플러그인을 적용하는 코드를 apply plugin: 'com.android.library' 다음 라인으로 입력합니다.
2. publish 하는 부분에 userOrg(bintray에서 닉네임), groupId(패키지명), artifactId(라이브러리 이름), publishVersion(앱의 배포버전과 동일), repoName , desc , website(깃헙주소) 를 적으시면 됩니다. 이후 buildscript를 추가합니다.
apply plugin: 'com.android.library'
apply plugin: 'com.github.panpf.bintray-publish'
publish {
userOrg = 'jakchang'
groupId = 'com.example.externaldependency'
artifactId = 'mylibrary'
publishVersion = '1.0.0'
repoName = 'test'
desc = 'my library description'
website = 'https://github.com/ckdrb7017/ExternalDependency'
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.github.panpf.bintray-publish:bintray-publish:1.0.0'
}
}
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.3.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
위처럼 작성되셧다면 이제 터미널을 실행시킵니다. 프로젝트 상단의 위치로 가서
gradlew clean build bintrayUpload -PbintrayUser=유저네임 -PbintrayKey=api키 -PdryRun=false
입력을 해주시면
업로드가 성공했다는 메세지를 볼 수 있습니다. 또한 bintray홈페이지를 가보면
이렇게 업로드가 된 것을 확인 하실 수 있습니다. 이제 아래에 새로 생긴 mylibrary를 클릭해서
오른쪽 하단의 Add to Jcenter 를 클릭합니다.
그러면 이렇게 내가 올린 라이브러리를 실제로 배포하기전에 bintray에서 확인 후 승인이 되면 실제 배포가 이루어 집니다. 위에 아무 메세지나 적은 후에 몇시간 기다리다 보면 결과메일이 날라오게 됩니다.
이렇게 승인이 되었다는 메일이 날라오게 되는데요. 만약 깃허브 주소에 Demo 나 Test가 들어가면 승인을 안해주는 경우도 있었습니다. 그래서 테스트이지만 깃헙에 올리실때 ExternalDependency 이렇게 Demo나 Test가 안들어가게 올리시면 될거같아요!
배포된 라이브러리를 활용하기 위해 새로 프로젝트를 만들어서 내가 만든 라이브러리를 세팅해주시면 됩니다.
implementation 'groupId:artifactId:publishVersion'
sync now를 클릭해주신다음
이렇게 jar파일이 생긴걸 확인할 수 있습니다.
위 프로젝트에 대한 내용은 제 깃헙에서 확인 하실 수 있습니다.
https://github.com/ckdrb7017/ExternalDependency
감사합니다!
'개발 > 삽질' 카테고리의 다른 글
안드로이드 NoSuchMethodError: no static method 에러 발생시 (0) | 2020.12.13 |
---|---|
안드로이드 로컬파일 접근시 Unexpected SecurityException 에러 (0) | 2020.12.13 |
안드로이드 채팅방 입력 EditText 설정하기 (0) | 2020.08.02 |
안드로이드 내가 만든 라이브러리 배포하는법1(로컬) (0) | 2020.06.27 |
플레이스토어 앱이 업로드가 안될때 (0) | 2020.05.31 |
댓글