Androidで自作ライブラリ公開

Androidでライブラリ作成

Androidにおいて、自分のカスタムライブラリを作成する際に、必要な手順をまとめました。
Androidで公開ライブラリを作成する際には、JCenterとMavenCentralというリモートレポジトリサービスが一般的です。

今回は、JCenterを利用したので、その方法を備忘録に残しておきます。
手順は以下。

1. ライブラリ作成
2. Bintrayにアカウント登録
3. ファイルをアップロード

以上です。
一度試すと簡単なので、ちょっとだけ詰まるところをメインで。

ゴール

まずは、ゴールを確認します。
普段色々なGiantsたちのライブラリを使う側としては、build.gradleに簡単に書きたいですね。
このような形で書くことをゴールにします。

dependencies{
    implementation 'com.neonankiti:bison:1.0.0'
}

ライブラリ作成

自分が作りたいライブラリをまず作ってください。
Androidにおいては、IDEでmoduleだけ作成することが不可能なので、いつもの手順でアプリをまず作ります。
File -> New -> New Module

上記で以下のように表示されるので、Android Libraryを選んでください。

f:id:nanriyuki:20171231183359p:plain

作成するとprojectに新しいLibraryが出来ます。

Bintrayにアカウント登録

Bintray - Download Center Automation & Distribution w. Private Repositories
上記BintrayでSign upしてください。Githubアカウントで連携できます。
自作ライブラリのアップロードには、以下のpluginを利用します。
GitHub - novoda/bintray-release: A helper for releasing from gradle up to bintray

build.gradleに依存性を記載し、gradleタスクでアップロードします。
その際にアカウント情報(ユーザー名、APIキー)が必要になります。

BintrayのAPIキーはTop -> Profile -> Edit -> API Keyというところにあります。
最終的な使い方は次に書きます。

ファイルをアップロード

登録とライブラリ作成が終われば、アップロードするための仕組みを構築しましょう。
まずは、project rootのbuild.gradleに以下のように書きます。

buildscript {
    dependencies {
        // バージョンは上記githubを確認してください。 
        classpath 'com.novoda:bintray-release:0.8.0'
    }
}

次は作成したライブラリ側のbuild.gradleに以下を書きます。

apply plugin: 'com.novoda.bintray-release'

publish {
    userOrg = 'neonankiti'
    groupId = 'com.neonankiti'
    artifactId = 'bison'
    publishVersion = '1.0.0'
    desc = 'to support bisons that were almosts extincted'
    website = 'https://github.com/neonankiti/bison'
}

上記を記載した後にgradleタスクを実行するのですが、その前に上記のプロパティを少しだけ。

userOrgはbintaryで登録しているのであれば、それを記載しましょう。

groupIdには、ドメインを記載してください。com.company的なものです。

artifactIdはプロジェクト名を記載してください。ライブラリの名前でいいと思います。

publishVersionは当たり前ですが、バージョン名です。

websiteは何でもいいですが、githubで管理することが多いと思います。

注意: repoNameは設定しなくてもいいです。デフォルトでmavenがセットされます。
その代わり自分でセットしない場合は、Bintrayのサイト上で、mavenというレポジトリを自身で作成してください。
(自分でセットしてもBintaryのサイト上では必要ですが笑)

その他のConfigurationは以下をみてください。
Configuration of the publish closure · novoda/bintray-release Wiki · GitHub


ここまで出来ればあとは仕上げです。
GradleコマンドでBintrayにライブラリをアップロードしてあげましょう。

 ./gradlew clean build bintrayUpload -PbintrayUser=YOUR_USER_NAME -PbintrayKey=YOUR_API_KEY -PdryRun=false

ただ、kotlinを利用していると、Javadocのタスク(AndroidJavadocs)で以下のエラーが発生します。

javadoc: エラー - パッケージ名 "ファイル名.kt" は不正です

JavadocタスクがKotlinファイルを処理しようとして失敗している?ようです。


以下のように、javadocタスクからKotlinファイルを取り除くタスクをgradleに追加しましょう。(project rootのbuild.gradle)

allprojects {
    tasks.withType(Javadoc) {
        excludes = ['**/*.kt'] 
    }
}

上記でアップロードが成功するはずです。
アップロードが完了すれば、Bintrayのページを確認してみてください。

f:id:nanriyuki:20171231193054p:plain

右下にあるAdd to JCenterを押して、次のページに遷移し申請してください。

f:id:nanriyuki:20171231193145p:plain

コメントを適当に記載して、Sendを押してください。

数時間で反映されるそうです。(私も今申請中)
許可されて、JCenterに登録されると、

dependencies{
    implementation 'com.neonankiti:bison:1.0.0'
}

ができるはず。
また報告します。

<追記> 2018/1/2

出来ました。

dependencies{
    implementation 'YOUR_GROUP_ID:YOUR_ARTIFACT_ID:YOUR_PUBLISH_VERSION'
}

です。