4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

株式会社ピー・アール・オーのアドベントカレンダー5日目です。

前回はiOS用のフレームワークをCocoaPodsに公開する手順を書きました、今回はAndroid用ライブラリをmavenに公開してみます。

今回はGitHubのpackages機能を利用してライブラリをリリースします。

事前準備

  • Android Studioをインストールする
  • GitHub上にAndroidライブラリ用のリポジトリを用意する

maven-publishプラグインを有効する

今回はAndroid Studioが提供するMaven Publish Pluginを利用してライブラリをリリースします。まずはライブラリモジュールのbuild.gradleにmaven-publishを有効します。

plugins {
    id 'maven-publish'
}

リリースするライブラリの情報を定義する

次は、同じライブラリモジュールのbuild.gradleに下記のリリースするライブラリの情報を追加します。
下記のコードはBuild Variantがrelease時のAARライブラリを作ってリリースします。

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.lxlgarnett.colorpicker'
                artifactId = 'color-picker'
                version = '1.0.0'
        }
    }
}

groupId: ユニークなID、今回はライブラリのパッケージ名を利用する
artifactId: 公開するライブラリ名
version: 公開するライブラリのバージョン

GitHubのmavenリポジトリを追加する

リリース情報を追加したら、次は公開するmavenリポジトリの定義を追加します。
afterEvaluateのpublishingに下記のコードを追加します。

repositories {
    maven {
        name = 'GitHubPackages'

        url = uri("https://maven.pkg.github.com/lxlgarnett/color-picker-android")
    }
}

GitHub用アクセストークンを発行する

GitHubトークン画面にアクセスし、新しいトークンを生成します。
発行したトークンに必ずwrite:packagesにチェックを入れてください。
Screen Shot 2021-12-05 at 17.48.15.png

GitHub認証情報を追加

次は発行したトークン情報をbuild.gradleに追加します。

credentials {
    username = [You GitHub Username]
    password = [Generated GitHub Token]
}

※ セキュリティのため、発行したトークン情報はGitHubにコミットしちゃいけないため、ローカルの.propertiesに保存したほうが良いです。

完成版のコード

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.lxlgarnett.colorpicker'
                artifactId = 'color-picker'
                version = '1.0.0'
            }
        }

        repositories {
            maven {
                name = 'GitHubPackages'

                url = uri("https://maven.pkg.github.com/lxlgarnett/color-picker-android")

                credentials {
                    username = [Your GitHub Username]
                    password = [Generated GitHub Token]
                }
            }
        }
    }
}

ライブラリを公開する

最後はプロジェクトをsyncし、下記のコマンドでライブラリを公開します。

./gradlew publish

公開したライブラリを使ってみる

それでは、実際公開したライブラリはどう使うでしょう?

mavenリポジトリ情報を追加する

まずは利用するプロジェクト側のプロジェクト用のbuild.gradleにGitHubのmavenリポジトリ情報を追加します。

allprojects {
    repositories {
        google()
        mavenCentral()
        maven {
            name = 'ColorPickerGitHubPackages'
            url = uri('https://maven.pkg.github.com/lxlgarnett/color-picker-android')
            credentials {
                username [Your GitHub Username]
                password [Your GitHub Token]
            }
        }
    }
}

※ GitHubのmavenリポジトリはPublicなリポジトリでも、認証情報が必要となります。

Dependency情報を追記する

次はアプリモジュール側のbuild.gradleにライブラリのDependency情報を追加します。追加が終わった後、プロジェクトをsyncし、ビルドすればOKです。

implementation 'com.lxlgarnett.colorpicker:color-picker:1.0.0'

参考サイト

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?