AndroidでOSSライセンス表示をするためのライブラリ比較
お仕事で必要になるかもなので、Androidアプリ開発の際にOSSのライセンス表示を助けてくれるライブラリ達を比較してみました。正直一長一短ですねー。
LicensesDialog
ソースコードもしくはxmlに対象となるライブラリの情報を列挙しておくとダイアログ形式で表示してくれる、というライブラリです。
表示対象となるライブラリを自動で洗い出してくれる機能はありません。
個人的に使い慣れていて、2016年にこのblogで紹介記事も書いています。
LicenseToolsPlugin
cookpad製のツール。アプリに組み込むんじゃなくてGradle pluginとして使います。
build.gradle に定義されている dependencies を走査して利用しているライブラリを洗い出す、というのがメイン機能。
ライブラリの情報は licenses.yml
というファイルで管理します。自動で取得できなかった情報を手動で追記することもできます。
そして、 licenses.yml
から表示用HTML(licenses.html
)やJSON(licenses.json
)を生成する機能もあります。
画面表示の機能はないので、生成されるHTMLやJSONを使って自前で画面表示ロジックを実装しましょう。WebViewにHTMLを読み込ませるのが一番シンプルなやり方ですね。
oss-licenses-plugin
Google謹製な上、ライブラリの洗い出しも画面表示もできます。最強じゃん!と思いきや、最小限の機能しかない上に全体的にちょっと微妙…
- build.gradle に定義されている dependencies を走査して利用しているライブラリを洗い出してくれるけど、手動でライブラリを追加できないっぽい
- 画面表示用のActivityが用意されているけど、見た目のカスタマイズができないっぽい
ごくごくシンプルなアプリだったらこの機能で十分なのかもしれないですが、見た目はさておき、手動で追加できないのは困ります。アイコンフォントとかWebViewで読み込ませるライブラリとか、gradleに定義されないライブラリが扱えないわけで…
以下の記事にあるように、一応力業で何とかする方法はあるみたいですが。
所感
チーム開発をしている場合は LicenseToolsPlugin を使って定期的にライセンス情報を更新するフローを整備したほうが抜け漏れがなくてよさそう。画面表示部分は一回作ってしまえばプロジェクト間で使いまわしできるでしょうし。
個人開発とか小規模開発だったらLicensesDialogで十分だと思います。ひとりで作っていればOSSの追加を見落とすことはないはず。
関連(するかもしれない)記事
おススメ