Tôi có một ứng dụng đã bật Proguard (minifyenabled true) và gần đây đã có báo cáo sự cố trong Google Play Dev Console. Khi tôi nhìn vào nó, tôi thấy sau:Google Play Dev Console hiển thị tên Lớp và Phương thức trong Stacktrace
Tôi rất ngạc nhiên khi nhìn thấy tên lớp và phương pháp đầy đủ trong dòng 1, như Proguard được kích hoạt. Tôi đã luôn luôn trước đó nhìn thấy những thứ như thế này:
tại com.myname.myapp.cf (Unknown Source)
Tôi cũng tò mò như thế nào số dòng đang xuất hiện như tôi không giữ số dòng trong tệp cấu hình Proguard của tôi (do đó, tại sao tôi thường thấy 'Nguồn không xác định' trong stacktraces của mình).
Tôi đã biên dịch tệp .apk của mình, xem trước tệp classes.dex và tất cả đều OK. Tôi đặt lớp tham chiếu trong dòng 1 của stacktrace và tên lớp đã thực sự obfuscated, như là tên phương thức.
Bây giờ, 'MyActivity' (dòng 2 của stacktrace) là khởi chạy Hoạt động của ứng dụng của tôi, và như vậy được khai báo trong Tệp kê khai, vì vậy tôi hiểu tại sao tên của nó không bị che khuất và phương pháp 'onConnected' không phải là một phương pháp của tôi (nó đến từ Google Play Games Services), vì vậy, một lần nữa, điều này là OK.
'MyMethodName' được gọi từ trong onConnected như vậy:
@Override
public void onConnected(Bundle arg0) {
myClassObject.myMethodName(); //Where myClassObject is an instance of MyClassName
}
gỡ lỗi được thiết lập để vô hiệu hóa trong tập tin build.gradle tôi.
Tôi không tải lên tệp mapping.txt lên Play Console, tôi chạy truy xuất theo cách thủ công để xem các bảng xếp hạng không bị che khuất của tôi.
Tôi đánh giá cao nếu ai đó có thể giúp tôi hiểu lý do tại sao tôi thấy tên đầy đủ và tên phương pháp của mình ở đây? Tôi nên làm gì để ngăn chặn điều này?
'MyClassName' có phải là lớp' Hoạt động' không? Bạn có đang sử dụng các quy tắc 'ProGuard' mặc định không? –