Androidライブラリ (AAR) をGitHub Packagesで公開する
自作したAndroidライブラリ (AAR) をGitHub PackagesのMavenリポジトリで公開する方法です。
正直、JitPackで公開したほうが簡単かつシンプルなので、JitPackのほうがおすすめです。
サンプルプロジェクトはこちら
(1) Androidライブラリを作成しGitHubにプッシュする
こちらの説明は他の記事に任せるとして、割愛する。
(2) GitHubのPersonal access tokensを取得する
- GitHubのトップページにアクセスし、自分のアイコンをクリックしてメニューを表示し、Settingsをクリックする。
- Developer settingsをクリックする。
- Personal access tokensをクリックする。
- Generate new tokenをクリックする。
- Noteに識別しやすい名前、Expirationに任意のトークン有効期間を入力し、write:packagesとdelete:packagesにチェックを入れる(関連するパーミッションに自動でグレーのチェックが入る)。
- Generate tokenをクリックする。
- トークンが表示されるので、控えておく。この画面でしかトークンを確認できないので注意。 トークンの例:
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
(3) local.propertiesにGitHubの認証情報を追加する
...
# GitHub Packages
com.github.user=otsuka-kohei
com.github.token=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
com.github.user
には自分のGitHubユーザ名、com.github.token
には手順(2)で取得したPersonal access tokensを指定する。この情報は秘密情報なので.gitingoreにlocal.propertiesが含まれていることを確認する。
(4) Androidライブラリプロジェクトのbuild.gradleを編集する
Androidライブラリプロジェクトにサンプルアプリなどの別モジュールが含まれている場合は、ルートのbuild.gradleに加えて、ライブラリモジュールのbuild.gradleがある。その場合は、ライブラリモジュールのbuild.gradleを編集する。
- Maven Publishプラグインを追加する。
plugins {
...
id 'maven-publish'
}
- バージョン名を保持するプロパティを追加する。
ext {
...
versionName = "0.4"
}
3.コンポーネントの設定をする。
android {
...
publishing {
singleVariant('release') {
withSourcesJar()
}
}
}
これを次の手順で参照することで、公開するPOMにAndroidライブラリが依存する外部モジュールが追加され、Androidライブラリを利用するモジュール側で推移的に依存関係を解決できるようになる。
- Maven Publishプラグインの設定をする。
publishing {
repositories {
maven {
name = "GitHubPackages"
url = 'https://maven.pkg.github.com/otsuka-kohei/rhinoroid'
credentials {
def localProperties = new Properties()
localProperties.load(project.rootProject.file('local.properties').newDataInputStream())
username = localProperties.containsKey("com.github.user") ? localProperties.getProperty('com.github.user') : ''
password = localProperties.containsKey("com.github.token") ? localProperties.getProperty('com.github.token') : ''
}
}
}
publications {
GitHubPackages(MavenPublication) {
groupId "com.github.otsuka_kohei"
artifactId "rhinoroid"
version versionName
afterEvaluate {
from components.release
}
pom {
url = 'https://github.com/otsuka-kohei/rhinoroid'
licenses {
license {
name = 'Apache License Version 2.0'
}
}
}
}
}
}
publishing.repositories.maven.url
はhttps://maven.pkg.github.com/<GitHubユーザ名>/<GitHubリポジトリ名>
となる。
publishing.publications.GitHubPackages.groupId
にはAndroidライブラリのパッケージ名、publishing.publications.GitHubPackages.artifactId
にはリポジトリ名を指定する。この例ではGradleでこのAndroidライブラリへの依存関係を追加するときにimplementation 'com.github.otsuka_kohei:rhinoroid:0.4'
と指定することになる。
publishing.publications.GitHubPackages.pom.url
にはGitHubリポジトリのURLを指定する。
publishing.publications.GitHubPackages.pom.licenses.license.name
には任意のライセンス名指定する。
publishing.publications.GitHubPackages.version
には手順(4)-2で追加したプロパティを参照するようになっている。
publishing.publications.GitHubPackages.afterEvaluate.from
には手順(4)-3で追加したコンポーネントを参照するようになっている。
(4) GitHub Packagesに公開する
./gradlew assembleRelease publish
を実行してGitHub Packagesに公開する。
GitHub Packagesに公開されるとこのように表示される。
Discussion