TopGit
Đánh giá repo GitHub

AboutLibraries: Quản Lý Giấy Phép Kotlin Multiplatform

mikepenz/AboutLibraries
ATopGit review image for mikepenz/AboutLibraries
Review by Topgit.dev for mikepenz/AboutLibraries, with GitHub repository stats and README context.
Nhận định nhanh

AboutLibraries là plugin Gradle kèm bộ Compose UI, biến dependency graph của dự án Kotlin Multiplatform thành màn hình giấy phép mã nguồn mở ngay trong app. Việc thu thập diễn ra tại thời điểm build, nên không có gì bị quét khi app đang chạy. Hãy dùng nếu bạn build một codebase Kotlin cho Android, iOS, desktop, hoặc web và muốn một màn hình giấy phép chung; bỏ qua nếu một trang credits viết tay đã đủ cho vài dependency của bạn.

Sao
★ 4.5k
Fork
⑂ 605
Người đóng góp
👥 160
Ngôn ngữ
Kotlin
Giấy phép
Apache-2.0
Chủ đề
Mobile
Cập nhật
Oct 2026
Trang chủ
GitHub

Thách Thức Của Việc Công Khai Giấy Phép Trong App

Bất kỳ app nào kéo vào hơn vài dependency Gradle mã nguồn mở sớm muộn cũng phải hiển thị giấy phép của chúng ở đâu đó, và một danh sách viết tay sẽ lỗi thời ngay khi có bản cập nhật version hay thêm thư viện mới. Không ai thích gõ tay danh sách đó. Khớp từng artifact với đúng mã giấy phép SPDX rồi kiểm tra lại sau mỗi lần đổi dependency đủ mất công để nhiều side project bỏ qua luôn bước này. AboutLibraries nhắm đúng khoảng trống đó cho dự án Kotlin Multiplatform và Android: plugin Gradle tự tạo lại danh sách từ dependency graph thật trên mỗi lần build, thay vì để bạn duy trì thủ công.

AboutLibraries Làm Gì

AboutLibraries là plugin Gradle đi kèm các component Compose UI, dựng nên màn hình giấy phép mã nguồn mở cho app Kotlin Multiplatform và Android. Tại thời điểm build, plugin quét dependency graph, khớp từng artifact với giấy phép tương ứng, rồi ghi kết quả vào một file JSON mà app tải qua LibrariesContainer lúc runtime. Vì việc thu thập chỉ diễn ra một lần khi build, màn hình chỉ cần render dữ liệu đã có sẵn.

Tính Năng Cốt Lõi Cho Báo Cáo Dependency

  • ✓Một bộ dữ liệu và gần như một bộ Compose UI dùng chung cho Android, iOS, JVM desktop, native, Wasm, và JS, theo danh sách nền tảng trong README.
  • ✓Việc thu thập diễn ra trong lúc build Gradle rồi được cache lại, nên app không quét dependency lúc runtime.
  • ✓Compose UI có sẵn theo phong cách Material 2, Material 3, hoặc Wear, hoặc bạn tự xây màn hình riêng trên module core.
  • ✓Plugin Gradle tách thành hai ID riêng từ version 13.x.y: plugin chính cung cấp task thủ công để sinh định nghĩa thư viện, còn plugin Android tự động gắn bước sinh đó vào quá trình build Android.
  • ✓Công cụ tuân thủ giấy phép có sẵn: chế độ strict mode có thể làm build fail khi gặp giấy phép không được phép, cùng tính năng export CSV và text để báo cáo.
  • ✓Task Gradle exportFunding có thể tự sinh file funding.json với một GitHub API token, cho biết dependency nào có thông tin tài trợ.
  • ✓Metadata thư viện và giấy phép có thể bị ghi đè bằng file JSON đặt trong configPath đã cấu hình, gộp lại theo uniqueId trùng khớp.
  • ✓LibrariesContainer nhận variant (Refined/Traditional), density (Compact/Cozy), và actionMode (Chips/Icons), nên một component phủ được nhiều kiểu hiển thị.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Ai Sẽ Hưởng Lợi Từ AboutLibraries

