Trong Android Studio, các tệp ánh xạ ProGuard được tạo ở đâu sau khi biên dịch APK đã ký?
Tôi không chắc là nó không hoạt động hay tôi chỉ quên đường dẫn tệp và tìm kiếm Google / Stack Overflow bắt buộc của tôi không trả lời được điều này
Trong Android Studio, các tệp ánh xạ ProGuard được tạo ở đâu sau khi biên dịch APK đã ký?
Tôi không chắc là nó không hoạt động hay tôi chỉ quên đường dẫn tệp và tìm kiếm Google / Stack Overflow bắt buộc của tôi không trả lời được điều này
Câu trả lời:
Nó nên được đặt tại build/outputs/proguard/release/mapping.txt
thư mục của mô-đun ứng dụng của bạn.
Trong phiên bản mới nhất của ProGuard và Android Studio, tệp được đặt tại build/outputs/mapping/release/mapping.txt
.
/app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt
/app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txt
là những con đường mới.
Tôi thấy nó dễ dàng hơn để cấu hình proguard để ghi tệp maps.txt vào một vị trí bên ngoài build/
cây thư mục, để nó có thể được kiểm tra thuận tiện hơn trong kiểm soát phiên bản.
Để đạt được điều này, hãy đặt nó trong proguard-rules.pro
tập tin :
-printmapping mapping.txt
Điều này (rất có thể) sẽ đặt nó trong cùng thư mục với proguard-rules.pro
tệp của bạn . Cuối cùng, bạn có thể muốn viết nó vào cùng thư mục với tệp APK của bạn và với một tên tương đương (có thể bao gồm hương vị, kiểu xây dựng, v.v.).
Lưu ý: theo kinh nghiệm của tôi, điều này không bị ghi đè bởi tệp mẫu proguard (được đề xuất bởi một người bình luận cho người khác câu trả lời ở đây).
CẬP NHẬT: Nếu bạn có nhiều hương vị sản phẩm, thì đây là một giải pháp tốt hơn nhiều: https://stackoverflow.com/a/31116608/444761
Tôi thấy rằng nó không được tạo, vì vậy tôi đã thêm nó vào tệp quy tắc
-printmapping build/outputs/mapping/release/mapping.txt
Nó khá muộn để trả lời câu hỏi này nhưng chỉ trong trường hợp ai đó cần câu trả lời của tôi.
Vị trí của tệp Ánh xạ để khử nhiễu:
ProGuard lưu tệp trong ứng dụng / xây dựng / đầu ra / ánh xạ / FLAVOR / phát hành / maps.txt
Nói chung trong chế độ gỡ lỗi, bạn không cần tệp ánh xạ vì thông thường chức năng che giấu bị vô hiệu hóa. Nếu không phải như vậy thì hãy chắc chắn trong tệp build.gradle mà bạn có mã bên dưới cho biến thể gỡ lỗi.
debug {
minifyEnabled false
debuggable true
}
Một số Gotchas:
Tệp maps.txt bị ghi đè mỗi khi bạn tạo bản phát hành với ProGuard, vì vậy trước tiên hãy sao lưu tệp đó trước khi tạo bản phát hành mới. Nó sẽ giúp ngăn chặn dấu vết ngăn xếp từ một phiên bản cũ hơn của ứng dụng của bạn.
Ngoài ra, có hai cách để làm xáo trộn mã của bạn:
1. Tải tệp maps.txt của bạn lên Google play Console:
Khi xuất bản ứng dụng của bạn trên Google Play, bạn có thể tải lên tệp maps.txt cho từng phiên bản APK của mình. Sau đó, Google Play sẽ khử các dấu vết ngăn xếp đến từ các sự cố do người dùng báo cáo để bạn có thể xem lại chúng trong Bảng điều khiển Google Play.
2. Sử dụng công cụ sdk cục bộ lấy lại.sh/retrace.bat:
Đôi khi bạn muốn chạy phiên bản phát hành của ứng dụng của mình (bằng cách thay đổi biến thể xây dựng thành phát hành và chạy nó) để kiểm tra chéo và sửa lỗi để nó không xảy ra trong sản xuất (khi được phát hành cho cửa hàng play).
Để tự chuyển đổi một dấu vết ngăn xếp bị che khuất thành một dấu vết có thể đọc được, hãy sử dụng tập lệnh truy xuất ( lấy lại.bat trên Windows; lấy lại.sh trên Mac / Linux ).
Nó nằm trong <sdk-root>/tools/proguard/bin/
thư mục.
<sdk-root>
là nơi cài đặt tất cả các thư viện và sdks Android của bạn.
Tập lệnh lấy tệp maps.txt và theo dõi ngăn xếp của bạn, tạo ra một dấu vết ngăn xếp mới, có thể đọc được.
Lệnh Cú pháp:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
Ví dụ:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
Tôi thích phiên bản cục bộ của obfuscating vì khá tiện dụng để kiểm tra trước lỗi sản xuất.
Tôi hy vọng nó sẽ giúp.
Tôi đang sử dụng phiên bản Android Studio 2.2.2 . Đối với tôi, nó nằm ở các vị trí sau:
Để gỡ lỗi:
\app\build\outputs\mapping\debug\mapping.txt
Để phát hành:
\app\build\outputs\mapping\release\mapping.txt