Hướng dẫn APK modding

Cách biên dịch lại APK sau khi chỉnh sửa (Hướng dẫn 2026)

Học cách biên dịch lại tệp APK bằng APKTool sau khi sửa Smali, tài nguyên hoặc manifest. Sửa lỗi, ký số và cài đặt.

Mục lục

Biên dịch lại APK nghĩa là dựng lại một thư mục decode đã chỉnh sửa thành gói cài đặt được, thường bằng apktool b, rồi ký bằng khóa của chính bạn. Decode bằng APKTool, sửa một tệp, dựng lại, sửa mọi lỗi mà nó nêu tên, ký số, rồi cài lên thiết bị thử nghiệm. Chỉ biên dịch lại những bản sao ứng dụng bạn sở hữu, và giữ kín mọi kết quả.

Thuộc trung tâm modding: Cách mod APK · Đọc trước: Giải mã APK · Ký số sau: Ký số APK.

Bởi Abdul Emam, người kiểm thử APK tại ApkZena. Lần dựng lại đầu tiên của tôi thất bại chỉ vì một chuỗi bị xóa: manifest vẫn tham chiếu tới nó, aapt nêu chính xác mục bị thiếu, và việc khôi phục một dòng đã sửa xong bản build. Thông báo lỗi chính là công cụ gỡ lỗi. Hãy đọc nó trước tiên.

Hướng dẫn này đề cập ý nghĩa của việc biên dịch lại, các kiểm tra trước khi build, con đường APKTool và Android Studio, bốn nhóm lỗi, ký số, cài đặt, và những gói chống dựng lại. Mỗi cách sửa đều nêu rõ thông báo cần đối chiếu.

Biên dịch lại APK nghĩa là gì?

Biên dịch lại là ghép các tệp Smali, tài nguyên và manifest đã chỉnh sửa thành một APK dựng lại, đảo ngược bước decode nhưng không khôi phục chữ ký của nhà phát triển; hãy ký kết quả riêng, và lưu ý việc lệch chữ ký trước khi cài đè lên ứng dụng đang có trên thiết bị của bạn.

Khi nào bạn cần

Sau mọi chu trình decode rồi chỉnh sửa: Smali bị thay đổi, tài nguyên bị sửa, hay manifest bị chỉnh đều kết thúc ở bước này. Việc đọc bằng JADX không bao giờ cần bước này, vì JADX không tạo đầu ra có thể build. Nếu bạn sửa tệp, hãy biên dịch lại; nếu chỉ đọc, hãy dừng lại.

Trước khi biên dịch lại

Trước khi build, hãy xác nhận thư mục decode đã hoàn chỉnh, mọi chỉnh sửa đã được lưu, và bạn biết những tệp nào đã thay đổi; các kiểm tra này phát hiện sớm tài nguyên bị thiếu và chỉnh sửa còn sót, trong khi so sánh diff với một bản decode nguyên vẹn giúp khoanh vùng vấn đề trước khi biên dịch.

Kiểm tra cấu trúc thư mục

Hãy xác nhận smali/, res/, AndroidManifest.xml và apktool.yml đều có mặt theo quy trình decompile. Thư mục thiếu apktool.yml sẽ dựng lại với cài đặt đóng gói sai, còn thư mục thiếu res/ sẽ thất bại ngay ở tham chiếu tài nguyên đầu tiên.

Lưu mọi chỉnh sửa

Đóng hoặc lưu từng tệp đã sửa trong trình soạn thảo trước khi chạy build. Một thay đổi Smali chưa lưu đối với trình biên dịch đơn giản là không tồn tại, và sự nhầm lẫn sau đó — khi bản build bỏ qua cách sửa của bạn — còn tốn nhiều thời gian hơn việc bấm lưu.

Biết thay đổi gần nhất của bạn

Ghi lại những gì bạn đã thay đổi kể từ lần build thành công gần nhất. Khi trình biên dịch nêu tên một tệp, bạn sẽ biết ngay đó là của bạn hay là hư hại có sẵn, và điều đó quyết định bạn sửa tiếp hay làm lại từ đầu.

