Как можно уменьшить размер scala-приложений для Android? - PullRequest
9 голосов
/ 05 января 2012

Я пытаюсь написать приложения для Android с Scala в Eclipse. Проблема, с которой я сталкиваюсь, заключается в том, что развернутый файл APK слишком велик - поскольку вы не можете связать приложения Android с внешними библиотеками, любой используемый код необходимо скопировать в файл APK, но большинству приложений Scala не требуется большая часть библиотеки Scala. Где-то я читал, что даже большое приложение может быть упаковано всего с 50 КБ или около того из библиотеки Scala, по сравнению с 4 МБ, которые, как говорит мое устройство Android, занимает мое тестовое приложение.

Я уже пробовал плагин Treeshaker для Eclipse, и я вижу в окне прогресса, что он работает, но, похоже, он ничего не делает. Распад его из моего проекта не влияет на конечный размер файла. Я также пытался настроить Proguard самостоятельно, но не могу найти конфигурацию, которая не влияет на размер файла (и я понимаю, что Proguard запускается только при использовании мастера экспорта Eclipse, который я использовал для тестирования) или сбоя с загадочными сообщениями об ошибках, такими как «1». (Ну, ладно, все сообщение об ошибке «Преобразование в формат Dalvik завершилось ошибкой с кодом ошибки 1», что вряд ли более полезно, потому что я не могу найти четкую документацию по этому сообщению об ошибке и не говорит мне, какая часть мой код или конфигурация вызывает проблему ...)

Итак. Любое понимание того, как я могу заставить это работать?

Ответы [ 2 ]

6 голосов
/ 05 января 2012

Большинство людей используют SBT с ProGuard (насколько я знаю, он запускается автоматически с помощью sbt android plugin ).

Кроме того, есть возможность отправить с двумя файлами dex в apk . Это также решает многие проблемы, потому что большинство ограничений относится к файлам dex, а не к последнему apk.

Это старше, но имеет много полезной общей информации: http://lamp.epfl.ch/~michelou/android/

1 голос
/ 18 июня 2012

Я использую AndroidProguardScala, как указано здесь:

https://stackoverflow.com/a/11084146/1287856

Он использует Proguard при экспорте приложения и работает довольно хорошо.

...