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

Dịch vụ Google Play đôi khi bao gồm 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ở, với tư cách là nhà phát triển, bạ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 dùng.

Dịch vụ Google Play bao gồm một bộ công cụ được thiết kế nhằm giúp nhà phát triển dễ dàng hơn trong việc thể hiện thông báo trong phần mềm nguồn mở về các thư viện được dùng trong ứng dụng của họ. Một trong những công cụ này là trình bổ trợ Gradle 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) và tạo một hoạt động có thể dùng để hiển thị các điều khoản này. Hãy tìm hiểu thêm về cách công cụ này tìm và đóng gói thông tin giấy phép.

Thêm trình bổ trợ Gradle

Trong tệp bản dựng cấp gốc, hãy làm như sau:

  1. Thêm kho lưu trữ Google Maven.
  2. Thêm trình bổ trợ oss-licenses vào các phần phụ thuộc.

Đoạn mã sau đây cho thấy các bước sau:

Kotlin DSL

build.gradle.kts

buildscript {
  repositories {
    ...
    google()  // maven { url("https://maven.google.com") } for Gradle <= 3
  }
  dependencies {
    ...
    classpath("com.google.android.gms:oss-licenses-plugin:0.10.6")
  }
}

DSL hấp dẫn

build.gradle

buildscript {
  repositories {
    ...
    google()  // maven { url "https://maven.google.com" } for Gradle <= 3
  }
  dependencies {
    ...
    classpath '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 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")
}

DSL hấp dẫn

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 vào ứng dụng

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 oss-licenses:

Kotlin DSL

build.gradle.kts

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

DSL hấp dẫn

build.gradle

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

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

Khi ứng dụng được tạo, trình bổ trợ Gradle sẽ xử lý giấy phép và thêm giấy phép đó vào tài nguyên của ứng dụng. Để dễ dàng cho thấy 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 điểm thích hợp trong ứng dụng, 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 khởi chạy, hoạt động này sẽ hiển thị một danh sách thư viện nguồn mở được biên dịch thành ứng dụng của bạn, bao gồm cả các thư viện thuộc Dịch vụ Google Play, như minh hoạ trong hình 1. Người dùng có thể nhấn vào tên thư viện để xem thêm thông tin về giấy phép cho thư viện đó.

Chế độ xem danh sách có từng phần tử chứa tên của thư viện nguồn mở

Hình 1. Hoạt động trên trình đơn giấy phép hiển thị 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 tên cho hoạt động

Theo mặc định, hoạt động được hiển thị sẽ 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 để khớp với giao diện dùng trong các hoạt động khác của ứng dụng. Để thực hiện việc này, hãy đưa hoạt động của giấy phép nguồn mở vào 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 có một POM Maven cho 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>, đồng thời nhúng đường liên kết và 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.