android-mapviewballoons, onBalloonTap не работает, если я собираю с ProGuard - PullRequest
1 голос
/ 09 февраля 2012

Я разрабатываю проект с использованием 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

...