После некоторых проб и ошибок мы обнаружили, что проблема была в самом пакете apk . В процессе сборки мы добавляем несколько файлов в наше приложение apk сразу после завершения сборки, но до подписания и выравнивания файла apk . Первоначально мы извлекали и переупаковывали apk с помощью нашего собственного инструмента (который написан на Java и, таким образом, использовали реализацию Java Zip ).
Мы заметили, что после переупаковки apk с помощью нашего инструмента мы смогли уменьшить размер apk до половинного размера исходного apk созданный сборкой Android .
Как мы выяснили, эта переупаковка была причиной нашей проблемы!
Как показали наши эксперименты, если перепакованный apk был меньше ~ 1.6 Мб , все устройства могли читать и работать с недавно перепакованным * APK 1038 *. Однако, если размер apk превысил ~ 1.6 Мб , устройства (и эмулятор), упомянутые в этом посте, не могли правильно читать или работать с приложением apk .
Я искал некоторую спецификацию для формата файла apk (что по сути является jar), но я не нашел ничего, что могло бы объяснить это очень странное поведение. Так может кто-нибудь объяснить, почему происходит это странное поведение и каковы точные причины?
Примечание: отныне мы используем инструмент Android aapt для вставки наших файлов в пакет, вместо инструмента, который мы использовали, и конечного apk может быть прочитано всеми устройствами