StickyListHeaders風のライブラリを自作する-5 - 日々是好日の続き。
Bintray で Android のライブラリを公開するまでやってみた。 Kotlin ライブラリなのでだいぶはまってしまいました……。
Bintray 側の準備
こちらの Qiita 記事に丸投げ(ぇ
Bintray にて maven リポジトリとパッケージの作成、API Key の確認をしておきます。
API Key は後で .gradle/gradle.properties にメモします。
Gradle の設定
Android Studio にて、ライブラリのプロジェクトの gradle ファイルを編集していきます。
API Key の保存
~/.gradle/gradle.propertiesを生成し、次の情報を定義しておきます。
bintray_user=user_id bintray_key=API Key
プラグインの追加
Gradle から Bitray に aar ファイルをアップするため、次のプラグインを追加します。
GitHub - Kotlin/dokka: Documentation Engine for Kotlin
プロジェクトレベルのbuild.gradleを開き、次の記述を追加します。
buildscript {
ext.kotlin_version = '1.3.40'
/*追加*/
ext.dokka_version = '0.9.18'
repositories {...}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
/*追加*/
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:${dokka_version}"
}
}
ライブラリの追加
モジュールレベルのbuild.gradleに次のライブラリと、次節で生成するdeploy.gradleを追加します。
dependencies {
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
apply from: 'deploy.gradle'
もともとは kotlin-stdlib-jre7 だったみたいですが、今は jdk7 に置き換わってるみたいですね。
デプロイ用の gradle ファイルの生成
deploy.gradle はデプロイ用のスクリプトをまとめた gradle ファイルです。
モジュールレベルのbuild.gradleと同じ階層に置いておきましょう。
中身の全記述は次のとおりです。
2019.8.15 追記
javadoc の生成(task javadocJar)を追加
apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' apply plugin: 'org.jetbrains.dokka-android' ext { groupId = 'work.kcpoipoi' artifactId = 'pinninglistview' libVersion = '0.0.1' } dokka { outputFormat = 'html' outputDirectory = "$buildDir/javadoc" } group = groupId version = libVersion def siteUrl = "https://github.com/Hide-KC/PinningListView" def gitUrl = "https://github.com/Hide-KC/PinningListView.git" def loadProperties(filename) { def props = new Properties() file(filename).withInputStream { props.load(it) } return props } bintray { def props = loadProperties("$gradle.gradleUserHomeDir/gradle.properties") user = props.bintray_user key = props.bintray_key configurations = ['archives'] //When uploading configuration files pkg { repo = 'maven' name = "PinningListView" desc = 'Custom RecyclerView that draws a header that represents a break.' publish = true override = true websiteUrl = siteUrl issueTrackerUrl = 'https://github.com/Hide-KC/PinningListView/issues' vcsUrl = gitUrl licenses = ['MIT'] labels = ['aar', 'android', 'custom view', 'recycler view'] publicDownloadNumbers = true version { name = libVersion } } } install { repositories.mavenInstaller { pom.project { packaging 'aar' groupId group artifactId artifactId name artifactId version version url siteUrl licenses { license { name 'MIT License.' url 'https://opensource.org/licenses/mit-license.php' } } developers { developer { id 'kcpoipoi' name 'KC' email 'kcs.dev.labo@gmail.com' } } scm { connection siteUrl developerConnection siteUrl url siteUrl } } } } task sourcesJar(type: Jar) doLast { classifier = 'sources' from android.sourceSets.main.java.srcDirs } //2019.8.15 追加 task javadocJar(type: Jar, dependsOn: dokka) { } artifacts { archives sourcesJar //2019.8.15 追加 archives javadocJar }
正直なところ、各種ブロックの意味や Groovy の文法全然わかってませんが……動いたから( ΦωΦ)σヨシッ!
2019.8.15 追記
dokka で生成した javadoc は下記のディレクトリに保存されるようです。
AndroidStudioProjects\StickyListViewLibrary\pinninglistview\build\javadoc\pinninglistview\work.kcs_labo.pinninglistview
.gradle/gradle.properties の参照は loadProperties("$gradle.gradleUserHomeDir/gradle.properties") で行っています。
Gradle で定義されている定数は次のエントリを参照。
また、後ほど JCenter にリンクさせる際 jar ファイルを要求されるので、 soucesJar で生成しています。
Bintray にデプロイ
上記が準備できたら、あとはターミナルで gradlew bintrayUpload を叩くだけ。
BUILD SUCCESSFUL と表示されるようにお祈りします。
無事にデプロイできれば、次のようにして使用することが可能です。
プロジェクトレベル build.gradle
allprojects {
repositories {
...
maven {
url "https://dl.bintray.com/hide-kc/maven"
}
}
}
モジュールレベル build.gradle
dependencies {
implementation 'work.kcpoipoi:pinninglistview:0.0.1'
}
これで一応使えるようにはなっているのですが、url を表記しているあたり明らかに思ってたんと違います。 仕上げに JCenter への登録申請を行いましょう。
Add to JCenter
Bintray にログインし、パッケージのページを開きます。 右下に「Linked to」というセクションがあり、そこに「Add to JCenter」というボタンがあると思います。
チェックボックスや groupId を入力(私はwork.kcpoipoi.pinninglistviewと入力)し申請すれば、通常ならものの数時間で許可が下ります。
もし不許可だった場合はアドバイスメッセージがアカウントに飛んでくるので、粛々と従いましょう。
ちなみに私は jar ファイルが無かったので一度弾かれました。
JCenter のリポジトリに表示されるようになるにはもうちょっとかかるようで、私の場合翌日くらいに確認したら検索結果に表示されるようになっていました。
ライブラリの使用
承認後、次のようにモジュールレベルに依存関係を指定するだけで OK となります。
プロジェクトレベル build.gradle
allprojects {
repositories {
jcenter()
}
}
モジュールレベル build.gradle
dependencies {
implementation 'work.kcpoipoi:pinninglistview:0.0.1'
}
所感
とてもつらかった。
あと dokka が完全に飾りです(マテ
2019.8.15 dokka で javadoc の生成追加しました。