Как уменьшить размер моей пользовательской платформы iOS?
Я создал пользовательский фреймворк в iOS с swift4 в Xcode 9.2. Фреймворк содержит 9 файлов.swift, когда я попытался заархивировать и создать файл.framework, в результате показывается размер 5 МБ. Тем не менее, файлы 9swift полностью показывают размер файла всего 72 КБ. Архивный файл.framework слишком большой по размеру (5 МБ), с которым мой клиент не согласен.
Я пытался удалить ненужный код, но размер остался прежним, они хотят, чтобы я сделал его похожим на Android Framework, размер которого составляет всего 34 КБ. Это первый раз, когда я создаю фреймворк и у меня нет решений, может ли кто-нибудь помочь мне уменьшить размер фреймворка без уменьшения количества файлов?
1 ответ
Я попробовал две вещи, и это сработало для меня. Может быть, это также может быть полезно для вас.
Компоновщик экспортирует все символы по умолчанию. Вы можете ограничить это с помощью некоторых методов, обсуждаемых в этой статье о символьной видимости. Кроме того, в компоновщике есть приятная функция, которая позволяет указывать символы, которые нужно экспортировать или не экспортировать. Экспорт только символов интерфейса может помочь вам уменьшить размер, и ваш клиент не будет тратить впустую память.
Итак, на практике:
Учитывая, что мой каркасный архив
MyFramework.framework
,Я перечислил все символы
MyFramework.framework/MyFramework
запустив$ nm -g MyFramework.framework/MyFramework
и выбрал символы, которые мой двоичный файл должен был экспортировать (символы, к которым мой клиент должен был бы получить доступ).Все выбранные символы были сохранены в текстовом файле. Таким образом, предполагая, что среди всех перечисленных символов вам нужно сохранить в текстовый файл только те, которые вам нужны (ваш клиент нуждается).
открыто
MyFramework
проект и наборBuild Settings -> Exported Symbols File
чтобы указать на текстовый файл, который вы только что создали.С бинарным в руках, вы можете удалить некоторые символы, используя
strip -N MyFramework.framework/MyFramework
,
В моем случае я мог достичь чего-то хорошего, но я думаю, что это может измениться от проекта к проекту. Также я имел дело с Objective-C. Я сделал образец проекта Swift с достигнутыми результатами. Вы можете проверить это по адресу https://github.com/gbazilio/ios-framework-size.
Надеюсь, это поможет вам, как и мне.