如何使用没有log4j依赖的Android库?

时间:2016-05-18 15:08:40

标签: java android log4j dex

我正在开发一个JellyBean设备上的应用程序,我喜欢Android studio的新即时运行功能。但是,在JellyBean设备上使用它需要一个非多索引的应用程序。我已经设法通过删除一些依赖项来减少dex大小。

问题是我真的想省略log4j库,这是一个让我超过dex限制的库,但是我需要使用另一个库(gpxParser)来调用log4j并在运行时崩溃这个错误

  

引起:java.lang.NoClassDefFoundError:org.apache.log4j.Logger

我尝试了一些Proguard,但无济于事。应用程序运行正常,没有包含log4j,直到我从使用它的库中拨打电话。 我在互联网上搜索过但我找不到任何办法。

2 个答案:

答案 0 :(得分:0)

有一个文件gpxparser.properties和一个班级AndroidLogger

看看你是否可以将这两者结合在一起。

答案 1 :(得分:0)

您可以配置Proguard来删除对日志框架(如Log4j)的调用。由于Proguard在字节代码级别上运行,因此您是否拥有库的源代码并不重要。

使用Proguard的assumenosideeffects来标记您认为可以删除的类和方法,而不会产生任何负面影响。

Android Log系统的Stackoverflow上有一个示例:Removing Log call using proguard

您可以调整此示例并将其更改为匹配org.apache.log4j.Logger以及来自log4j的其他类。