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を選んでください。
作成すると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のページを確認してみてください。
右下にあるAdd to JCenterを押して、次のページに遷移し申請してください。
コメントを適当に記載して、Sendを押してください。
数時間で反映されるそうです。(私も今申請中)
許可されて、JCenterに登録されると、
dependencies{
implementation 'com.neonankiti:bison:1.0.0'
}
ができるはず。
また報告します。
<追記> 2018/1/2
出来ました。
dependencies{
implementation 'YOUR_GROUP_ID:YOUR_ARTIFACT_ID:YOUR_PUBLISH_VERSION'
}
です。