2012-04-17 19 views
21

Tôi đã tải xuống bộ bảo vệ được đóng gói trong một tệp zip và giải nén nó vào đĩa cứng của tôi. Tôi không cài đặt bằng bất kỳ cách nào (vì tôi không biết cách thực hiện). Sau đó tôi đã thêm proguard.config=proguard.cfg vào tệp project.properties của mình. Sau đó tôi đã làm một "ứng dụng Android xuất khẩu" hoàn toàn mong đợi nhật thực để phàn nàn rằng nó không biết nơi cài đặt proguard của tôi đã được, nhưng không có khiếu nại. Thật vậy, một tập tin apk mới xuất hiện trong kho khóa của tôi, và một tập hợp các tập tin (dump.txt vv) xuất hiện trong thư mục con proguard của ứng dụng của tôi. Mapping.txt trông giống như một danh sách tốt đẹp của ánh xạ từ tên biến dài của tôi đến một và hai biến chữ cái. Tất cả điều này chắc chắn là bằng chứng mạnh mẽ rằng proguard đã bằng cách nào đó làm việc - mối quan tâm duy nhất của tôi là gói ứng dụng hiếm khi nhỏ hơn trước đây. Có cách nào để kiểm tra xem gói ứng dụng có bao gồm obfuscations của proguard không?Làm thế nào để biết Proguard đã thực hiện công việc của mình chưa

Trả lời

43

Thông thường kích thước sẽ cho biết ProGuard đã làm việc nhưng bạn có thể: -

  1. Sử dụng Dex2Jar để chuyển đổi các gói ứng dụng vào một tập tin jar
  2. Mở kết quả file Jar với Jd-Gui để xem mã nó chứa
+2

Điều này hoạt động xuất sắc - cảm ơn nhiều! – Pete

+1

Làm thế nào để sử dụng dex2jar? – Roel

+1

http://stackoverflow.com/questions/5257830/how-to-use-dextojar – Kuffs

1

Một phương pháp thay thế cho phương pháp @Kuffs là so sánh APK mới của bạn với phiên bản cũ. Mở cả hai (với 7zip hoặc công cụ ưa thích của bạn) và so sánh kích thước của các tệp classes.dex trong mỗi tệp.

Một vài lý do đơn giản bạn có thể không được nhìn thấy nhiều của một tiết kiệm kích thước:

  • Các classes.dex không khó hiểu đã có thể được nén nhiều hơn obfuscated một. Điều này luôn đúng với một mức độ nào đó.
  • Bạn không tạo bản phát hành. Proguard chỉ được chạy trên bản phát hành bản phát hành kể từ khi gỡ lỗi mã obfuscated là một cơn ác mộng.
  • Cài đặt Proguard bạn đang sử dụng không hoạt động tốt (ít nhất là về kích thước mã) cho dự án của bạn. Tôi đã thực sự thấy cài đặt nội tuyến mã của proguard tăng kích thước của các tệp jar trước đây!
+0

Các classes.dex không rõ ràng đã có thể được nén nhiều hơn một obfuscated -> điều này có nghĩa là unobfuscated classes.dex có kích thước nhỏ hơn obfuscated? – Rendy

+2

@Rendy Tôi sẽ luôn luôn mong đợi kích thước của .dex obfuscated được nhỏ hơn so với unobfuscated một. Tuy nhiên, tôi cũng hy vọng rằng sự khác biệt về kích thước sau khi nén sẽ nhỏ hơn nhiều so với sự khác biệt về kích thước trước khi nén. Điều này là do obfuscation thực hiện một số công việc tương tự như nén - tức là thay thế các chuỗi dài (class/method/field name) bằng các chuỗi ngắn hơn nhiều. – vaughandroid

+0

đã nhận được! Cảm ơn! – Rendy

Các vấn đề liên quan