🐻‍❄️

Jetpack Compose と LicenseToolsPlugin を組み合わせてライセンス画面を作る

2021/11/13に公開

はじめに

Jetpack Compose と LicenseToolsPlugin を組み合わせてライセンス画面を作ってみる。

LicenseToolsPlugin を使えるようにする

LicenseToolsPlugin とはクックパッド社が作成するライブラリ管理プラグインになります。

以下のように build.gralde の plugins に LicenseToolsPlugin を追加することで使えるようになります。

(プラグインの導入方法は LicenseToolsPlugin のページに記載がありますのでそちらを参照してください)

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id "com.cookpad.android.plugin.license-tools" version "1.2.8"
}

LicenseToolsPlugin で yml ファイルを生成する

LicenseToolsPlugin では yml ファイルにてライブラリ情報を管理する仕組みになっています。

yml ファイルですが LicenseToolsPlugin の updateLicenses コマンドを実行することで作成できます。

./gradlew updateLicenses

yml ファイルで未入力の情報を記入していく

生成された yml ファイルの一部の情報が未入力になっています。

(今回の場合は #COPYRIGHT HOLDER# が未入力の情報になります)

- artifact: androidx.activity:activity-compose:+
  name: activity-compose
  copyrightHolder: #COPYRIGHT HOLDER#
  license: The Apache Software License, Version 2.0
  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
  url: https://developer.android.com/jetpack/androidx/releases/activity#1.3.0

未入力の項目がある場合 html ファイルの出力に失敗するので未入力となっている情報を手作業で記入していきます。(今回の場合は TEST というテキストを適当に入れていますが本来であれば適切な情報をライブラリごとに設定する必要がありますので注意してください)

- artifact: androidx.activity:activity-compose:+
  name: activity-compose
  copyrightHolder: TEST TEST TEST
  license: The Apache Software License, Version 2.0
  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
  url: https://developer.android.com/jetpack/androidx/releases/activity#1.3.0

yml ファイルから html ファイルを生成する

LicenseToolsPlugin では yml ファイルから html ファイルを生成できるようになっています。

html ファイルは LicenseToolsPlugiin の generateLicensePage コマンドを実行することで作成できます。

./gradlew generateLicensePage

ちなみに html ファイルはプロジェクトの app フォルダに licenses.html という名称で作成されます。

dir.png

生成した html ファイルを WebView で表示する

あとは AndroidView で WebView を生成して、作成した html ファイルを読み込むだけです。

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            AndroidView(factory = ::WebView, modifier = Modifier.fillMaxSize()) { webView ->
                with(webView) {
                    loadUrl("file:///android_asset/licenses.html")
                }
            }
        }
    }
}

おわりに

起動してみると以下のようにライブラリ画面が表示できます。というように Jetpack Compose を利用する場合でも LicenseToolsPlugin を使えばライブラリ画面を簡単に実装できます。

license.png

Discussion