Team build app Kotlin Multiplatform hoặc Android chạy trên nhiều nền tảng sẽ tận dụng AboutLibraries tốt nhất, vì cùng một bộ dữ liệu sinh ra và phần lớn cùng một Compose UI phủ được Android, iOS, desktop, JS, và Wasm. Nó cũng hợp với team có yêu cầu tuân thủ, nhờ export CSV/text và strict mode giấy phép. Bỏ qua nếu dự án của bạn không dùng Gradle hay Compose, hoặc nếu chỉ có vài dependency thì một màn hình credits tĩnh viết tay đơn giản hơn việc gắn thêm một build plugin.

Tích Hợp AboutLibraries Vào Dự Án

Plugin nằm trên Gradle Plugin Portal; hãy thêm nó bằng khối plugins { } của Kotlin DSL thay vì cú pháp apply plugin cũ. Từ version 13.x.y có hai plugin ID: com.mikepenz.aboutlibraries.plugin cung cấp task Gradle thủ công để sinh định nghĩa thư viện, còn com.mikepenz.aboutlibraries.plugin.android tự động gắn bước sinh đó vào build Android; README khuyên dùng plugin chính cho phần lớn dự án, chỉ chọn bản Android khi bạn thực sự cần cú hook tự động đó. Thêm module Compose phù hợp với version Material bạn đang dùng, ví dụ implementation("com.mikepenz:aboutlibraries-compose-m3:${latestAboutLibsRelease}"), rồi tinh chỉnh hành vi collect, export, và license qua khối extension aboutLibraries { }; danh sách đầy đủ các option nằm trong file source AboutLibrariesExtension.kt được link tới, không có trong README.

Hiển Thị Giấy Phép Với Compose UI

Sau khi plugin đã sinh file metadata, tải nó bằng produceLibraries rồi đưa kết quả vào LibrariesContainer: `val libraries by produceLibraries(R.raw.aboutlibraries)`, sau đó `LibrariesContainer(libraries, Modifier.fillMaxSize())`. Một component duy nhất đó render mọi kiểu hiển thị trong phần showcase của dự án: truyền variant để chọn giao diện Refined hay Traditional, density để chọn mật độ Compact hay Cozy, và actionMode để chọn Chips hay Icons cho mỗi dòng. Chạm vào một dòng để mở chi tiết, dạng inline, dạng dialog, hoặc dạng bottom sheet, tuỳ vào detailMode bạn đặt. Nếu Material 2, Material 3, hay Wear có sẵn không hợp mắt, README chỉ ra hướng tự xây màn hình riêng trên module core.

Ưu Điểm Khi Dùng AboutLibraries

  • ✓Tự tạo lại danh sách dependency và giấy phép từ dependency graph Gradle thật trên mỗi lần build, thay vì dựa vào một file viết tay.
  • ✓Không quét lúc runtime: README nói việc thu thập diễn ra tại thời điểm build rồi được cache lại, nên UI chỉ việc render sẵn.
  • ✓iOS, JVM desktop, native, JS, Wasm, và Android dùng chung một bộ dữ liệu sinh ra và gần như chung một Compose UI.
  • ✓Tính năng tuân thủ đi kèm sẵn: chế độ allow-list nghiêm ngặt cộng với export báo cáo dạng CSV và text, không cần công cụ riêng.
  • ✓Ghi đè theo từng thư viện chỉ là file JSON thuần trong configPath, nên sửa một mô tả hay giấy phép sai không cần đụng vào code.

Lưu Ý Và Yêu Cầu

  • △Lấy nội dung giấy phép hoặc dữ liệu tài trợ từ xa cần một GitHub API token; việc này không tự động sẵn có.
  • △Danh sách đầy đủ option của extension Gradle không nằm trong README; nó được ghi trong file source AboutLibrariesExtension.kt được link tới.
  • △Strict mode chỉ tự làm fail build khi bạn dùng plugin dành riêng cho Android; các loại dự án khác phải tự chạy exportLibraryDefinitions thủ công để có cùng mức kiểm soát.
  • △Có hai plugin ID cho bản chính và bản Android, chọn nhầm sẽ ảnh hưởng đến việc sinh metadata có tự động hay không, nên đọc migration guide trước khi đụng vào một setup cũ.
  • △Các dữ kiện có ở đây chỉ phủ ba dòng release liệt kê trong bảng của README, nên không có gì xác nhận về lịch sử version hay nhịp phát hành dài hơn.
