我正在开发一个JellyBean设备上的应用程序,我喜欢Android studio的新即时运行功能。但是,在JellyBean设备上使用它需要一个非多索引的应用程序。我已经设法通过删除一些依赖项来减少dex大小。
问题是我真的想省略log4j库,这是一个让我超过dex限制的库,但是我需要使用另一个库(gpxParser)来调用log4j并在运行时崩溃这个错误
引起:java.lang.NoClassDefFoundError:org.apache.log4j.Logger
我尝试了一些Proguard,但无济于事。应用程序运行正常,没有包含log4j,直到我从使用它的库中拨打电话。 我在互联网上搜索过但我找不到任何办法。
答案 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的其他类。