この記事は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
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;
}
}loadUrlでassetsフォルダに格納したライセンスファイルを読み込みます。
今回は、ここまでです。
オープンソースライセンスを表示しているAndroidアプリです。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪
これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、JavaやC#などのオブジェクト指向言語が初めての方は、Androidのアプリ開発ができるようになるには、かなりの時間がかかります。
オンラインスクールでの習得を、強くおススメします。
未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

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

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


コメント欄