2016-06-13 5 views
1

В build.gradle файл Android Studio, мы можем использовать shrinkresources набор для true в shrinkify наш app.Also можно использовать minifyenabled и proguard варианты, а также.shrinkresource, ProGuard и т.д. в Xamarin не уменьшает размер моего приложения

Но в xamarin, как я могу использовать эти параметры?

Я использую proguard в своем приложении, как он упоминается в xamarin doc.but не нашел его использования (я имею в виду, что размер моего приложения не уменьшался). Мое простое приложение имеет размер около 18 МБ. Если у кого-нибудь есть опыт использования proguard в xamarin, пожалуйста, вставьте образец файла здесь, также объясните, как вы это сделали. Другие могут также выиграть.

+0

У меня нет опыта работы с Proguard (потому что я никогда не мог заставить его работать и не мог найти никакой полезной документации), но у меня есть опыт работы с Linker , У вас это включено? Android Project -> Свойства -> Настройки Android -> Linker – hvaughan3

+0

bjut эти методы не уменьшат размер приложения, как в студии Android –

+0

, вы можете открыть файл apk с помощью zip-проводника и проверить, какие файлы используют большую часть пробелов. для каждой архитектуры уменьшает размер приложения в небольшой степени @ riyas-pk –

ответ

1

Я знаю, что вы спрашиваете конкретно о proguard и minifiedenabled функциях Android Studio, но если целью является сокращение размера вашего приложения, вы должны configure a more aggressive linking strategy.

  1. правой кнопкой мыши андроида проект
  2. Под "Build" выберите "Android Build" (или "IOS Build")
  3. Выберите "Link Все" за "поведение Linker" ниспадающего

Make убедитесь, что это только для версий Release или Ad-Hoc, в зависимости от вашей стратегии распределения.

линкер Конфигурация рабочего процесса:

  1. Запуск приложения на физическом устройстве для желаемой конфигурации (Release/Ad-Hoc) функциональность
  2. испытаний до "TypeInitializationException" или подобное исключение происходит
  3. Добавить тип/поле/метод конфигурационного файла
  4. промыть и повторять, пока приложение является стабильной

Если вам не нравится файл конфигурации, вы также можете использовать PreserveAttribute. Если компоновщик выделяет классы в одном из ваших PCL, у которых нет доступа к этому атрибуту, вы можете определить свой собственный атрибут в том PCL, который называется PreserverAttribute, потому что компоновщик просто ищет атрибут с этим именем, не обязательно определенного типа.

Линкера работает, анализируя пути кода и удаляя то, что, по его мнению, является неиспользуемыми ссылками. Если вы используете инъекцию зависимостей, компоновщик не поймет, какие ссылки он должен поддерживать, поэтому это может занять некоторое время, но это может значительно уменьшить размер вашего приложения, и вам нужно сделать это только один раз. Вы можете выполнить те же шаги выше для iOS.

Бонус Убедитесь, что в настройках сборки отмечен флажок «Сбросить собственные отладочные символы». Его набор по умолчанию, но какой-то недовольный коллега мог его снять.

Дополнительные ресурсы:
Linking on iOS

Linking on Android

1

Proguard может уменьшить размер APK, если он содержит большое количество неиспользуемых классов (например, включено из-за библиотек). Поэтому он может только уменьшить размер файла classes.dex в вашем APK. Однако APK обычно содержит большое количество других файлов - они не будут тронуты Proguard.

Вы должны открыть сгенерированный файл APK в средстве просмотра ZIP и посмотреть, какие элементы занимают пространство. Если это файл classes.dex, это зависит только от конфигурации Proguard.