2016-02-05 19 views
6

Tôi đang sử dụng plugin proguard gradle trong intellij (không dành cho dự án android), chỉ định thư viện của tôi như java home, jars đầu vào như jarname.jar và lọ đầu ra như jarname.pro.jar. Tôi có một tập tin proguard.txt cho cấu hình, với tất cả mọi thứ nhưng phương pháp chính giữ tùy chọn loại trừ. Proguard ném lỗi sau:Proguard ném IOException cho mục nhập zip trùng lặp mặc dù chỉ có một mục nhập hiện tại

java.io.IOException: Can't write [/Users/user/src/name/build/libs/jarname.pro.jar] (Can't read [/Users/user/src/name/hci/build/libs/jarname.jar] (Duplicate zip entry [c/a/a/a.class == jarname.jar:com/google/gson/ExclusionStrategy.class]))

Theo số source from the proguard website, tôi có mục nhập trùng lặp trong jarname.jar. Kiểm tra thủ công jarname.jar không hiển thị mục nhập trùng lặp nào. Tôi nên tìm cách sửa lỗi này ở đâu?

+0

Hãy để tôi thu hẹp điều này xuống một chút. Liệu plugin proguard gradle có đầu vào từ bất cứ điều gì khác ngoài việc tham chiếu của tôi về -libraryjars và inputjars? – user1982116

+0

Bạn đã tìm thấy giải pháp nào chưa? Tôi đang gặp vấn đề tương tự. – elhm

Trả lời

0

Check-out giải pháp này/hack: https://stackoverflow.com/a/39584838/1919549

Phỏng cho lỗi lầm của mình, thêm video này vào build.gradle:

import com.android.build.gradle.internal.pipeline.TransformTask 

def deleteDuplicateJniFiles() { 
    def files = fileTree("/Users/user/src/name/hci/build/libs/") { 
     include "**/jarname.jar" 
    } 
    files.each { it.delete() } 
} 

tasks.withType(TransformTask) { pkgTask -> 
    pkgTask.doFirst { deleteDuplicateJniFiles() } 
} 

Lưu ý lệnh này không thực sự xóa những lọ (lỗi trùng lặp của bạn ngụ ý chúng sẽ được thêm vào lại) - chỉ một khối cấu hình/loại trừ sẽ làm điều đó. Tôi không biết tại sao chúng được đưa vào kể từ đó, trong dự án của tôi, chúng cũng không bị trùng lặp khi kiểm tra ứng dụng gradle: phụ thuộc.

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