离线地图在android上的proguard之后冻结应用程序

时间:2014-07-17 14:17:12

标签: android proguard openstreetmap nutiteq mapsforge

我有一个使用nutiteq OSM地图的Android应用程序,带有mapsforge渲染器,以及存储在assets文件夹中的地图文件。 它在没有proguard的情况下完美运行,但在混淆之后,应用程序冻结,没有任何日志信息。

在proguard.cfg中:

-keep class com.nutiteq。** {; } -keep class org.mapsforge。* {*; }

但即使我保留了我的所有代码,也没有帮助。

有什么想法吗?

由于

Szoszi

更新

没有无关信息。

proguard.cfg:

-printmapping proguard.map

-keepattributes SourceFile,LineNumberTable,*Annotation*,Signature

#-optimizationpasses 5
-dontpreverify

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers

-libraryjars /libs/mapsforge-map-0.3.1-with-dependencies.jar
-libraryjars /libs/nineoldandroids-2.4.0.jar
-libraryjars /libs/nutiteq-3d-sdk-2.3.0.jar

-verbose

#Libraries
-keep class com.google.protobuf.** { *; }
-keep class com.nutiteq.** { *; }
-keep class org.mapsforge.** { *; }
-keep class mypackage.util.MapsforgeRasterDataSource.** { *; }

2 个答案:

答案 0 :(得分:1)

您是否正在使用nutiteq和mapsforge或jar文件的源代码?如果您正在使用jar文件,则可以将它们定义为proguard中的libraryjar而不是injar。一个例子:

proguard.cfg
-injars build\myproject.jar
-injars build\myOtherProject.jar
-outjars proguard\obfuscated
-libraryjars nutiteq.jar
-libraryjars mapsforge.jar
...
...
...

这样,proguard可以跟踪你的代码对你的第三方库所做的引用,但不会试图不必要地对它们进行模糊处理。

答案 1 :(得分:1)

最后,解决方案已经找到了。 Proguard从代码中删除所有日志,但是nutiteq使用自己的日志方法......也被删除了。 如果保存日志,一切都会正常。

答复的答案。