5
5

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 1 year has passed since last update.

oss-licenses-pluginがOSSをリストアップする仕組み

Posted at

はじめに

OSS Licenses Gradle Pluginは、ビルド時にOSSリストを作成ます。そのリストをもとにOssLicensesMenuActivityでライセンス表示できます。

これまではcookpadさんのLicenseToolsPluginを使わせてもらっていたのですが、deprecatedということで代わりにお勧めされたGoogleのOSS Licenses Gradle Pluginを使おうとしました。ところが使ってみるとSTLやらICU4CなどのOSSがリストアップされて、どういうこと?となったのでソースコードを調べて確認しました。

仕組み

ビルドを開始すると、OSS Licenses Gradle Pluginは初めにGradleでdependenciesのリストを作成します。以下のコマンドで出力されるやつと同じです。

gradlew -q :app:dependencies --configuration releaseCompileClasspath

作成されたファイルはapp/build/generated/third_party_licenses/[Build variant]/dependencies.json に出力されます。

POMファイルやAARファイルからライブラリのライセンスを取得します。例えばplay-services-tasksの場合はここにファイルがあります。

POMファイルにライセンスの種類とライセンスファイルへのリンクがあるので、まずそれをOSSリストに追加します。

dependencies.jsonに書かれているgroup名がcom.google.android.gmsかcom.google.firebaseで始まる場合、aarファイルの中に含まれるthird_party_license.json/third_party_license.txtに使用しているサードパーティのライセンスが書かれているので、それをリストアップします。

そんな感じでリストアップされたファイルがapp/build/generated/third_party_licenses/[Build variant]/res/raw のファイルです。

小ネタ

play-services-tasksのthird_party_licenseにはSGI STLが含まれていて、これがGPLなのでちょっと気になったのですが、

SGI STL

The STL portion of GNU libstdc++ that is used with gcc3 and gcc4 is licensed
under the GPL, with the following exception:

# As a special exception, you may use this file as part of a free software
# library without restriction.  Specifically, if other files instantiate
# templates or use macros or inline functions from this file, or you compile
# this file and link it with other files to produce an executable, this
# file does not by itself cause the resulting executable to be covered by
# the GNU General Public License.  This exception does not however
# invalidate any other reasons why the executable file might be covered by
# the GNU General Public License.

と書かれており、コンパイルして使う分には無制限に利用できるようです。

5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?