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 - 一個可以在應用程式內輕鬆建立對話框來顯示開源函式庫授權資訊的函式庫。

這些函式庫看起來都口碑不錯,使用也很簡單。選擇適合自己用途的函式庫,放心地推進應用程式開發吧。