Перейти к содержанию
Fire Monkey от А до Я
  • 0

Можно ли уменьшить размер приложения для андроида?


la_coste

Вопрос

Рекомендуемые сообщения

  • 0

Попробуй секцию uses почистить.

З.Ы.Могу сказать что далее, если не обращать внимания на дополнительные файлы для приложения, размер таким же и останется, несмотря на возможное увеличение функционала. 

Ссылка на комментарий
  • 0
  • Администраторы

Если говорить о размере приложения. То первоначально нужно понять, что входить в состав пакета? Затем определить, что нужно и не нужно?

 

Давайте посмотрим на примере состав пакета небольшого Андроида приложения, написанного в RAD Studio XE5 Delphi. В качестве примера, я взял приложение PhotoEditorDemo, доступный на официальном Open Source проекте примеров RAD Studio XE5

 

Это пример кроссплатформенного простого фоторедактора:

Размер сжатого приложения

Собираем приложение и смотрим на результирующий пакет PhotoEditorDemo.apk (Он располагается в директории .\Android\Debug\PhotoEditorDemo\bin относительно корня проекта).

 

После сборки приложения его размер ~6 760 КБ (в зависимости от Debug or Release сборки). Это размер сжатого пакета нативного приложения.

 

Размер распакованного приложения

Если мы распакуем ZIP архиватором этот файл, то увидим его содержание:

post-1-0-81223900-1389963410.jpg

В распакованном виде, пакет занимает 21,7 МБ.

 

Состав пакета

Что же входит в его состав:

  1. lib - место хранения собранных натиных библиотек приложения. Поскольку приложение нативное, то оно работает на основании библиотеки .so.
  2. res - место хранения ресурсов приложения (картинки, иконки и тд)
  3. META-INF - хранение подписи приложения, контрольные суммы файлов ресурсов (картинок, звуков и т.д.)
  4. AndroidManifest.xml - манифест приложения (расширенный аналог VersionInfo в Windows)
  5. classes.dex - файл с java реализацией дополнительного функционала FireMonkey.
  6. resources.arsc - таблица ресурсов. В этом файле собраны xml-описания всех ресурсов.

Самый значительный вклад в размер пакета вносят:

  1. libPhotoEditorDemo.so (20 060 КБ) - непосредственно сам бинарник приложения
  2. classes.dex (1 948 КБ) - частичная реализация FireMonkey на java.

Размер самого приложения большой потому, что включает в себя полностью все Delphi библиотеки, которые используется FireMonkey. А это:

  1. RTL
  2. Хедеры для доступа к Android API
  3. Нативные стили для Android (три стиля - 1х, 1.5x, 2х, 3х скалирования экрана). Каждый стиль содержит исходную png картинку нативного стиля.
  4. Фильтры и эффекты FireMonkey
  5. Вся остальная реализация FireMonkey.

Довольно большой набор того, что нужно включить в пакет и тяжело выбросить.

 

Если говорить о приложении написанном в Eclipse, то приложение включает в себя только часть пользовательского кода. И размер мал за счет того, что весь Android API находится перманентно на самом устройстве (не в пакете).

 

Если бы используемая часть библиотек FireMonkey находилась на каждом устройстве, то размер приложения сократился бы раза в четыре. 

 

Вывод

Размер установочного пакета приложения, написанного на FireMonkey не большой для нативных приложений порядка 6 760 КБ для реализации простого фоторедактора (Хотя для кого-то это может быть много). В установленном виде приложение занимает от 20 000 КБ. Основная причина полная интеграция используемых библиотек в пакет приложения. Вероятность уменьшить этот размер маловероятна. Однако увеличение функционала приложения не так сказывается на дальнейший рост приложения.

 

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

 

На сколько важен размер приложения для конкретной работы приложения каждый заказчик решает сам.

 

P.S. Цель этого ответа дать подробный ответ о причинах такого размера, а не попытка вызвать обсуждение на тему сравнения сред разработки. Каждый framework обладает своими достоинствами и недостатками. И выбор средства разработки диктуется совокупностью требования заказчика. 

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...