3

次のエラーが表示されます。

Unexpected error while performing partial evaluation:
Class       = [org/apache/log4j/chainsaw/Main]
Method      = [<init>()V]
Exception   = [java.lang.IllegalArgumentException] (Can't find any super classes of [org/apache/log4j/chainsaw/LoadXMLAction] (not even immediate super class [javax/swing/AbstractAction]))
Error: Can't find any super classes of [org/apache/log4j/chainsaw/LoadXMLAction] (not even immediate super class [javax/swing/AbstractAction])

私のプロガード構成の一部:

-dontwarn javax.jms.**
-dontwarn com.sun.jdmk.comm.**
-dontwarn android.support.v4.**
-dontwarn com.google.api.client.googleapis.extensions.**
-dontwarn org.apache.harmony.**
-dontwarn com.sun.**
-dontwarn org.simpleframework.**
-dontwarn com.google.android.gms.**
-dontwarn org.apache.log4j.lf5.viewer.**
-dontwarn java.beans.**
-dontwarn org.apache.log4j.**

-libraryjars 'D:\Workspace\android\libs\acra-4.5.0.jar'
-libraryjars 'D:\Workspace\android\libs\activation.jar'
-libraryjars 'D:\Workspace\android\libs\additionnal.jar'
-libraryjars 'D:\Workspace\android\libs\android-logging-log4j-1.0.3.jar'
-libraryjars 'D:\Workspace\android\libs\android-support-v4.jar'
-libraryjars 'D:\Workspace\android\libs\annotations.jar'
-libraryjars 'D:\Workspace\android\libs\google-api-client-android-1.12.0-beta.jar'
-libraryjars 'D:\Workspace\android\libs\jtar-1.1.jar'
-libraryjars 'D:\Workspace\android\libs\log4j-1.2.15.jar'
-libraryjars 'D:\Workspace\android\libs\mail.jar'
-libraryjars 'D:\Workspace\android\libs\simple-xml-2.6.9.jar'

log4j のライブラリはあるのですが、何が問題なのでしょうか?

アップデート

私が発見したように、問題は最適化中に発生します。縮小と難読化が機能しています。

4

2 に答える 2

3

Android で Log4J を使用する上で迅速な解決策が必要な人にとって、Krivers の更新は実際にヒントとして役立ちました。ProGuard-dontoptimize構成で設定すると最適化がオフになり、エラーが回避されます (ただし、これは回避策としてのみ考慮されるべきです)。

実際、Android ツール プロジェクト サイトでも、ProGuard の最適化をオフにすることを提案していました。

Dalvik は独自の最適化の多くを実行し、ProGuard によって実行される最適化の一部は Dalvik と互換性がないため、特定が難しいバグを回避するために (また、正味のパフォーマンスの向上は通常小さいため)、既定の構成では最適化がオフになっています。 .

于 2015-04-22T09:44:20.207 に答える
2

クラス org.apache.log4j.chainsaw.LoadXMLAction は、クラス javax.swing.AbstractAction を拡張します。この後者のクラスは、Android には存在しない Swing の一部です。したがって、LoadXMLAction を実際に使用することはできません。さらに、ProGuard は、完全なクラス階層がないと、このクラスを適切に分析できません。

解決策: LoadXMLAction をアプリケーション ライブラリに追加しないようにする必要があります。対応する Apache jar を libs ディレクトリに配置しないか、ProGuardinjarsオプションからクラス (および類似のクラス) を除外します (標準のビルド プロセスではより困難です)。またはjarからクラスを削除します。

于 2013-05-23T16:51:45.497 に答える