Как уменьшить размер моей пользовательской платформы iOS? - PullRequest
0 голосов
/ 02 мая 2018

Я создал пользовательский фреймворк в iOS с swift4 в Xcode 9.2. Фреймворк содержит 9 файлов .swift, когда я попытался заархивировать и создать файл .framework, в результате показывается размер 5 МБ. Тем не менее, файлы 9swift полностью показывают размер файла всего 72 КБ. Архивный файл .framework слишком большой по размеру (5 МБ), с которым мой клиент не согласен.

Я пытался удалить ненужный код, но размер остался прежним, они хотят, чтобы я сделал его похожим на Android Framework, размер которого составляет всего 34 КБ. Это первый раз, когда я создаю фреймворк и у меня нет решений, может ли кто-нибудь помочь мне уменьшить размер фреймворка без уменьшения количества файлов?

1 Ответ

0 голосов
/ 23 мая 2018

Я попробовал две вещи, и это сработало для меня. Может быть, это может быть полезно для вас.

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

Итак, на практике:

  1. Учитывая, что мой каркасный архив MyFramework.framework.

  2. Я перечислил все символы MyFramework.framework/MyFramework, запустив $ nm -g MyFramework.framework/MyFramework и выбрал символы, которые мой двоичный файл должен был экспортировать (символы, к которым мой клиент должен был бы получить доступ).

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

  4. Откройте MyFramework проект и установите Build Settings -> Exported Symbols File, чтобы он указывал на текстовый файл, который вы только что создали.

  5. Имея двоичный код в руках, вы можете удалить некоторые символы, используя strip -N MyFramework.framework/MyFramework.

В моем случае я мог добиться чего-то хорошего, но я думаю, что это может измениться от проекта к проекту. Также я имел дело с Objective-C. Я сделал образец проекта Swift с достигнутыми результатами. Вы можете проверить это в https://github.com/gbazilio/ios-framework-size.

Надеюсь, это поможет вам так же, как и мне.

...