1
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 3 years have passed since last update.

Kotlinで作ったライブラリをリリースする

Last updated at Posted at 2020-06-12

Androidアプリを作る際にAPIサーバーとの通信部分をモジュール化したいことはよくあると思います。このような場合にKotlinでクラスを作ってライブラリとして公開するためのチュートリアルです。なお筆者はAndroid初心者。

ここで作るライブラリはAndroidのパッケージではなくただのKotlinのクラスです。

準備

まずはターミナルから新しく作業ディレクトリを作成します。

mkdir -p my-project/src/main/java/com/asmsuechan/example
gradle -v

モジュールの作成はAndroid Studioからでも可能なのですが単体で作成することができないみたいなのでまずはターミナルから始めます。一度ビルドすればAndroidStudioでモジュールとしてimportすればIDEの恩恵が受けられます。

なおgradle -vが実行できなかった人は各自gradleをインストールしてください。

Exampleクラスの追加

src/main/java/com/asmsuechan/exampleにExample.ktを作成します。サンプルなのでprintするだけのシンプルなコードです。

class Example {
  fun bark () {
    print("Bow wow!")
  }
}

build.gradle.ktsの追加

プロジェクトルートにbuild.gradle.ktsを追加して以下を書きます。

import org.gradle.jvm.tasks.Jar
import com.jfrog.bintray.gradle.BintrayExtension

group = "com.asmsuechan"
version = "0.0.1"
val artifactID = "kotlin-gradle-bintray-example"
val publicationName = "default"

plugins {
  `maven-publish`
  kotlin("jvm") version "1.3.70"
  id("com.jfrog.bintray") version "1.8.5"
}

repositories {
  jcenter()
}

dependencies {
    implementation(kotlin("stdlib"))
}

val sourcesJar by tasks.registering(Jar::class) {
    classifier = "sources"
    from(sourceSets.main.get().allSource)
}

publishing {
  publications {
    create<MavenPublication>("default") {
      from(components["java"])
    }
  }

  publications.invoke {
    publicationName(MavenPublication::class) {
      artifactId = artifactID
      artifact(sourcesJar.get())
    }
  }
}

fun findProperty(s: String) = project.findProperty(s) as String?
bintray {
    user = findProperty("bintrayUser")
    key = findProperty("bintrayApiKey")
    publish = true
    setPublications(publicationName)
    pkg(delegateClosureOf<BintrayExtension.PackageConfig> {
        repo = "asmsuechan"
        name = "kotlin-gradle-bintray-example"
        userOrg = "asmsuechan"
        websiteUrl = "https://github.com/asmsuechan/kotlin-gradle-bintray-example"
        githubRepo = "asmsuechan/kotlin-gradle-bintray-example"
        vcsUrl = "https://github.com/asmsuechan/kotlin-gradle-bintray-example"
        description = ""
        setLabels("kotlin")
        setLicenses("MIT")
        desc = description
    })
}

pom.xmlの追加

プロジェクトルートにpom.xmlを追加します。

<project>
    <groupId>com.asmsuechan</groupId>
    <artifactId>kotlin-gradle-bintray-example</artifactId>
    <version>0.0.1</version>

    <packaging>jar</packaging>

    <name>kotlin-gradle-bintray-example</name>
    <url>https://github.com/asmsuechan/kotlin-gradle-bintray-example</url>
</project>

今の所フォルダ構成はこんな感じ。

$ tree
.
├── build.gradle.kts
├── pom.xml
└── src
    └── main
        └── java
            └── com
                └── asmsuechan
                    └── example
                        └── Example.kt

bintrayへの登録

bintrayというサービスを使って作成したライブラリを公開します。bintrayとは簡単に言うとJavaScriptのnpmみたいなサービスです。

登録はこちら(jCenterでライブラリを公開する方法)などを参考にしてやってみてください。

publishする

以下のコマンドを打ってbintrayにpublishします。API Keyはbintrayのマイページにあります。

gradle clean build bintrayUpload -PbintrayUser=YourNameHere -PbintrayApiKey=YourTokenHere -PdryRun=false

Publishしたら最初はAdd to jcenterボタンを押してjcenterにライブラリを登録する必要があります。

完成

適当なAndroidプロジェクトを作成してbuild.gradleのdependenciesにimplementationを書けば正しくライブラリが使えるようになるはずです。

dependencies {
    ....(中略)
    implementation 'com.asmsuechan:kotlin-gradle-bintray-example:0.0.1'
}

参考

1
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
1
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?