SDK 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ở, 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 trình bày 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 oss-licenses 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 được đưa vào (như 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. Tìm hiểu thêm về
cách công cụ này 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:
Đ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.11.0") } } } }
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.11.0") } } } }
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 vào 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
Trong phần 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.5.0")
Groovy DSL
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.5.0'
Hiển thị thông tin về giấy phép
Khi ứng dụng của bạn tạo bản dựng, 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 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, như minh hoạ trong đoạn mã sau:
Kotlin
import com.google.android.gms.oss.licenses.v2.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.v2.OssLicensesMenuActivity; ... // When the user selects an option to see the licenses: startActivity(new Intent(this, OssLicensesMenuActivity.class));
Khi hoạt động được 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êm thông tin về giấy phép cho thư viện đó.
Hình 1. Hoạt động của trình đơn giấy phép hiển thị danh sách có thể chọn gồm các thư viện nguồn mở mà ứ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 đề là "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 giao diện cho hoạt động
Có nhiều cách để áp dụng giao diện cho OssLicensesMenuActivity, tuỳ thuộc vào việc ứng dụng của bạn có sử dụng Material 3 hay giao diện dựa trên XML hay không.
Ứng dụng sử dụng Material 3
Đối với các ứng dụng sử dụng Material 3, bạn có thể gọi phương thức
setTheme()
để áp dụng giao diện tuỳ chỉnh cho hoạt động, như minh hoạ trong đoạn mã
sau:
Kotlin
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity ... OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography) startActivity(Intent(this, OssLicensesMenuActivity::class.java))
Java
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity; ... OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography); startActivity(new Intent(this, OssLicensesMenuActivity.class));
Ứng dụng sử dụng giao diện XML
Đối với các ứng dụng sử dụng giao diện XML, bạn có thể áp dụng giao diện cho hoạt động trong tệp kê khai để khớp với giao diện được 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ấ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.v2.OssLicensesMenuActivity" tools:replace="android:theme" android:theme="@style/AppTheme" /> </application>
Cách xác định danh sách giấy phép
Vào 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 phần phụ thuộc trực tiếp của ứng dụng, trình bổ trợ
xử lý từng <licenses>
phần tử 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 thành phần Android được
đưa vào ứng dụng.