Невозможно уменьшить размер приложения форм Xamarin при экспорте в файл APK

Я создал простое приложение в формах Xamarin с 5 страницами с вкладками, каждая из которых имеет WebView, вызывающий 5 разных веб-сайтов. Больше ничего. Текущий размер APK - 17 МБ.

Я попробовал все методы, доступные в Google, чтобы уменьшить размер моего приложения. Я не понимаю, какая часть мне не хватает. Я включил multi-dex, сокращение кода, Linking включил все, что упоминалось.

Прилагаю скриншот своих настроек, результат APK-анализатора и код своего проекта.

Ссылка на решение проекта: https://drive.google.com/drive/folders/18i3j6qDzlm4nN6DFHjBPLCW9Ab2WdG08?usp=sharing

Предупреждение при загрузке в игровой магазин

Настройки параметров Android  Изображение параметров сборки Результат анализатора APK  Дополнительные параметры Android


person Abhijeet Raj    schedule 30.04.2020    source источник
comment
17 Мб не очень большой   -  person Jason    schedule 30.04.2020
comment
Какая у вас здесь цель? Вы пробовали использовать App Bundle в дополнение к этому, чтобы избежать уплаты налога ABI?   -  person Jon Douglas    schedule 30.04.2020
comment
17 МБ для приложения на основе Xamarin - это мало по сравнению с тем фактом, что вы включаете две собственные (.so) монобиблиотеки.   -  person SushiHangover    schedule 30.04.2020
comment
у меня в коде ничего нет, кроме Webview, что, если я тоже напишу какой-нибудь код? И при публикации приложения в игровом магазине я получаю много неиспользуемого кода.   -  person Abhijeet Raj    schedule 30.04.2020
comment
Привет @JonDouglas, я тоже пробовал использовать пакет приложений. Но без изменений   -  person Abhijeet Raj    schedule 30.04.2020
comment
@SushiHangover Я прикрепил изображение, и я получаю сообщение об ошибке при загрузке приложения в игровой магазин.   -  person Abhijeet Raj    schedule 30.04.2020
comment
Если вы просто хотите, чтобы ошибка исчезла, переключитесь на упаковку пакета приложений aab вместо apk. Кроме того, я бы отключил multi-dex, который вам, вероятно, не нужен, переключил компилятор dex на d8, переключил сжатие кода на r8 и на основе диспетчера архивов, который снизил ожидаемый размер приложения примерно до 15,5 МБ.   -  person Nick Peppers    schedule 30.04.2020
comment
@AbhijeetRaj Google Play Store устарел APK-файлы в пользу App Bundles, вы - это то, как вы развертываете свое приложение, вы должны переключиться (обратите внимание: на самом деле это не сделает ваше приложение намного меньше, чем моно SO, которые все еще должны быть включены). devblogs.microsoft.com/xamarin/android-app-bundle   -  person SushiHangover    schedule 30.04.2020
comment
@AbhijeetRaj Как сказал Джейсон, ваш проект apk 17 МБ не очень большой, но если вы все же хотите уменьшить количество неиспользуемых ресурсов или кода, я предлагаю вам взглянуть: Уменьшение размера вашего приложения для Android, есть много способов уменьшить размер вашего приложения, вы можете попробовать.   -  person Cherry Bu - MSFT    schedule 01.05.2020


Ответы (2)


Выберите App Bundle вместо APK для Android Package Format в Android Options. Также отметьте Generate one package per selected ABI создать отдельные пакеты для armabi-v7a и один для arm64-v8a.

Изменить: перечитывание этого сообщения об ошибке звучит так, как будто использование App Bundle автоматически оптимизируется для отдельных ABI, о которых я не знал. Возможно, вам не понадобится проверять Generate one package per selected ABI, но это не повредит.

person ottermatic    schedule 30.04.2020
comment
App Bundle & Generate one package per selected ABI не приносят друг другу пользу. Они предназначены для отдельных случаев использования, и, вообще говоря, App Bundle обрабатывает это за вас динамически для Google Play Store, но если вам нужны отдельные пакеты для магазинов / ad-hoc, которые не поддерживают App Bundle, вы должны использовать это. - person Jon Douglas; 01.05.2020

Вы должны включить пакеты приложений для приложений (.aab). После развертывания через магазин Google Play размер вашего приложения уменьшится еще больше. (И удалите это предупреждение при отправке в магазин)

Чтобы включить его, посмотрите в свойствах * .Droid.csproj

параметры csproj

Это сообщение в блоге xamarin является хорошим справочным материалом.

person matfillion    schedule 14.01.2021