2010-12-24 13 views
8

मुझे प्रोगुआर्ड और बाहरी पुस्तकालयों के उपयोग में समस्या है। मेरी परियोजना त्रुटियों के बिना संकलित करती है और वास्तविक डिवाइस पर सफलतापूर्वक चलती है, लेकिन केवल जब मैं इसे ग्रहण से चलाता हूं। भाग गया "एंड्रॉयड अद्यतन परियोजना -p ./" (एंड्रॉइड) प्रोगार्ड गतिशील रूप से संदर्भित क्लास javax.swing नहीं ढूंढ सकता। *

proguard.dir=/home/stoned/android-sdk-linux_86/proguard4.5.1/lib 
proguard.config=/home/stoned/workspace/Fidoo/proguard.cfg 

जोड़ा जब मैं "चींटी रिलीज" चलाने मैं निम्नलिखित:

अब मैं एक अस्पष्ट रिलीज़ संस्करण बनाने के लिए तो मैं निम्नलिखित किया चाहते हैं
... skipped many irrelevant messages ... 

-obfuscate: 
    [mkdir] Created dir: /home/stoned/workspace/Fidoo/bin/proguard 
     [jar] Building jar: /home/stoned/workspace/Fidoo/bin/proguard/original.jar 
[proguard] ProGuard, version 4.4 
[proguard] ProGuard is released under the GNU General Public License. The authors of all 
[proguard] programs or plugins that link to it (com.android.ant, ...) therefore 
[proguard] must ensure that these programs carry the GNU General Public License as well. 
[proguard] Reading input... 
[proguard] Reading program jar [/home/stoned/workspace/Fidoo/bin/proguard/original.jar] 
[proguard] Reading program jar [/home/stoned/workspace/Fidoo/libs/exapi-1.16.jar] 
[proguard] Reading program jar [/home/stoned/workspace/Fidoo/libs/libthrift.jar] 
[proguard] Reading program jar [/home/stoned/workspace/Fidoo/libs/log4j-1.2.14.jar] 
[proguard] Reading library jar [/home/stoned/android-sdk-linux_86/platforms/android-4/android.jar] 
[proguard] Initializing... 
[proguard] Warning: org.apache.log4j.lf5.viewer.categoryexplorer.CategoryNodeRenderer: can't find superclass or interface javax.swing.tree.DefaultTreeCellRenderer 
[proguard] Warning: org.apache.log4j.lf5.viewer.categoryexplorer.TreeModelAdapter: can't find superclass or interface javax.swing.event.TreeModelListener 
[proguard] Warning: org.apache.log4j.lf5.viewer.LogBrokerMonitor$32: can't find superclass or interface java.awt.event.ActionListener 
[proguard] Warning: org.apache.log4j.lf5.viewer.LogBrokerMonitor$31: can't find superclass or interface java.awt.event.ActionListener 

... skipped many lines of similar messages ... 

[proguard] Note: org.apache.log4j.lf5.viewer.categoryexplorer.CategoryAbstractCellEditor: can't find dynamically referenced class javax.swing.event.CellEditorListener 
[proguard] Note: org.apache.log4j.lf5.viewer.categoryexplorer.CategoryAbstractCellEditor: can't find dynamically referenced class javax.swing.event.CellEditorListener 
[proguard] Note: org.apache.log4j.lf5.viewer.categoryexplorer.CategoryAbstractCellEditor: can't find dynamically referenced class javax.swing.event.CellEditorListener 
[proguard] Note: org.apache.log4j.lf5.viewer.categoryexplorer.CategoryAbstractCellEditor: can't find dynamically referenced class javax.swing.event.CellEditorListener 
[proguard] Note: org.apache.log4j.spi.LocationInfo: can't find dynamically referenced class com.ibm.uvm.tools.DebugSupport 
[proguard] Note: there were 5 unresolved dynamic references to classes or interfaces. 
[proguard]  You should check if you need to specify additional program jars. 
[proguard] Warning: there were 1656 unresolved references to classes or interfaces. 
[proguard]   You may need to specify additional library jars (using '-libraryjars'), 
[proguard]   or perhaps the '-dontskipnonpubliclibraryclasses' option. 

जाहिर है, javax.swing। एंड्रॉइड एप्लिकेशन, साथ ही log4j कक्षाओं में कक्षाओं की आवश्यकता नहीं है। मैं उन संदर्भित पुस्तकालयों की खोज न करने के लिए प्रोजेगार्ड कैसे बना सकता हूं?

+4

'/ home/stoned /' हुह? – Nick

उत्तर

2

ठीक है, आपने log4j को अपने क्लासपाथ (libs/log4j-1.2.14.jar) में डाल दिया है। यही कारण है कि log4j शामिल है। यह javax.swing के संदर्भ में भी खींच रहा है।

+0

मेरी प्रोजेक्ट बाहरी लाइब्रेरी का उपयोग करती है, जो libthrift.jar का उपयोग करती है, जो बदले में log4j का उपयोग करती है। तो मैं सिर्फ log4j को हटा नहीं सकता। इसके अलावा - कंपाइलर मौजूदा libs की शिकायत नहीं करता है (मुझे विश्वास है क्योंकि वे कोड में उपयोग नहीं किए जाते हैं), लेकिन प्रोजेगार्ड – Renat

+0

देखता है। फिर भी, क्या यह एप्लिकेशन के रनटाइम व्यवहार को प्रभावित करता है (हालांकि, प्रोग्राम संभवतः कोड को अनुकूलित करने में सक्षम नहीं हो सकता है)? –

+0

यह एपीके बिल्कुल नहीं बनाता है। बस खरीदा गया FAILED /home/stoned/android-sdk-linux_86/tools/ant/main_rules.xml:430: कृपया उपरोक्त चेतावनियों को पहले सही करें। – Renat

19

proguard.cfg लिए अगर वहाँ स्विंग निर्भरता के बिना log4j का कोई संस्करण है

-dontwarn 
-dontnote 

जोड़ा है, और आप आसानी से में जार पर एक फिल्टर जोड़ सकते हैं यदि प्रक्रिया का निर्माण, साफ समाधान proguard.cfg में सिर्फ इन विशेष चेतावनी बंद करने के लिए है:

-dontwarn org.apache.log4j.lf5.viewer.** 
-dontnote org.apache.log4j.lf5.viewer.** 

फिर आप अभी भी किसी अन्य चेतावनी संगत हो सकती मिलेगा।

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