Bao gồm thông báo nguồn mở

Đôi khi, SDK Dịch vụ Google Play có chứa hoặc phụ thuộc vào các thư viện nguồn mở. Để tuân thủ các yêu cầu về giấy phép của thư viện nguồn mở, bạn (nhà phát triển) có trách nhiệm hiển thị thông báo một cách thích hợp cho các thư viện nguồn mở mà ứng dụng của bạn sử dụng.

Dịch vụ Google Play bao gồm một bộ công cụ được thiết kế để giúp nhà phát triển dễ dàng thể hiện thông báo về phần mềm nguồn mở (OSS) của các thư viện được dùng trong ứng dụng của họ. oss-licenses-plugin và SDK giấy phép nguồn mở của Dịch vụ Google Play thu thập các điều khoản cấp phép từ các thư viện đi kèm (như được khai báo trong tệp POM của các thư viện này) và tạo một hoạt động có thể dùng để hiển thị các điều khoản này. Tìm hiểu thêm về cách công cụ tìm và đóng gói thông tin về giấy phép.

Thêm trình bổ trợ Gradle

Trong pluginManagement của phần cài đặt dự án, hãy làm như sau:

  1. Thêm kho lưu trữ Google Maven.
  2. Giải quyết trình bổ trợ oss-licenses trong PluginManagement.

Đoạn mã sau đây minh hoạ các bước này:

Kotlin DSL

settings.gradle.kts

pluginManagement {
  repositories {
    ...
    google()
  }
  resolutionStrategy {
    eachPlugin {
      if (requested.id.id == "com.google.android.gms.oss-licenses-plugin") {
        useModule("com.google.android.gms:oss-licenses-plugin:0.10.6")
      }
    }
  }
}

Groovy DSL

build.gradle

pluginManagement {
  repositories {
    ...
    google()
  }
  resolutionStrategy {
    eachPlugin {
      if (requested.id.id == "com.google.android.gms.oss-licenses-plugin") {
        useModule("com.google.android.gms:oss-licenses-plugin:0.10.6")
      }
    }
  }
}

Trong tệp bản dựng cấp ứng dụng, hãy áp dụng trình bổ trợ bằng cách thêm dòng sau đây bên dưới phần khai báo hiện có của trình bổ trợ com.android.application ở đầu tệp:

Kotlin DSL

app/build.gradle.kts

plugins {
    id("com.android.application")
    id("com.google.android.gms.oss-licenses-plugin")
}

Groovy DSL

app/build.gradle

plugins {
    id 'com.android.application'
    id 'com.google.android.gms.oss-licenses-plugin'
}

Bạn có thể xem mã cho trình bổ trợ này trên GitHub.

Thêm thư viện play-services-oss-licenses vào ứng dụng của bạn

Trong mục dependencies của tệp bản dựng cấp ứng dụng, hãy thêm phần phụ thuộc vào thư viện play-services-oss-licenses:

Kotlin DSL

build.gradle.kts

implementation("com.google.android.gms:play-services-oss-licenses:17.2.2")

Groovy DSL

build.gradle

implementation 'com.google.android.gms:play-services-oss-licenses:17.2.2'

Hiển thị thông tin về giấy phép

Khi ứng dụng của bạn tạo, trình bổ trợ Gradle sẽ xử lý các giấy phép và thêm chúng vào tài nguyên của ứng dụng. Để dễ dàng hiển thị giấy phép, bạn có thể chạy một hoạt động do thư viện play-services-oss-licenses cung cấp tại một thời điểm thích hợp trong ứng dụng của mình, như minh hoạ trong đoạn mã sau:

Kotlin

import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
...

// When the user selects an option to see the licenses:
startActivity(Intent(this, OssLicensesMenuActivity::class.java))

Java

import com.google.android.gms.oss.licenses.OssLicensesMenuActivity;
...

// When the user selects an option to see the licenses:
startActivity(new Intent(this, OssLicensesMenuActivity.class));

Khi được khởi chạy, hoạt động này sẽ hiển thị danh sách các thư viện nguồn mở được biên dịch vào ứng dụng của bạn, bao gồm cả các thư viện mà ứng dụng sử dụng, như minh hoạ trong hình 1. Người dùng có thể nhấn vào tên của một thư viện để xem thông tin bổ sung về giấy phép của thư viện đó.

Chế độ xem danh sách với mỗi phần tử chứa tên của một thư viện nguồn mở

Hình 1. Hoạt động trình đơn giấy phép cho thấy một danh sách có thể chọn gồm các thư viện nguồn mở mà một ứng dụng sử dụng.

Đặt tiêu đề cho hoạt động

Theo mặc định, hoạt động được hiển thị có tiêu đề "Giấy phép nguồn mở". Bạn có thể tuỳ chỉnh tiêu đề của hoạt động bằng cách gọi setActivityTitle(), như minh hoạ trong đoạn mã sau:

Kotlin

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))

Java

OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));

Áp dụng một giao diện cho hoạt động

Bạn có thể áp dụng một giao diện cho hoạt động để giao diện này khớp với giao diện được dùng trong các hoạt động khác của ứng dụng. Để làm như vậy, hãy thêm hoạt động cấp phép nguồn mở vào một phần tử <activity> trong tệp kê khai của ứng dụng, như minh hoạ trong đoạn mã sau:

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

Cách xác định danh sách giấy phép

Tại thời điểm biên dịch, trình bổ trợ Gradle sẽ quét các phần phụ thuộc POM của dự án ứng dụng. Khi một POM Maven tồn tại cho một phần phụ thuộc trực tiếp của ứng dụng, trình bổ trợ sẽ xử lý từng phần tử <licenses> và nhúng đường liên kết cũng như tiêu đề của từng giấy phép vào một tài sản Android có trong ứng dụng của bạn.