Подписанное приложение для Android ведет себя иначе, чем при запуске вручную на устройстве из Eclipse - PullRequest
3 голосов
/ 11 октября 2011

Я чувствую себя не в своей тарелке после работы над этой проблемой в прошлом веке.Заранее благодарю за помощь!

Что случилось: я разрабатываю приложение, представляющее собой игру, в которой используется игровое действие, использующее CountDownTimers для временных игровых раундов.Приостановка, выход из приложения из этого действия (посредством нажатия кнопки питания, кнопки «Домой» и т. Д.) Работает нормально при тестировании на моем Samsung Galaxy Tab 7 ", при этом приложение Eclipse без знака запускается до его подписания.

В восторге от того, что я закончил свою работу, я иду вперед и подписываю чертовски apk в CMD. Я тестирую подписанное приложение, просто чтобы убедиться, что оно работает нормально, копируя + вставляя подписанный .apk в SD-карту той же Galaxy Tab изатем установить его после удаления всех старых данных приложения, запущенного из Eclipse, но, конечно, он не работает.

В число неполадок входит действие, которое не приостанавливается, когда я нажимаю кнопку питания, когда выполняется таймерзапустить (после того, как я снова включил устройство, я обнаружил, что таймер работал, когда экран был выключен и все еще работает, и мой диалог с паузой игры не найден), действие закрывается, когда я нажимаю клавишу возврата домой(после того, как я нажму клавишу «Домой» и снова открою приложение, приложение перезапустится из вводнойвсплывающий экран приложения) и, наконец, когда я ставлю игру на полпути, выключаю и нахожу на экране, нажимаю кнопку возобновить в диалоговом окне паузы игры - игровой таймер переходит с 18.42 с прямо на 0.00 и продолжается оттуда вследующее задание.

Хорошо, так что это намного больше история, чем вопрос о коде - но вот технический вопрос - почему мое подписанное приложение ведет себя не так, как неподписанное, из которого запускалосьЗатмение?Я не даю здесь никакого кода того, как я делал эти вещи, так как это должно быть неуместно, учитывая, что они работают в первую очередь (например, при запуске приложения на моем устройстве во время разработки в Eclipse).

Так почти там ... УРГХ

1 Ответ

1 голос
/ 11 октября 2011

Не уверен, что это действительно ваша проблема ... но наиболее распространенная причина того, что подписанное приложение не работает, когда работает версия без знака / Eclipse, состоит в том, что создание подписанного приложения обычно включает в себя этап обфускации / оптимизации Proguard.

Одним из последствий оптимизации Proguard является то, что некоторые классы / методы, на которые есть ссылки в ваших XML-макетах или использующих отражение, могут больше не иметь одно и то же имя (или могли быть оптимизированы вообще).

Самый простой / быстрый способ проверить это - посмотреть трассировку logcat - там будет ClassNotFoundException или MethodNotFoundException, или что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...