Người ký APK

Trình ký APK trực tuyến - Cách ký tệp APK miễn phí

Hướng dẫn hoàn chỉnh về Người ký APK - tìm hiểu cách ký tập tin APK bằng cách sử dụng apksigner, jarsigner hoặc debug keystore. Hướng dẫn ký APK từng bước miễn phí dành cho nhà phát triển và người thử nghiệm. Ký APK không cần Android Studio.

Tại sao các tệp APK cần phải được ký?

Mọi ứng dụng Android đều phải được ký điện tử trước khi có thể cài đặt. Chữ ký phục vụ một số mục đích:

  • Xác minh danh tính của nhà phát triển ứng dụng
  • Đảm bảo APK không bị giả mạo
  • Cho phép Android khớp các bản cập nhật ứng dụng với bản gốc
  • Cần thiết để cài đặt trên tất cả các thiết bị Android

Cần có công cụ dành cho máy tính để bàn

Việc ký APK yêu cầu các công cụ dòng lệnh (JDK / Android SDK). Điều này không thể được thực hiện trong trình duyệt web. Thực hiện theo hướng dẫn bên dưới để ký APK trên máy tính của bạn.

Cách 1: Ký bằng apksigner (Khuyến nghị)

apksigner là công cụ ký APK chính thức của Google, được bao gồm trong Công cụ xây dựng SDK Android.

Bước 1: Tạo kho khóa

keytool -genkey -v -keystore my-release-key.jks \
  -keyalg RSA -keysize 2048 -validity 10000 \
  -alias my-key-alias

Bước 2: Ký APK

apksigner sign --ks my-release-key.jks \
  --ks-key-alias my-key-alias \
  --out signed-app.apk unsigned-app.apk

Bước 3: Xác minh chữ ký

apksigner verify --verbose signed-app.apk

Cách 2: Ký bằng jarsigner (Legacy)

# Sign
jarsigner -verbose -sigalg SHA256withRSA \
  -digestalg SHA-256 \
  -keystore my-release-key.jks \
  app-unsigned.apk my-key-alias

# Verify
jarsigner -verify -verbose app-signed.apk

Bước 4: Zipalign (Quan trọng!)

Sau khi ký, hãy tối ưu hóa APK bằng zipalign:

zipalign -v 4 signed-app.apk aligned-app.apk

Ký gỡ lỗi (Để kiểm tra)

Đối với mục đích thử nghiệm, bạn có thể sử dụng kho khóa gỡ lỗi mặc định của Android:

# Location of debug keystore:
# Linux/Mac: ~/.android/debug.keystore
# Windows: C:\Users\{USERNAME}\.android\debug.keystore

# Sign with debug key
apksigner sign --ks ~/.android/debug.keystore \
  --ks-key-alias androiddebugkey \
  --ks-pass pass:android \
  app.apk

So sánh công cụ ký kết

Tiêu chíapksignerngười làm nghề đóng hũ
Chữ ký V1
Chữ ký V2
Chữ ký V3
Khuyến khíchDi sản

Người ký APK - Câu hỏi thường gặp

Các câu hỏi thường gặp về ký APK, kho khóa và ký mã Android

Để ký một tệp APK, bạn cần apksigner (được khuyến nghị) hoặc jarsigner: (1) Tạo kho khóa bằng keytool -genkey, (2) Ký APK bằng apksigner sign --ks my-key.jks --out signed.apk unsigned.apk, (3) Xác minh chữ ký bằng apksigner verify signed.apk. Bạn cũng có thể sử dụng kho khóa gỡ lỗi Android cho mục đích thử nghiệm. Đây là cách tiêu chuẩn để ký APK mà không cần Android Studio.

Mặc dù bạn không thể ký APK trực tuyến một cách an toàn (vì việc ký APK yêu cầu kho khóa riêng của bạn không bao giờ được tải lên bất kỳ máy chủ nào), bạn có thể sử dụng Hướng dẫn ký APK miễn phí của chúng tôi để ký các tệp APK trên máy cục bộ của bạn. Hướng dẫn từng bước của chúng tôi sẽ hướng dẫn bạn toàn bộ quá trình bằng cách sử dụng các công cụ apksigner và jarsigner chính thức của Google. Sau khi ký, hãy sử dụng Trình xác minh chữ ký APK của chúng tôi để xác minh chữ ký trực tuyến miễn phí.

