Как сжать файл .APK, скажем, Winrar (.rar), а затем преобразовать его обратно в .APK?

Как вы все знаете, недостатком приложений Xamarin Forms является их огромный размер. Хотя я использовал различные сценарии уменьшения размера приложения, такие как связывание и использование Proguard, размер моего Android APK все еще очень велик (около 30 МБ). Дело в том, что когда я сжал этот apk Winrar, размер стал около 11 МБ. Я переименовал этот сжатый файл .rar в файл .apk, но когда я попытался установить этот файл, я получил сообщение: «При синтаксическом анализе пакета возникла проблема».

Итак, мой вопрос: существует ли какой-либо механизм для использования сжатия такого инструмента, как winrar, для файла APK, чтобы его можно было установить на любое устройство Android?


person VahidShir    schedule 01.05.2018    source источник
comment
Если вы собираетесь опубликовать его, например, в магазине Google Play, имейте в виду, что он имеет механизм автоматического сжатия, который обрабатывается приложением Play на клиентских устройствах. Вы также можете подумать о проверке опции Generate on package per selected ABI.   -  person Diego Rafael Souza    schedule 01.05.2018
comment
Да, я уже включил эту опцию. Хотя другой вариант для дальнейшего уменьшения размера приложения — включить параметр «Связывание всех» (SDK и пользовательские сборки) и настроить proguard таким образом, чтобы приложение не аварийно завершало работу. Но так как это требует длительного анализа.   -  person VahidShir    schedule 03.05.2018


Ответы (2)


К сожалению, это не так просто. В процессе упаковки архив вашего приложения будет хеширован. Если вы разархивируете его или сделаете какие-либо другие изменения в архиве, полученный архив приложения будет иметь другой хэш, чем тот, с которым он был создан. Это приведет к тому, что ваш apk станет недействительным при установке из соображений безопасности.

person Markus Michel    schedule 03.05.2018

Вам придется распаковать его, а затем снова на устройстве. Вы не можете просто пойти и переименовать файл и ожидать, что он сработает, бинарная структура совершенно другая.

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

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

person Gerald Versluis    schedule 01.05.2018
comment
Наверняка хотелось, чтобы наши обычные пользователи могли установить приложение через магазин стандартным способом. Хм, мне просто интересно, можно ли так сильно сжать APK с помощью стороннего инструмента, такого как Winrar, возможно, то же самое можно выполнить с помощью инструментов разработки или самой ОС Android. Спасибо, в любом случае. - person VahidShir; 03.05.2018