Tôi đã áp dụng ProGuard cho ứng dụng Android của mình.Tại sao Proguard giữ lớp Hoạt động trong Android?
Tôi đang sử dụng
android-studio/sdk/tools/proguard/proguard-android.txt
như một tập tin cấu hình, thay đổi gì cả.
Trong tập tin này tôi có thể thấy báo cáo kết quả chỉ liên quan đến Hoạt động:
We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
Nó sau từ đó các hoạt động tên lớp được obfusctated bởi ProGuard trong khi một số phương pháp được bảo tồn như họ đang có. Điều này là dễ hiểu.
Tuy nhiên, trong ứng dụng của tôi, tôi sau đó tạo ra một lớp Hoạt động từ một chuỗi sử dụng
Class.forName("my.app.MyActivity")
sau đó tôi bắt đầu Hoạt động này và nó bắt đầu tốt.
Nhưng điều đó có nghĩa là các lớp có nguồn gốc từ Hoạt động không bị làm xáo trộn ??. Nó nên đã thất bại vì ProGuard không có -keep class
chỉ thị cho Activity
, nó chỉ có -keepclassmembers.
Có thể ai đó, xin vui lòng, giải thích, nếu tôi có thể dựa vào các hành vi tôi quan sát? Hay tôi hiểu sai chỉ thị -keepclassmembers
?
Bạn nên đăng toàn bộ tệp, bởi vì dòng đó không đủ để giải thích lý do tại sao nó giữ tên Hoạt động – Raffaele