Androidアプリ開発

アプリにオープンソースライセンスを表示

この記事は約10分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これからAndroidのアプリ開発やJavaでの開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


アプリでオープンソースライセンスの表示を実装する

オープンソースライセンスの表示

ポイント

アプリ開発のオープンソースライセンス管理をgradleプラグインを使って自動化する方法を紹介します。
license-tools-plugin(クックパッド社)はAndroid Studioのプロジェクトで使用しているオープンソースのライセンス情報をHTMLで出力します。
アプリは出力したHTMLを使用して、ライセンス情報を表示します。

cookpad/LicenseToolsPlugin

ライセンスファイルの作成

license-tools-pluginを使用して、Android Studioのプロジェクトで使用しているオープンソースのライセンスファイル(HTML)を作成します。

プラグインの導入

build.gradle(Project)にプラグインの使用を追記します。

build.gradle(Project)

plugins {
    id("com.cookpad.android.plugin.license-tools") version "1.2.8"
}

2025年11月現在でlicense-tools-pluginの最新バージョンは1.2.8です。
gradleの対応バージョンがあります。
gradle-8.14.3で動作することを確認しました。

JAVA_HOME設定

環境変数(JAVA_HOME)にAndroid Studioで配布される拡張JDK(jbr)を設定します。

C:\Program Files\Android\Android Studio\jbr

環境編集の設定後、Android Studioを再起動する必要があります。

yamlファイルの作成

Android Studioでターミナルを開き、yamlファイルの作成コマンドを実行します。

> ./gradlew updateLicenses

プロジェクト直下にlicenses.ymlが出力されます。
テキストエディタで出力ファイルを編集します。 コピーライトとライセンスを調べて変更します。

編集前

artifact: com.github.PhilJay:MPAndroidChart:+
name: MPAndroidChart
copyrightHolder: #COPYRIGHT_HOLDER#
license: #LICENSE#

編集後

artifact: com.github.PhilJay:MPAndroidChart:+
name: MPAndroidChart
copyrightHolder: 2020 Philipp Jahoda
license: The Apache Software License, Version 2.0

編集後(除外する場合)

artifact: com.github.PhilJay:MPAndroidChart:+
name: MPAndroidChart
skip: true
copyrightHolder: #COPYRIGHT_HOLDER#
license: #LICENSE#

yamlファイルのチェック

yamlファイルのチェックコマンドを実行します。
エラーがある場合は、licenses.ymlを修正します。

> ./gradlew checkLicenses

ライセンスファイルの作成

generateLicensePageでyamlファイルからライセンスファイル(licenses.html)を作成します。
プロジェクトフォルダ\src\main\assetsに出力されます。

> ./gradlew generateLicensePage

JAVA_HOME設定(元に戻す)

環境変数(JAVA_HOME)を元の設定に戻します。

ライセンスの表示

作成したライセンスファイルをassetsフォルダに格納、WebViewで表示します。

ライセンスファイルの格納

作成したライセンスファイルをassetsフォルダ(プロジェクトフォルダ\app\src\main\assets)に格納します。
ライセンスのURLが改行されますのでライセンスファイルにスタイルを追記します。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <style>
    :
    a {
    overflow-wrap: break-word;
    }
  </style>
</head>
<body>
:
ライセンスファイル表示

ライセンスファイルの表示はWebViewを使用します。

fragment_html.xml

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:ignore="VisualLintBounds">
    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        app:cardCornerRadius="8dp"
        app:cardElevation="0dp">
        <WebView
            android:id="@+id/viewer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/transparent"/>
    </androidx.cardview.widget.CardView>
</FrameLayout>

CardViewを使用して、WebViewを角丸で表示します。

HtmlFragment

public class HtmlFragment extends Fragment {
    public HtmlFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        :  
    }

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_html, container, false);
        WebView webView = view.findViewById(R.id.viewer);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(false);
        webSettings.setSupportMultipleWindows(false);
        webView.loadUrl("file:///android_asset/licenses.html");
        return view;
    }
}

loadUrlassetsフォルダに格納したライセンスファイルを読み込みます。

今回は、ここまでです。

オープンソースライセンスを表示しているAndroidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちらから、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、JavaやC#などのオブジェクト指向言語が初めての方は、Androidのアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
シェアする
msakiをフォローする
スポンサーリンク

コメント欄

タイトルとURLをコピーしました