[Android] by 키워드를 통해 SharedPreferences 사용하기 - 라이브러리 만들기 (2)

Cropo - 박영훈·2022년 3월 16일
1
post-thumbnail

이전 포스트

[Android] by 키워드를 통해 SharedPreferences 사용하기 (1)
이전 포스트에서는 by와 Gson 라이브러리를 통해 다양한 타입들에 대한 Pref 클래스를 생성하여 SharedPreferences를 편하게 사용할 수 있도록 코드를 작성하였습니다.

라이브러리 만들기

본 글에서는 작성한 코드들을 다양한 사이드 프로젝트에서 편하게 추가하고 사용할 수 있도록 JetPack을 통해 Kref 라이브러리 배포를 진행한 과정을 작성하려 합니다.

프로젝트 구조

다양한 오픈 소스 프로젝트들을 살펴본 결과 일반적으로 다음과 같은 파일들로 구성되었습니다.

  1. 라이브러리 모듈
  2. app 모듈 - 주로 라이브러리의 테스트를 위한 샘플 코드를 작성합니다.
  3. README.md

JitPack 설정 및 배포

  1. Project build.gradle 파일에 android-maven-gradle-plugin 추가
    최신 release 버전은 android-maven-gradle-plugin 사이트에서 확인 가능합니다.
buildscript {
    repositories {
    	...
    }
    dependencies {
        classpath "com.github.dcendents:android-maven-gradle-plugin:{late_release_version}"
    }
}

allprojects {
    repositories {
		...
        maven { url 'https://jitpack.io' }
    }
}
  1. maven-publish plugins 추가 및 publish info 추가
plugins {
    id 'com.android.library'
    id 'maven-publish'
}

android {
	...
}

dependencies {
	...
}

afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release

                groupId = 'com.github.dudgns0507'
                artifactId = 'Kref'
                version = '1.1.4'
            }
        }
    }
}
  1. Maven Publish Plugin 확인
./gradlew publishReleasePublicationToMavenLocal
  1. JitPack 배포
    1. Github commit 작성
    2. 버전에 맞춰 release tag 생성
    3. Jitpack 접속
    4. Repository 이름으로 검색
    (배포 도중 빌드 에러가 발생시 Log를 통해 에러를 확인하고 수정 및 재배포 가능합니다.)

README.md 작성

문서에 작성에 정답은 없다고 생각하여 여러 라이브러리들을 참고하면서 저만의 기준을 정해 작성하였습니다.

최종적으로 정한 목차는 다음과 같습니다.
1. Intro - 해당 라이브러리에 대한 간단한 설명과 배경 효과 등을 작성합니다.
2. Download - 라이브러리를 추가하는 방법에 대해 작성합니다.
3. How do I use Kref? - 라이브러리의 사용 방법을 실제 예시 코드와 함께 작성합니다.
4. Author - 라이브러리 작성자에 대한 간략한 정보들을 작성합니다.
5. License - 해당 라이브러리가 사용하는 오픈 소스 라이센스를 명시해줍니다.

작성된 README.md 파일은 Kref에서 확인 가능합니다.

다음

추후에는 본 라이브러리에서 발생할 수 있는 여러가지 예외 상황 혹은 사용시 주의사항 등을 같이 작성해볼 예정입니다.
자신만 쓰는게 아닌 타인도 쓸 수 있는 오픈 소스를 작성한만큼 여러 상황을 예측하고 사고를 방지하기 위해 라이브러리에 대한 테스트 코드 작성도 추가해볼 예정입니다.

profile
Junior Developer

0개의 댓글