V1 (Ký JAR): Sơ đồ ký Android gốc. Xác minh từng mục ZIP riêng lẻ. Chậm hơn nhưng tương thích rộng rãi với tất cả các phiên bản Android. V2 (Lược đồ chữ ký APK): Được giới thiệu trong Android 7.0. Xác minh toàn bộ APK, giúp cài đặt nhanh hơn. V3 (Lược đồ chữ ký APK v3): Android 9.0+, hỗ trợ xoay phím. V4: Android 11.0+, cho phép cài đặt trực tuyến. Sử dụng apksigner để hỗ trợ tất cả các chương trình; jarsigner chỉ hỗ trợ V1.

Đối với ký APK mà không cần Android Studio: (1) Cài đặt Java JDK 8 trở lên, (2) Tải xuống Công cụ xây dựng SDK Android bao gồm apksigner hoặc tải xuống công cụ đi kèm độc lập, (3) Tạo kho khóa: keytool -genkey -v -keystore my-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias, (4) Ký hiệu: apksigner sign --ks my-key.jks --out signed.apk app.apk. Phương pháp này hoạt động trên Windows, Mac và Linux mà không yêu cầu cài đặt Android Studio đầy đủ.

căn chỉnh zip là một công cụ SDK Android giúp căn chỉnh dữ liệu không nén trong APK theo ranh giới 4 byte. Tối ưu hóa này giúp giảm mức tiêu thụ RAM khi ứng dụng chạy trên thiết bị. Quan trọng: Nếu sử dụng apksigner, hãy chạy zipalign TRƯỚC KHI ký. Nếu sử dụng jarsigner (cũ), hãy chạy zipalign SAU KHI ký. Lệnh: zipalign -v 4 input.apk output.apk. Google Play yêu cầu APK phải được căn chỉnh theo zip để gửi.

Tại sao thứ tự căn chỉnh (zipalign Trước apksigner) lại quan trọng trên Android 11–15

Một trong những lỗi thường gặp nhất mà các nhà phát triển và người kiểm duyệt mắc phải khi ký APK đã sửa đổi hoặc hợp nhất là chạy zipalign sau đó ký gói—hoặc sử dụng tiện ích jarsigner cũ của Java thay vì SDK Android apksigner của Google. Vì Lược đồ chữ ký APK v2 và v3 tính toán hàm băm mật mã trên toàn bộ bố cục nhị phân của kho lưu trữ ZIP nên việc sửa đổi độ lệch byte bằng zipalign sau khi ký sẽ ngay lập tức làm mất hiệu lực khối chữ ký v2/v3.

Bắt đầu từ Android 11 (API cấp 30) và được thực thi nghiêm ngặt trên Android 14 và 15, PackageManager yêu cầu hai điều kiện không thể thương lượng đối với bất kỳ APK nào nhắm mục tiêu đến các cấp SDK hiện đại:

  • resources.arsc được căn chỉnh 4 byte không nén: Bảng tài nguyên đã biên dịch (resources.arsc) phải được lưu trữ không nén (STORED) và căn chỉnh trên ranh giới 4 byte để Android có thể ánh xạ bộ nhớ (mmap) trực tiếp mà không cần sao chép vào RAM. Luôn thực hiện ký zipalign -p -f -v 4 input.apk aligned.apk trước.
  • Khối chữ ký v2+ bắt buộc: Việc ký API nhắm mục tiêu APK 30+ bằng jarsigner (chỉ viết chữ ký v1 META-INF/) sẽ khiến Android 11–15 từ chối cài đặt với INSTALL_PARSE_FAILED_NO_CERTIFICATES. Sử dụng trình tạo lệnh tương tác ở trên để xây dựng lệnh apksigner --v2-signing-enabled=true chính xác cho kho khóa của bạn hoặc xác minh đầu ra đã ký của bạn trong Trình xác minh chữ ký APK của chúng tôi.
Được thiết kế và ghi lại bởi Mst Shaefale Nhà phát triển chính và Kiến trúc sư gói Android • Đã xác minh trên Android 12–15

Mọi tiện ích trong bộ công cụ XAPKS sang APK đều chạy cục bộ 100% trong trình duyệt của bạn thông qua JavaScript và WebAssembly. Tìm thấy một trường hợp cạnh với một gói cụ thể? Hãy báo cáo vấn đề đó cho nhóm kỹ thuật của chúng tôi.