你好。我是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支持就基本完成了。
轻松实现却有精美设计
实际显示时的界面如下所示。

虽然是快速制作的,效果却出乎意料地好。内容上也没有问题。非常棒。
关于实际使用方法的更多细节
当然,实际操作时还有一些需要做的事情,在此说明一下。不过也只是引入库而已。修改build.gradle,在plugins和dependencies中添加aboutlibraries的配置。版本请按需指定。
plugins {
id ("com.mikepenz.aboutlibraries.plugin")
}
dependencies {
implementation ("com.mikepenz:aboutlibraries:10.10.0")
}
其他库
我个人没有使用过,但似乎还有很多其他用于显示OSS许可证的库。以下列举一些较为知名的:
- OSS Licenses Plugin - Google提供的Gradle插件,在应用构建过程中自动收集所使用的开源库的许可证信息,并生成用于显示这些信息的Activity。
- LicenseAdapter - 一个简单的Adapter,用于以列表形式显示开源库的许可证信息。
- LicensesDialog - 一个可以在应用内轻松创建对话框来显示开源库许可证信息的库。
这些库看起来都口碑不错,使用也很简单。选择适合自己用途的库,放心地推进应用开发吧。