我有一个使用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.** { *; }
答案 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使用自己的日志方法......也被删除了。 如果保存日志,一切都会正常。
答复的答案。