OSS信息的写法

OSS信息的写法

你好。我是zm soft,去年(2023年底)注册为开发者并开始发布应用。我们还计划发布一款面向开发者的测试人员招募应用,以通过Play商店的封闭测试,欢迎有兴趣的朋友查看。

关于容易被忽视的OSS信息

大家在开发应用时有没有写OSS信息呢?在开发应用时,许多开发者会注意填写隐私政策,但往往忽视开源软件(OSS)的相关信息。然而,根据所使用的OSS不同,显示其许可证信息可能在法律上是必须的。

特别是,由于隐私政策在Google Play的审核中经常被提及,大多数开发者都会注意这一点。而OSS许可证信息在类似审核中却很少被提及,因此不少开发者并未遵守。实际上,我自己作为测试人员使用应用时,也经常看到没有OSS信息的应用。

OSS显示对应的难点

在为自己的应用添加OSS支持时,我在应用内创建了一个文本显示视图,与隐私政策一起显示OSS信息。我采用的方式是在特定文件夹中为每个OSS放置文本文件,从而让这些信息自动显示在视图中。实际实现如下:将文本放在_assets/oss_文件夹中,读取即可,然后在合适的View中显示就完成了。

        fun readLicenseTexts(): Map<String,String>{
            var map : MutableMap <String,String> = mutableMapOf()
            val fileList = assetManager.list("oss")
            if (fileList != null) {
                for (file in fileList) {
                    map.put(file.replace(".txt",""), readTextAssets("oss/$file"))
                }
            }
            return map
        }

然而,随着开发的推进,这种方式的维护越来越困难。添加OSS往往会被推迟,在开发多个应用时,也可能会忘记更新OSS信息。

OSS支持的救星

繁琐的事情,我希望能交给别人来做。于是我决定用一个库来实现显示功能。目前看来没有问题,事情变得轻松多了。说实话,真希望能早点用上。我使用的库是**AboutLibraries**。

使用方法非常简单。实现部分基本上只有以下内容:

        val fragment = LibsBuilder()
            .supportFragment()
        val transaction = activity.supportFragmentManager.beginTransaction()
        transaction.add(R.id.libsFragment, fragment)
        transaction.commit()

由于在Fragment中即可完成,只需找个合适的地方显示,OSS支持就基本完成了。

轻松实现却有精美设计

实际显示时的界面如下所示。

アプリ内に表示された OSS ライブラリ情報画面

虽然是快速制作的,效果却出乎意料地好。内容上也没有问题。非常棒。

关于实际使用方法的更多细节

当然,实际操作时还有一些需要做的事情,在此说明一下。不过也只是引入库而已。修改build.gradle,在plugins和dependencies中添加aboutlibraries的配置。版本请按需指定。

plugins {
    id ("com.mikepenz.aboutlibraries.plugin")
}

dependencies {
    implementation ("com.mikepenz:aboutlibraries:10.10.0")
}

其他库

我个人没有使用过,但似乎还有很多其他用于显示OSS许可证的库。以下列举一些较为知名的:

  1. OSS Licenses Plugin - Google提供的Gradle插件,在应用构建过程中自动收集所使用的开源库的许可证信息,并生成用于显示这些信息的Activity。
  2. LicenseAdapter - 一个简单的Adapter,用于以列表形式显示开源库的许可证信息。
  3. LicensesDialog - 一个可以在应用内轻松创建对话框来显示开源库许可证信息的库。

这些库看起来都口碑不错,使用也很简单。选择适合自己用途的库,放心地推进应用开发吧。