2016-08-01 2 views
2

Я ищу способы уменьшить размер приложения в App Store. Я использую Xamarin Forms с PCL. Одна из вещей, которые я вижу на выходе сборки AppStore../obj/iPhone/AppStore/mtouch-cache) моего приложения: System.Xml.dll.armv7.o и System.Xml.dll.arm64.o всего ~ 12mb. После mscorlib это самый большой компонент для моего вывода сборки. Смотрите скриншот:Reducing AppStore Размер приложения: Удалить System.Xml?

ls -laS *.o

Мое приложение не делает ничего с Xml, так что я хочу, чтобы удалить эту ссылку зависимостей, если это возможно. Я попытался удалить все ссылки на System.Xml из моих проектов, но это ничего не меняет. Могу ли я удалить это? Почему System.Xml в моем выпуске сборки?

Мой исходный проект можно найти на GitHub здесь: https://github.com/bitwarden/mobile

ответ

1

Почему System.Xml в моем выходе сборки?

Управляемый компоновщик (если он не отключен) удалит из приложения любую ненужную сборку. Если вы все еще видите System.Xml.dll это либо означает:

  • линкер установлен Не ссылайтесь, по умолчанию для устройств Link SDK;

  • некоторые другие сборки (например, третьи стороны) используют System.Xml и не могут быть удалены из вашего приложения.

Могу ли я удалить это каким-то образом?

Да. Вы можете использовать Сборочный браузер см. Ссылки от сторонних сборок. После того, как они идентифицируются вы можете:

  • Удалить зависимости от вашего проекта и заменить его чем-то, что не зависит от System.Xml. Это может быть довольно легко или очень сложно; или

  • Установить компоновщик на Ссылка на все, чтобы узнать, может ли он устранить ссылки XML от стороннего участника. Имейте в виду, что вам может потребоваться добавить [Preserve] на ваш (и другой сторонний код) для покрытия таких случаев, как отражение (которое линкер не может обнаружить с помощью статического анализа);

Помимо документации на веб-сайте Xamarin в вы можете посмотреть видео о моей Advanced iOS Build mechanics разговора я дал на Evolve 2013. Он охватывает все плюсы и минусы большинства настроек.

+0

У меня есть полный компоновщик включен. Из того, что я могу сказать, единственные пакеты, которые у меня есть, которые используют 'System.Xml', - это Json.NET и Xamarin.Forms. Я не использую функции Json.NET, которые вызывают System.Xml. Требуется ли 'System.Xml' из-за Xamarin.Forms? – kspearrin

+0

Кроме того, у меня возникли проблемы с получением чего-либо полезного из браузера Assembly.Я не вижу в нем ни одной из моих сторонних библиотек. Есть ли какая-либо информация о том, как использовать эту функцию? Быстрый google не стал много. – kspearrin

Смежные вопросы