2016-02-05 7 views
6

मैं इंटेलिज (एक एंड्रॉइड प्रोजेक्ट के लिए नहीं) के भीतर ग्रेबल प्रोगोगर्ड प्लगइन का उपयोग कर रहा हूं, मेरे पुस्तकालयों को जावा घर के रूप में निर्दिष्ट करना, इनपुट जार jarname.jar के रूप में निर्दिष्ट करना, और आउटपुट जार jarname.pro.jar के रूप में। मेरे पास कॉन्फ़िगरेशन के लिए proguard.txt फ़ाइल है, सब कुछ के साथ मुख्य विधि विकल्प को बाहर रखा गया है। ProGuard निम्न त्रुटि फेंकता है:प्रोजेवार्ड डुप्लिकेट ज़िप प्रविष्टि के लिए IOException फेंकने के बावजूद केवल एक प्रविष्टि मौजूदा

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]))

इस source from the proguard website के अनुसार, मैं jarname.jar में डुप्लिकेट प्रविष्टियों की है। मैन्युअल रूप से jarname.jar की जांच करना कोई डुप्लिकेट प्रविष्टियां नहीं दिखाता है। मुझे इसे ठीक करने के लिए कहां देखना चाहिए? इस समाधान/हैक

+0

मुझे इसे थोड़ा कम करने दें। क्या प्रोग्रार्ड ग्रेडल प्लगइन मेरे पुस्तकालय और इनपुटजर्स के संदर्भ के अलावा किसी अन्य चीज़ से इनपुट लेता है? – user1982116

+0

क्या आपको कोई समाधान मिला है? मुझे एक ही समस्या का सामना करना पड़ रहा है। – elhm

उत्तर

0

चेक आउट:

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() } 
} 

नोट इस आदेश वास्तव में उन जार को नहीं हटाता है (अपने दोहराव त्रुटि का अर्थ है: https://stackoverflow.com/a/39584838/1919549

अपने त्रुटि के लिए अनुकूलित, इस build.gradle में जोड़ें उन्हें वापस जोड़ा जाएगा) - केवल एक कॉन्फ़िगरेशन/ब्लॉक को बाहर कर देगा। मुझे नहीं पता कि वे मेरे प्रोजेक्ट में क्यों शामिल हैं, उन्हें ग्रेले ऐप के निरीक्षण पर डुप्लिकेट भी नहीं किया गया था: निर्भरताएं।

संबंधित मुद्दे