2010-12-24 17 views
8

Proguardに問題があり、外部ライブラリを使用しています。私のプロジェクトはエラーなしでコンパイルされ、実際のデバイスの で正常に実行されますが、Eclipseから実行した場合のみです。次 は、私が「アリリリース」を実行すると が (Android)Proguardが動的に参照するクラスjavax.swingを見つけることができません。*

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

を追加した「アンドロイド更新プロジェクト-pを./」走った私が取得:

今、私は次のようでしたので、難読化リリースバージョンを作りたいです
... 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。 Androidアプリケーションやlog4jクラスではクラスは必要ありません。どのようにして、これらの参照されたライブラリを検索しないようにproguardを設定しますか?

+4

'/ home/stoned /' huh? – Nick

答えて

2

まあ、log4jをクラスパス(libs/log4j-1.2.14.jar)に置きます。そのため、log4jが含まれています。また、javax.swingを参照しています。

+0

私のプロジェクトではlibthrift.jarを使用する外部ライブラリが使用され、libthrift.jarはlog4jを使用します。だから私は単にlog4jを削除することはできません。さらに、コンパイラは存在しないライブラリ(私はそれらがコードで使用されていないためだと信じています)に文句を言っていませんが、プロガードは – Renat

+0

です。それでも、これはアプリケーションの実行時の動作にまったく影響しません(ただし、Proguardは完全にコードを最適化できない場合があります)。 –

+0

apkはまったく作成されません。ちょうどBUILD FAILEDと書いてください /home/stoned/android-sdk-linux_86/tools/ant/main_rules.xml:430:上記の警告を最初に修正してください。 – Renat

6

ネヴァーマインドは、ちょうどスイング依存せずにlog4jのバージョンが存在しない場合

19

をproguard.cfgし、あなたが簡単にjarファイルにフィルタを追加することができない場合

-dontwarn 
-dontnote 

を追加しましたプロセスを構築し、クリーンなソリューションがproguard.cfgでちょうどこれらの特定の警告をオフにすることです:

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

あなたはその後、まだ関連する可能性のある他の警告を取得します。

関連する問題