我正在使用android-mapviewballoons(https://github.com/jgilfelt/android-mapviewballoons)开发一个项目。我使用一个名为CustomItemizedOverlay的自定义类扩展了com.readystatesoftware.mapviewballolo.BalloonItemizedOverlay,在这个类中我重新定义了onBalloonTap(int index)。
当我在不使用proguard的情况下构建已签名的APK时,一切正常:应用程序运行,我可以点击地图,查看气球,点击气球,然后通过onBalloonTap,获取有关我一直以来的更多信息点击。 当我使用proguard激活时,应用程序运行完美除了气球:我可以点击地图,看到气球,但当我点击它时没有任何反应。就像气球本身是透明的一样,如果它背后有东西它会被选中,就像气球不存在一样。
我尝试逐个删除proguard.cfg中的功能,但无法找到正在发生的事情。我尝试使用-dontoptimize,但没有用。我认为问题可能来自混淆过程,但我无法避免混淆,因为如果我把-dontobfuscate指令构建失败并带有“Dalvik Error 1”消息。
在我的proguard文件的“library”部分,我有: (...)
-libraryjars /home/marco/workspace/../Scrivania/android-sdk-linux/add-ons/addon-google_apis-google_inc_-7/libs/maps.jar
-libraryjars /home/marco/workspace/android-mapviewballoons/bin/android-mapviewballoons.jar
在“保持”部分,我(其中包括):
-keep public class * extends com.google.android.maps.MapActivity
-keep class com.posteitaliane.postemobile.CoverFlow
-keepclassmembers public class com.readystatesoftware.mapviewballoons.BalloonItemizedOverlay.** {
public static * ;
}
-keepclassmembers public class com.posteitaliane.postemobile.CustomItemizedOverlay.** {
public static * ;
}
-keepclassmembers public class com.readystatesoftware.mapviewballoons.** {
public static * ;
}
有人可以帮帮我吗?我只是不知道如何创建一个签名版本而不破坏proguard或丢失这个mapBalloon功能。
提前谢谢
编辑2012/03/19 我通过在项目中导入更高版本的mapviewballoons并修复代码以适应mapviewballoons本身的新功能来解决了这个问题。见https://github.com/jgilfelt/android-mapviewballoons/issues/16