2016-08-05 20 views
5

Tôi đã đọc nhiều chuỗi trên SO nhưng không thể tìm thấy bất kỳ câu trả lời nào. Tôi có nhiều câu hỏi ở đây. Hãy để tôi mô tả:ProGuard không tạo tệp ánh xạ

  • Tôi không biết nhiều về ProGuard nhưng theo thông tin của tôi, nó làm xáo trộn mã Android ở một mức độ nào đó. Câu hỏi của tôi là tôi cần phải kích hoạt nó ở đâu đó? minifyEnabledfalse trong tệp Gradle của tôi. Điều này có vô hiệu hóa ProGuard hoàn toàn không?
  • Để giải mã sự cố trên Firebase và nhận theo dõi ngăn xếp, tôi cần tệp ánh xạ. Tôi không thể tìm thấy nó ở bất cứ đâu. Trong ứng dụng/build/thư mục đầu ra, tôi chỉ có

Folder

Sau đó, tôi đọc ở đâu đó về proguard-rules.pro tập tin. Nó chỉ có một số ý kiến ​​và không có mã. Sau đó, tôi đặt nó trong đó: -printmapping mapping.txt. Sau đó, tạo lại APK đã ký, vẫn không thành công. Tôi đang thiếu gì?

Chỉnh sửa 1: Nếu tôi phải thực hiện một số lệnh terminal adb, vui lòng mô tả các bước. Tôi chưa từng sử dụng Terminal trước đây.

Trả lời

7

Trong file gradle bạn bạn đặc biệt phải thiết lập các tùy chọn minifyEnabled là true.
Điều này cho phép làm xáo trộn. Bằng cách làm như vậy, nó cũng áp dụng các quy tắc obfuscation mà bạn xác định trên 'proguard-rules.pro' của bạn.

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

Bạn có thể in các mappinghạt sử dụng (lưu ý rằng bạn cần cả hai để giải mã đầy đủ/hiểu mã được mã hóa) bằng cách áp dụng các lệnh tương ứng

-printseeds obfuscation/seeds.txt 

-printmapping obfuscation/mapping.txt 

Ví dụ về tệp bảo vệ cơ bản là:

-optimizationpasses 5 
-dontpreverify 
-repackageclasses '' 
-allowaccessmodification 
-optimizations !code/simplification/arithmetic 
-keepattributes *Annotation* 

-verbose 

-dump obfuscation/class_files.txt 
-printseeds obfuscation/seeds.txt 
-printusage obfuscation/unused.txt 
-printmapping obfuscation/mapping.txt 

Kính trọng,

+0

Cảm ơn bạn đã biết chi tiết. Tôi gặp lỗi sau khi bật Proguard và tạo gói ứng dụng đã ký. gỡ lỗi APK tạo thành công mặc dù nhưng không ký kết. Đây là tin nhắn gradle: https://db.tt/Xhm8C10T –

+1

Im nhận được một chút lo lắng về các ví dụ 'không thể tìm thấy tham chiếu lớp java.awt.datatransfer.DataFlavor'. Có vẻ như bạn nên giữ mã này khỏi bị làm phiền. Theo tôi, bạn không nên làm xáo trộn các thư viện như trang bị thêm, okttp, vv Điều này là do không có điểm nào trong việc làm như vậy. Nếu thư viện là công khai, mặc dù bạn làm xáo trộn nó, mọi người vẫn có thể lấy nó từ trang web của họ. Bạn chỉ nên tập trung vào làm xáo trộn tài sản của mình (chẳng hạn như mã của riêng bạn) –

+0

Tôi có nên tạo một số chủ đề mới không? –

1
  1. Bạn cần đặt minifyEnabled thành true để bật Proguard.
  2. Đối với một số thư viện, bạn cần viết một số dòng bên trong proguard-rules.pro để chúng không bị làm phiền bởi Proguard. Xem "Cấu hình ProGuard" phần trên trang này để tìm hiểu những gì để thêm cho Firebase: https://firebase.google.com/docs/database/android/start/
+0

Tôi nhận được một lỗi sau khi kích hoạt Proguard và tạo apk ký.gỡ lỗi APK tạo thành công mặc dù nhưng không ký kết. Đây là tin nhắn gradle: https://db.tt/Xhm8C10T –

0
  1. Set minifyEnabled là true.
  2. Tạo APK tạo.
  3. Look trong thư mục đầu ra cho tập tin ánh xạ. [Do dự án không sạch hoặc nó sẽ được đi]
+0

Tôi gặp lỗi sau khi bật Proguard và tạo gói ứng dụng đã ký. gỡ lỗi APK tạo thành công mặc dù nhưng không ký kết. Đây là tin nhắn gradle: https://db.tt/Xhm8C10T –

+0

sử dụng -dontwarn cờ với tất cả các gói thư viện mà bạn đang sử dụng trong dự án của bạn như "-dontwarn com.android.volley. **" trong quy tắc proguard –

+0

Thêm - bỏ qua công việc! Không nên có vấn đề với chức năng của ứng dụng của tôi, phải không? –

2

thử để kiểm tra thiết lập -> InstantRun ... nó phải tắt :)

+0

Điều này làm việc cho tôi! –

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