Я разрабатываю проект с использованием android-mapviewballoons (https://github.com/jgilfelt/android-mapviewballoons). Я расширил com.readystatesoftware.mapviewballoons.BalloonItemizedOverlay с помощью настраиваемого класса CustomItemizedOverlay, и в этом классе я переопределил onBalloonTap (int index).
Когда я создаю подписанный APK без использования ProGuard, все работает нормально: приложение запускается, я могу нажать на карту, увидеть Balloon, нажать на воздушный шар и через onBalloonTap получить дополнительную информацию о точке, в которой я был нажав на.
Когда я строю с активным Proguard, приложение работает безупречно, за исключением воздушного шара: я могу нажать на карту, увидеть воздушный шар, но когда я нажимаю на него, ничего не происходит. Это так же, как сам шар был прозрачным, если за ним что-то было выделено, так же, как и там не было.
Я пытался удалить функции из proguard.cfg одну за другой, но не смог найти, что происходит. Я попытался с -dontoptimize, но не сработало. Я думаю, что, возможно, проблема связана с процессом запутывания, но я не могу избежать запутывания, потому что если я добавлю директиву -dontobfuscate, произойдет сбой с сообщением «Ошибка Dalvik 1».
В разделе "библиотека" моего файла proguard у меня есть:
(...)
-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