개발일지

Android in A..Z - Module 베포 (Jitpack) 본문

Android (안드로이드)

Android in A..Z - Module 베포 (Jitpack)

강태종 2021. 9. 2. 09:25

Jitpack

Library를 Maven이나 jcenter같은 곳에 베포할 수 있지만 Jitpack을 사용하면 Android Module을 쉽게 베포할 수 있습니다. 또한 Android뿐만 아니라 Gradle을 사용한 프로젝트를 쉽게 베포할 수 있습니다.

 

Jitpack은 Github에 저장된 Repository를 공유하기 때문에 Git을 사용하는 개발자는 쉽게 접근할 수 있고 설정도 간편하다는 장점이 있습니다.

 

https://jitpack.io/docs/ANDROID/

 

Android - JitPack.io

From here you can search these documents. Enter your search terms below.

jitpack.io


Plugin 설정하기

Module에 위치한 Gradle에서 Plugin을 설정합니다.

* com.android.library와 maven-publish는 필수입니다.

plugins {
    id 'com.android.library'
    id 'kotlin-android'
    id 'maven-publish'
}

Gradle 설정하기

Module에 위치한 Gradle에서 aar파일을 추출하기 위한 Maven관련 Gradle을 설정합니다.

https://developer.android.com/studio/build/maven-publish-plugin#kts

 

Maven Publish 플러그인 사용  |  Android 개발자  |  Android Developers

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

developer.android.com

// Because the components are created only during the afterEvaluate phase, you must
// configure your publications using the afterEvaluate() lifecycle method.
afterEvaluate {
    publishing {
        publications {
            // Creates a Maven publication called "release".
            release(MavenPublication) {
                // Applies the component for the release build variant.
                from components.release

                // You can then customize attributes of the publication as shown below.
                groupId = 'com.example.MyLibrary'
                artifactId = 'final'
                version = '1.0'
            }
            // Creates a Maven publication called “debug”.
            debug(MavenPublication) {
                // Applies the component for the debug build variant.
                from components.debug

                groupId = 'com.example.MyLibrary'
                artifactId = 'final-debug'
                version = '1.0'
            }
        }
    }
}

Jitpack 설정하기

아래의 파일을 프로젝트 최상위 디렉토리에 작성합니다.

 

jitpack.yml

jdk:
  - openjdk11


Git 설정하기

마지막 단계입니다. Git Repository에 프로젝트를 Push하고 Tag를 따내면 끝입니다.


Jitpack에서 확인하기

https://jitpack.io/

 

JitPack | Publish JVM and Android libraries

JitPack makes it easy to release your Java or Android library. Publish straight from GitHub or Bitbucket.

jitpack.io

로그에 초록색이 나오면 정상적으로 등록된 것이고 아래 설명에 따라 dependency를 추가할 수 있습니다.


Git

https://github.com/KangTaeJong98/Library

 

GitHub - KangTaeJong98/Library: Android Library

Android Library. Contribute to KangTaeJong98/Library development by creating an account on GitHub.

github.com

Jitpack

https://jitpack.io/#KangTaeJong98/Library

 

JitPack | Publish JVM and Android libraries

JitPack makes it easy to release your Java or Android library. Publish straight from GitHub or Bitbucket.

jitpack.io


필자가 베포하면서 발생했던 Jitpack Error

1. Java Version Error

=> jitpack.yml을 최상위 폴더에 추가하니까 해결완료

FAILURE: Build failed with an exception.

* Where:
Build file '/home/jitpack/build/app/build.gradle' line: 2

* What went wrong:
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

2. Plugin Error

=> maven-publish를 plugin에 추가하니까 해결완료 (maven-publish는 Gradle 7.0 이상 기준입니다.)

FAILURE: Build failed with an exception.

* Where:
Script '/script/maven-plugin.gradle' line: 2

* What went wrong:
A problem occurred evaluating script.
> Failed to apply plugin 'com.github.dcendents.android-maven'.
   > Could not create plugin of type 'AndroidMavenPlugin'.
      > Could not generate a decorated class for type AndroidMavenPlugin.
         > org/gradle/api/publication/maven/internal/MavenPomMetaInfoProvider

3. Build는 성공했지만 Jitpack에서 Dependency를 불러 올 수 없을 때

=> Maven관련 Gradle설정하니까 해결완료

afterEvaluate {
    publishing {
        publications {
            paidRelease(MavenPublication) {
                // The following applies a component to this publication
                // which results in publishing an app bundle.
                from components.release

                groupId = 'com.taetae98.library'
                artifactId = 'final'
                version = '0.0.1'
            }
            paidDebug(MavenPublication) {
                // The following applies a component to this publication
                // which results in publishing APKs in a ZIP file.
                from components.debug

                groupId = 'com.taetae98.library'
                artifactId = 'final-debug'
                version = '0.0.1'
            }
        }
    }
}

'Android (안드로이드)' 카테고리의 다른 글

Android in A..Z - Glide Advanced  (0) 2021.10.01
Android in A..Z - Span  (0) 2021.09.16
Android in A..Z - Intent  (0) 2021.08.30
Android In A..Z - Google API (Google Map)  (0) 2021.08.18
Android in A..Z - WebView Bridge  (0) 2021.08.05
Comments