Xem trên GitHub ↗Trang chủ ↗

Công Cụ Khác Để Quản Lý Giấy Phép

Google oss-licenses-plugin — plugin Gradle riêng của Play Services cho màn hình giấy phép trong app, chỉ giới hạn ở Android chứ không phải Kotlin Multiplatform.Gradle License Report — plugin Gradle sinh báo cáo giấy phép dependency cho dự án JVM, không có sẵn Compose UI dựng sẵn.CycloneDX Gradle plugin — tạo software bill of materials (SBOM) cho dependency của dự án, hợp khi yêu cầu là một SBOM dạng máy đọc được thay vì màn hình trong app.FOSSA — nền tảng quét tuân thủ giấy phép và SBOM dạng hosted, có thêm khả năng áp chính sách trên toàn tổ chức, đổi lại là dịch vụ trả phí chứ không phải plugin Gradle.

Câu Hỏi Thường Gặp

AboutLibraries có tương thích với Compose Multiplatform không?

AboutLibraries hỗ trợ Compose Multiplatform: README của nó liệt kê Android, iOS, native, JVM desktop, JS, và Wasm là các nền tảng dùng chung một bộ dữ liệu dependency sinh ra và cùng Compose UI.

AboutLibraries có làm tăng runtime overhead cho app không?

AboutLibraries thu thập và cache dữ liệu dependency và giấy phép ngay trong lúc build Gradle, theo README, nên màn hình sinh ra chỉ tải dữ liệu đã dựng sẵn thay vì quét dependency lúc app đang chạy.

AboutLibraries phát hành theo giấy phép nào?

AboutLibraries phát hành theo giấy phép Apache-2.0, theo thông tin trên repository GitHub.

AboutLibraries có giúp gì cho việc tuân thủ giấy phép mã nguồn mở không?

AboutLibraries có công cụ hướng tới tuân thủ: export CSV và text cộng với strict mode giấy phép có thể làm build fail khi giấy phép của một dependency nằm ngoài danh sách cho phép bạn cấu hình.

AboutLibraries xử lý thông tin tài trợ dự án như thế nào?

AboutLibraries có thể cho biết dependency nào có thông tin tài trợ, lấy từ xa bằng GitHub API token hoặc ghi thủ công vào file funding.json qua task exportFunding.

Tôi có thể tuỳ chỉnh UI hiển thị thư viện không?

LibrariesContainer của AboutLibraries có các tuỳ chọn variant, density, và action-mode cho Compose UI có sẵn, còn module core cho phép bạn tự xây màn hình hoàn toàn riêng.

Trường hợp sử dụng tốt nhất

  • •Thêm màn hình ghi công mã nguồn mở bắt buộc cho một app Kotlin Multiplatform chạy trên Android, iOS, và desktop từ một codebase.
  • •Xuất báo cáo tuân thủ dạng CSV hoặc text cho bộ phận pháp lý thay vì tự biên soạn danh sách dependency.
  • •Áp dụng danh sách giấy phép được phép ngay tại thời điểm build bằng strict mode, để một giấy phép không hợp lệ làm fail build Android thay vì lọt ra ngoài mà không ai biết.
  • •Kiểm tra dependency nào có thông tin tài trợ trước khi team quyết định tài trợ ngược lại cho dự án mã nguồn mở nào.
  • •Tự xây UI giấy phép hoàn toàn riêng trên module core khi các component Compose có sẵn không khớp design system của app.

Repo liên quan

Nguồn & ghi công

Dữ kiện và trích dẫn lấy từ repository GitHub mikepenz/AboutLibraries và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 12 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

Chưa chắc AboutLibraries có hợp với bạn?

Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về AboutLibraries.

GitHub