🏴󠁧󠁢󠁥󠁮󠁧󠁿
TechDictionary.org
Tiếng Việt
Tiếng Việt
  • Xin chào
  • Giới thiệu
  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • J
  • K
  • L
  • M
  • N
  • O
  • P
    • ProGuard
  • Q
  • R
  • S
  • T
  • U
  • V
  • W
  • REFERENCES
    • How to be a guru
  • (Ghi chú)
Powered by GitBook
On this page
Export as PDF
  1. P

ProGuard

ProGuard là một công cụ thu nhỏ (shrink), tối ưu hóa (optimize), rối mã (obfuscate) và loại bỏ mã không sử dụng (strip) cho ứng dụng Java và Android. Nó giúp giảm kích thước tệp APK/AAB, bảo vệ mã nguồn khỏi bị đảo ngược (reverse engineering) và tối ưu hóa hiệu suất ứng dụng.

🔹 Tính năng chính của ProGuard

  1. Thu nhỏ mã (Shrinking): Loại bỏ các lớp, phương thức, thuộc tính không sử dụng trong mã nguồn.

  2. Tối ưu hóa (Optimization): Tinh chỉnh bytecode để cải thiện hiệu suất và giảm dung lượng.

  3. Rối mã (Obfuscation): Đổi tên lớp, phương thức và biến thành các ký tự ngắn và khó hiểu nhằm bảo vệ mã nguồn khỏi bị đọc hiểu dễ dàng.

  4. Loại bỏ mã thừa (Stripping): Xóa bỏ các thư viện và mã không cần thiết để giảm kích thước ứng dụng.

🔹 ProGuard trong Android

  • Mặc định được tích hợp trong Android SDK, nhưng từ Android Studio 3.4 trở đi, Google khuyến nghị sử dụng R8 thay thế (R8 cũng có chức năng tương tự nhưng nhanh hơn và tối ưu hơn).

  • Được kích hoạt trong chế độ release bằng cách bật minifyEnabled trong file build.gradle:

    gradleCopyEditbuildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

🔹 Lưu ý khi dùng ProGuard

  • Có thể vô tình loại bỏ các lớp hoặc phương thức cần thiết (đặc biệt với reflection, Gson, Retrofit).

  • Cần viết file proguard-rules.pro để giữ lại các thành phần quan trọng, ví dụ:

    proguardCopyEdit-keep class com.example.model.** { *; }
    -keep class com.google.gson.** { *; }

Bạn đang muốn tìm hiểu ProGuard để làm gì? Nếu là tối ưu ứng dụng Android, có thể bạn cũng quan tâm đến R8 đấy

PreviousPNextQ

Last updated 3 months ago