Подтвердить что ты не робот

Android подписали APK, показывая неполную

Я подписал приложение, используя Eclipse Export Wizard. Когда я опубликовал это, пользователи начали жаловаться, что приложение ведет себя некорректно. (В принципе, APK не имел необходимых изображений и звука и, следовательно, показывал неправильное поведение).

Некоторая информация о приложении и подписи, которые я пробовал.

  • У меня есть облегченная версия и платная версия. Оба подписываются с той же ключевой парой. Версия Lite работает отлично, и полная версия дает ошибку.
  • Я попытался снова экспортировать подписанные пакеты и попытался установить их прямо на устройство (вместо загрузки на рынок). Такое же поведение (например, приложения Lite работают корректно и не соответствуют действительности)
  • И полная версия, и версия Lite используют общую библиотеку (база кода идентична. Различия в следующем.
  • Полная версия имеет в 5 раз больше ресурсов версии lite. Lite версия apk составляет ~ 2.6MB, а полная версия ~ 10.4MB. В полной версии у меня есть 170 изображений (в основном png размером 5-10 КБ) и ~ 55 мp3 файлов. В версии Lite у меня есть 45 изображений и 15 mp3
  • Полная версия имеет LVL (Лицензионная проверка) и Lite Version не делает. Как только LVL передается, код просто вызывает класс библиотеки
  • Если я использую Eclipse для создания и развертывания полной версии на телефоне (или эмуляторе), он работает правильно. (Я предполагаю, что эта сборка и развертывание будет использовать отладочный ключ для подписания)
  • У меня есть обработка ошибок в коде, чтобы показать код, чтобы показать фиктивный (знак вопроса), если ресурс отсутствует. Все мои изображения заменяются этим вопросительным знаком. Просто добавьте.. Этот dummypic находится в Библиотеке, а все остальные ресурсы (изображения) находятся в полной версии.
  • Я проверил ресурсы, переименовав подписанный файл apk в .zip(спасибо NickT за предложение такого подхода). Все файлы ресурсов (аудио и изображения) присутствуют в zip файле.

Любая помощь приветствуется. Приложение уже находится на рынке и, следовательно, хочет свести к минимуму неблагоприятное воздействие.

Удалено LVL. Еще одна ошибка

Пробовал комментировать код LVL и прямо называть намерение. Еще одна ошибка. Комментируя LVL, база кода для Lite и полной версии идентична. Только количество повторных вызовов отличается. Полная версия имеет все ресурсы Lite Version + ~ 5 раз в ресурсе.

Обновление Так я временно его исправил. Я удалил проект библиотеки и переместил все классы и ресурсы в проект внедрения (полная версия). Теперь он работает.

Как сказано, это только временное исправление. Мне все еще нужно знать, как я могу это исправить с помощью библиотеки. Else мне придется создавать много дублирования кода.

4b9b3361

Ответ 1

Моя ставка будет заключаться в том, что она связана с разрешениями. Приложение, которое устанавливается первым, будет иметь права на чтение и запись в эту папку, а другое не будет.

Попробуйте использовать ContentProvider, чтобы сделать ваши изображения доступными для обоих приложений!

Ответ 2

Знак не должен влиять на ваш код. Я думаю, что проблема должна быть в исходном коде Платной версии.

Вы тестируете в эмуляторе? от затмения? Вы также можете протестировать подписанный apk в эмуляторе через "adb install application-signed.apk".

Ответ 3

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

Ответ 4

Я не уверен, но я думаю, что ни одно приложение с одним и тем же именем пакета не может существовать в одном устройстве. попробуйте установить приложения на двух разных устройствах.

Ответ 5

Два предложения:

1) У вас есть proguard? Если да, попробуйте отключить его и проверить. Если это работает, вам может потребоваться обновить proguard.cfg(возможно, с некоторым классом -keep public)

2) Удалите свою R.java вручную и перекомпилируйте полную версию!

Ответ 6

Я столкнулся с этой проблемой с проектами Android, используя другие проекты Android Library. Похоже, что AAPT (или часть ADT затмения) иногда терпит неудачу при создании идентификаторов R файлов (поэтому ресурсы присутствуют, но идентификатор неверен).

Что быстро устранило проблему для меня: закройте проект "master" и снова откройте его, указав параметр Build Automatically или сделайте чистую перезагрузку в этом проекте. Следующий экспортированный APK не должен иметь проблемы с ресурсами, не найденными.

Ответ 7

Возможно, вы ввели флаг отладки в файл манифеста?