8

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

enter image description here

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?

+0

'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? –

Trả lời

3

Sau nhiều tuần trăn trở này, cuối cùng tôi đã khám phá ra nguyên nhân ...

đủ là để nói, ứng dụng phát hành của tôi là hoàn toàn obfuscated - những đống dấu vết de-obfuscated đang đến từ thiết bị thử nghiệm của riêng tôi !!

Có, thiết bị thử nghiệm của riêng tôi đang chạy ứng dụng trực tiếp qua Android Studio và không được ký. (Và vì lý do rõ ràng, tôi không bật ProGuard trên bản dựng gỡ lỗi của mình). Thiết bị tôi sử dụng để thử nghiệm ứng dụng này không phải là thiết bị 'chủ đạo' và 'tên' xuất hiện trong Dev Consol không giống với tên thực tế của thiết bị vì vậy tôi đã không nhận thấy ngay lập tức.

Tôi khá chắc chắn điều này chưa bao giờ xảy ra trong quá khứ (tôi chắc chắn không thấy nó cho đến bây giờ) - lý do tại sao mọi người sẽ muốn báo cáo sự cố từ bản dựng lỗi của họ xuất hiện trong Dev Console cùng với sự cố xây dựng sản xuất, Tôi không biết.

Vì vậy, nếu ai đó đang gặp sự cố này, hãy kiểm tra xem đó không phải là bản dựng gỡ lỗi của riêng bạn gây ra luồng ngăn xếp ngăn xếp trước bất kỳ điều gì khác!

-2

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ị xáo trộn của tôi.

Sau đó, bạn có thể muốn thêm mapping.txt vào google play để đảm bảo rằng các gói và tên lớp của bạn bị làm xáo trộn.

+0

Đây không phải là chính xác - mappings.txt được tải lên để bạn có thể xem các dấu vết ngăn xếp bị xáo trộn trong bảng điều khiển dành cho nhà phát triển trực tiếp mà không cần phải sử dụng công cụ theo cách thủ công như truy xuất lại. Nó không liên quan gì đến việc giữ chúng bị làm xáo trộn. Khá ngược lại. Xem: https://support.google.com/googleplay/android-developer/answer/6295281?hl=en-GB – Zippy

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