Як писати інформацію про OSS

Як писати інформацію про OSS

Привіт. Я zm soft — зареєструвався як розробник минулого року (наприкінці 2023) і почав випускати застосунки. Також плануємо випустити застосунок для набору тестувальників для розробників, щоб пройти закрите тестування на Play Store, тому ознайомтеся, якщо цікаво.

Про інформацію 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, додавши специфікації aboutlibraries до plugins і dependencies. Вкажіть версію відповідно до потреб.

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

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

Інші бібліотеки

Я особисто ними не користувався, але схоже, що є багато інших бібліотек для відображення ліцензій OSS. Наведу деякі з найвідоміших:

  1. OSS Licenses Plugin - Gradle-плагін від Google, який автоматично збирає інформацію про ліцензії бібліотек з відкритим кодом, використовуваних під час процесу збирання застосунку, і генерує активність для їх відображення.
  2. LicenseAdapter - Простий Adapter для відображення у списку інформації про ліцензії бібліотек з відкритим кодом.
  3. LicensesDialog - Бібліотека, яка дозволяє легко створити діалог для відображення інформації про ліцензії бібліотек з відкритим кодом всередині застосунку.

Усі вони, здається, мають хорошу репутацію і прості у використанні. Використовуйте ту, що підходить для вашого застосунку, і впевнено продовжуйте розробку.