dely Tech Blog

クラシル・TRILLを運営するdely株式会社の開発ブログです

com.google.gms:oss-licenses でライセンス表記を実装してみた

どうも、Android担当の永井です。

TRILLでは、OSSのライセンス表記をHTMLに張り付けてWebViewに流し込むような運用をしていたけど、ライブラリ追加削除するたびにいちいち変更がめんどう!
とういうことで、Google謹製の com.google.gms:oss-licenses を導入してライセンス表記の編集作業とおさらばしました!

詳しい手順はこちら 
developers.google.comdevelopers.google.com
 
実作業はかんたん。
依存関係追加してActivityを呼び出すだけ。
あとは勝手にライセンス情報を取得してリスト表示してくれます。

・依存関係の追加
ルートレベルのbuild.gradleにoss-licensesプラグインを追加。

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.google.android.gms:oss-licenses-plugin:0.10.2'
}

 
・アプリレベルのbuild.gradleでプラグインを適用

apply plugin: 'com.google.gms.oss.licenses.plugin'

これで準備OK。
ビルドするとpomから依存するライブラリのライセンス情報を取得して一覧化してくれます。

あとは適当なところで画面を呼び出すだけ。
setActivityTitleでActionBarに表示するタイトルを変更できます。

    @OnClick(R.id.activity_information_title_license_tv)
    void onClickLicense() {
        startActivity(new Intent(this, OssLicensesMenuActivity.class));
        OssLicensesMenuActivity.setActivityTitle(getString(R.string.activity_setting_license_title));
    }


・画面のカスタマイズ
OssLicensesMenuActivity使うのであればできることはだいぶ少なくタイトル設定とテーマ変更くらいしかできなさそう。

マニフェストにテーマ指定して、

        <activity
            android:name="com.google.android.gms.oss.licenses.OssLicensesActivity"
            android:theme="@style/LicenseTheme" />
        <activity
            android:name="com.google.android.gms.oss.licenses.OssLicensesMenuActivity"
            android:theme="@style/LicenseTheme" />

テーマで指定すればOK。
ActionBarいらないならこれで。
自分はこれにしました。

    <style name="LicenseTheme" parent="Theme.AppCompat.Light">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:statusBarColor">@color/gray_medium_light</item>
        <item name="android:textSize">@dimen/font_size_tiny</item>
    </style>

つかうならたぶんこんな感じである程度デザイン揃えられそう。

    <style name="LicenseTheme" parent="Theme.AppCompat.Light">
        <item name="windowActionBar">true</item>
        <item name="windowNoTitle">false</item>
        <item name="actionBarStyle">@style/LicenseTheme.ActionBar</item>
        <item name="android:actionBarStyle">@style/LicenseTheme.ActionBar</item>
        <item name="android:statusBarColor">@color/gray_medium_light</item>
        <item name="android:textSize">@dimen/font_size_tiny</item>
    </style>

    <style name="LicenseTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar">
        <item name="background">@color/white</item>
        <item name="android:background">@color/white</item>
        <item name="titleTextStyle">@style/LicenseTheme.ActionBar.TextStyle</item>
        <item name="android:titleTextStyle">@style/LicenseTheme.ActionBar.TextStyle</item>
    </style>

    <style name="LicenseTheme.ActionBar.TextStyle" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textSize">@dimen/font_size_tiny</item>
    </style>
</resources>


もっと細かくデザイン合わせた画面作りたければ、
ライセンス情報自体は、app/build/generated/third_party_licenses/res/raw ディレクトリに、third_party_licenses、third_party_license_metadataとして出力されているので、これを読み取って表示すればいろいろできそうです!