Я только что провел последний день или около того, пытаясь отследить эту проблему. Я создал небольшую игру под названием BlockIT для Android, и теперь у меня есть работающая версия для iOS. Чрезвычайно странным является то, что версия Android составляет 8,2 МБ, а версия iOS - 14,1 МБ.
Теперь, поскольку я владелец источника, я хотел отследить это и выяснить, почему. Как многие предполагают здесь, что это графические элементы - это не так. Весь набор данных (не код) был практически идентичен в каждом пакете. Это имеет смысл, поскольку я использую одну и ту же графику в каждом приложении.
Итак, почему сборка кода так сильно отличается! Моя сборка кода для iOS была почти 7 МБ, а для Android - менее 3 МБ. Сам код был написан для одинаковой работы, и все части кода, кроме небольших, абсолютно одинаковы на каждой платформе. Я обнаружил, что настройки сборки (iOS gcc) оказали огромное влияние на размер выходного файла. Если вы установите только целевой ARM6 или ARM7, то размер моего двоичного кода уменьшится с 7 МБ до 5 МБ. Это указывает на то, что в одном двоичном файле есть почти полные дубликаты функций и библиотек для каждой цели! Кроме того, встроенные символы отладки, кажется, не полностью удалены. Наконец, шифрование кода также стоит больших сумм. Это, наверное, самое загадочное, поскольку Android подписывает свои apk аналогичным образом. Похоже, что подписание iOS сделано очень странно.
Итак, я надеюсь, что это поможет. Для повторения:
- Изображения / данные не являются проблемой
- Построение кода на iOS генерирует несколько выходных данных платформы в одном двоичном коде == много дополнительного кода (кстати, я не понимаю, почему Apple это делает - кажется странным).
- Шифрование кода не очень подходит для iOS.
Нет реального способа исправить реальную проблему (опять же, странно и неутешительно).