Điểm chính

  • Biên dịch lại nghĩa là biến thư mục decode đã chỉnh sửa thành APK cài được nhờ apktool b.
  • Sửa đúng tệp mà mỗi lỗi build nêu tên, mỗi vòng chỉ một chỉnh sửa, và đừng bao giờ ký một bản build đã thất bại.
  • Hãy ký mọi bản build lại, gỡ bản gốc và kiểm thử ngoại tuyến trên thiết bị thứ hai.

Các câu hỏi thường gặp

Làm sao để biên dịch lại một APK?

Chạy apktool b trên thư mục mà APKTool đã decode, rồi tìm gói đã dựng lại trong thư mục đó tại dist/. Sửa mọi lỗi build mà nó báo trước khi ký, vì bản build chưa ký hoặc hỏng sẽ không bao giờ cài được. Hãy ký đầu ra sạch và thử nó trên thiết bị thứ hai.

apktool b làm gì?

Nó dựng lại một thư mục đã decode thành APK cài đặt được, đọc hướng dẫn đóng gói từ apktool.yml. Lệnh nhận tên thư mục làm đối số và ghi kết quả vào dist/. Lần chạy thành công sẽ in đường dẫn đầu ra; lần thất bại nêu tên tệp đã hỏng.

Vì sao biên dịch lại thất bại?

Phần lớn là lỗi cú pháp Smali, tài nguyên bị thiếu do chỉnh sửa của bạn xóa mất, manifest XML không còn phân tích được, hoặc hai giá trị giành một ID tài nguyên. Lỗi nêu rõ tệp và dòng vi phạm, nên hãy sửa đúng chỗ đó, dựng lại, và mỗi vòng chỉ thay đổi một thứ.

Làm sao sửa tài nguyên bị thiếu sau khi chỉnh sửa?

So sánh thư mục bạn đã sửa với bản decode nguyên bản rồi khôi phục mục bị xóa, hoặc xóa tham chiếu trỏ tới nó. Drawable, string và layout bị thiếu mỗi loại gây ra một lỗi aapt riêng, nêu rõ tệp vắng mặt. Đừng bao giờ tự tạo bản thay thế khi bản gốc vẫn còn.

Có cần ký sau khi biên dịch lại không?

Có. APKTool để đầu ra dựng lại của nó ở trạng thái chưa ký, nên hãy ký bằng apksigner và một keystore trước khi cài. Xác minh chứng chỉ, rồi kiểm tra xem ứng dụng đã cài có dùng khóa khác không; nếu có, Android sẽ từ chối bản cập nhật và bạn có thể phải gỡ trước.

Tôi có thể biên dịch lại mọi APK không?

Gần như gói nào cũng decode và dựng lại được, nhưng kiểm tra chống chỉnh sửa, tài nguyên được mã hóa và phụ thuộc mã native có thể khiến kết quả crash hoặc từ chối chạy. Game trực tuyến còn cộng thêm xác thực phía máy chủ. Hãy coi việc dựng lại thành công là bước một, và lần chạy thử trên thiết bị mới là phán quyết thật.

Smali trong biên dịch lại là gì?

Smali là dạng cấp tập lệnh hợp ngữ của bytecode Dalvik mà APKTool tạo ra khi nó giải mã classes.dex. Bạn sửa nó dạng văn bản, và apktool b ghép nó lại thành tệp DEX trong lúc dựng lại. Hãy giữ nguyên số thanh ghi, nếu không phương thức dựng lại sẽ crash.

Làm sao thử một APK đã biên dịch lại?

Hãy ký nó, gỡ bản gốc, cài bản build của bạn trên thiết bị thứ hai và khởi động nó ở chế độ ngoại tuyến trước. Kiểm tra đúng hành vi bạn đã thay đổi, khởi động lại ứng dụng và xác nhận chỉnh sửa còn nguyên. Nếu nó crash khi mở, thay đổi của bạn nằm trong mã khởi động và cần hoàn tác.

Thuộc hướng dẫn đầy đủ

Cách mod APK (Game): Phương pháp, công cụ và rủi ro (2026)

Cũng trong APK modding: