Tôi gặp sự cố khi Proguard loại bỏ các phương thức gỡ lỗi của tôi (tôi cần chạy chương trình bảo vệ khi gỡ lỗi vì giới hạn tệp dex), ngay cả khi chúng được sử dụng trong gói Kiểm tra. Ví dụ. tôi sử dụng phương pháp addProeprty GSON trong bài kiểm tra Đơn vị, nhưng không sử dụng trong Gói ứng dụng. Phương pháp này bị tước đi và làm cho thử nghiệm thất bại. Nhưng tôi không muốn cấu hình proguard để giữ tất cả GSOn vì giới hạn tập tin dex, nhưng cũng không muốn liệt kê tất cả các phương thức một cách riêng biệt. Có cách nào để nói với rpguard để xem xét các bài kiểm tra đơn vị như là điểm nhập mã nguồn?Thử nghiệm đơn vị Android với proguard được bật
Trả lời
Tôi đã giải quyết vấn đề này trong bản dựng của mình bằng cách thêm "dev" buildType
nơi tôi bật trình bảo vệ, nhưng định cấu hình để giữ tất cả mã trong gói của riêng tôi và một số lớp thư viện cụ thể xảy ra chỉ kiểm tra. Tôi cũng vô hiệu hóa obfuscation trong dev buildType
để nó có thể được gỡ rối từ một IDE.
Để gỡ lỗi và phát hành các bản dựng, tôi sử dụng các cài đặt bảo vệ "thực" của tôi, bao gồm cả làm xáo trộn và tối ưu hóa.
Kiểm tra thiết bị đo đạc (và các thiết bị khác?) Không sử dụng cùng một tệp bảo vệ như là gói gỡ lỗi/phát hành của bạn. Bạn có thể thử đặt tùy chọn testProguardFile
bên trong khối gỡ lỗi và phát hành. Tệp proguard cụ thể kiểm tra này có thể rất dễ chấp nhận vì nó không được sử dụng cho các gói gỡ lỗi/phát hành.
Đây là những gì tôi đã làm.
Thêm tệp quy tắc bảo vệ tùy chỉnh.
/project/app/proguard-test-rules.pro
# Proguard rules that are applied to your test apk/code.
-ignorewarnings
-keepattributes *Annotation*
-dontnote junit.framework.**
-dontnote junit.runner.**
-dontwarn android.test.**
-dontwarn android.support.test.**
-dontwarn org.junit.**
-dontwarn org.hamcrest.**
-dontwarn com.squareup.javawriter.JavaWriter
# Uncomment this if you use Mockito
#-dontwarn org.mockito.**
Các thêm dòng sau vào build.gradle của bạn cho ứng dụng của bạn. Để sử dụng tệp proguard khi thử nghiệm.
/project/app/build.gradle
android {
debug {
minifyEnabled true
testProguardFile 'proguard-test-rules.pro'
}
}
Không ai trong số các câu trả lời ở trên đã làm các trick cho tôi. Tôi có hai vấn đề: Tôi cũng cần sử dụng tệp proguard mặc định để thử nghiệm và tệp proguard mặc định của tôi sai.
Để sử dụng các tập tin Proguard mặc định, ngoài việc riêng của bạn:
android { debug { minifyEnabled true testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro' } }
File Proguard mặc định (và tất cả các thư mục
tools/proguard
) là rõ ràng not replaced by default khi bạn cập nhật các công cụ SDK qua Android studio. Máy của tôi đang sử dụng tệp cấu hình lỗi thời, đã gây ra sự cố proguard lạ. Để cập nhật cấu hình mặc định của trình bảo vệ, hãy thay thế ~/Library/Android/Sdk/tools/proguard/proguard-android.txt bằng this.
Chỉ cần đi qua giải quyết vấn đề thứ hai. Tôi nghĩ rằng nó đáng nói đến như là phiên bản 2.2.0 của plugin android cho gradle, 'proguard-android.txt' không còn được sử dụng và thay vào đó các quy tắc mặc định được tạo tại thời gian xây dựng. Nguồn: [Plugin Android cho Gradle, bản sửa đổi 2.2.0] (https://developer.android.com/studio/releases/gradle-plugin.html) – aProperFox
- 1. Thử nghiệm Đơn vị Android
- 2. Thử nghiệm đơn vị trên Android NDK
- 3. Thử nghiệm đơn vị với số đơn
- 4. Thử nghiệm đơn vị với bóng chuyền Android
- 5. Thử nghiệm đơn vị với Spring Security
- 6. Đơn vị thử nghiệm Jersey với Mocks
- 7. Symfony2: Thử nghiệm đơn vị với sqlite
- 8. Mã thử nghiệm đơn vị với WatchService
- 9. Đơn vị thử nghiệm chậm với Cobertura
- 10. Đơn vị thử nghiệm IList với CollectionAssert
- 11. Thử nghiệm đơn vị với ServiceLocator
- 12. Thử nghiệm đơn vị với Oracle
- 13. Đơn vị thử nghiệm $ modal với Jasmine
- 14. mùi thử nghiệm đơn vị
- 15. Icefaces thử nghiệm đơn vị
- 16. Thử nghiệm Đơn vị XNA
- 17. Thử nghiệm đơn vị sau khi thử nghiệm
- 18. Thử nghiệm Đơn vị Android Studio SQLiteDataBase is null
- 19. Thử nghiệm đơn vị thử nghiệm Javascript Sandbox
- 20. Thử nghiệm Đơn vị Android: Gói/Bưu kiện
- 21. Chức năng thử nghiệm đơn vị riêng tư trong Android
- 22. Thử nghiệm đơn vị cơ sở dữ liệu SQLite Android
- 23. Đơn vị thử nghiệm Ứng dụng Firemonkey
- 24. Thử nghiệm đơn vị sơ bộ
- 25. Tích hợp vs Thử nghiệm Đơn vị
- 26. Nondeterminism trong thử nghiệm đơn vị
- 27. Quy tắc thử nghiệm đơn vị
- 28. Thử nghiệm đơn vị trong Ember.js
- 29. Mẫu C++ thử nghiệm đơn vị
- 30. Thử nghiệm đơn vị hộp đen
bạn có thể chia sẻ tệp bảo vệ tương tự không? –
Cảm ơn bạn, điều đó sẽ hoạt động. Tuy nhiên, chúng tôi có một số hương vị và mô-đun và có một loại xây dựng cho tất cả chúng là một loại lộn xộn. Các quy tắc bảo vệ tùy chỉnh từ câu trả lời khác đã giúp. – Gaket