Подтвердить что ты не робот

Android, Scala и Proguard

После запуска headfirst на столько же проблем, как и перестановки набора инструментов командной строки для Android, мне наконец удалось собрать комбинацию Scala и исходного кода Java в полезный apk.

Как мне кажется, я использовал proguard для сжатия библиотеки Scala с помощью инструмента dex. Проблема заключается в следующем:

BUILD SUCCESSFUL
Total time: 1 minute 29 seconds

Через полторы минуты. Здесь мы говорим о приложении с Hello-World. Я не думаю, что смогу так развиться. Мне нужно заняться медитационными занятиями.

Это конфигурация proguard:

-injars ${out.absolute.dir}/classes:${scala-library.jar}(!META-INF/MANIFEST.MF,!library.properties)
-outjars ${out.absolute.dir}/classes.min.jar
-libraryjars ${android.jar}
-dontwarn
-dontoptimize
-dontobfuscate
-keep public class * extends android.app.Activity

Есть ли способ ускорить шаг proguard?

Изменить. Я запускаю это в довольно приличном двухъядерном, 3-Гбайт-башенном компьютере, поверх 64-разрядного Linux. Запуск ant compile (scalac/javac) занимает 3 секунды. Полный ant install занимает 1:30, как описано выше. Это шаг proguard, который "зависает", в соответствии с выходом, скорее всего, из-за ограничений размера scala/android runtime.

4b9b3361

Ответ 2

ProGuard занимает намного больше времени, чтобы сжать библиотеку Scala 2.9.1, чем библиотека Scala 2.8.1 (54 секунды против 13 секунд, для 8.5 MB против 6.2 MB). Либо структура классов библиотеки коренным образом изменилась, либо некоторые новые классы вызывают чрезмерные вычисления. Мне нужно выяснить, можно ли улучшить ProGuard или его конфигурацию для этого случая. На данный момент вы можете работать с Scala 2.8.1.

Я предполагаю, что ваша конфигурация ProGuard также содержит необходимые параметры для Android и для Scala, как описано в руководстве ProGuard. Если вы используете обычный процесс сборки Android, вход (classes, libs) и библиотеки (android.jar) уже указаны для вас в файле сборки Ant, и вам не нужно указывать их снова в файле конфигурации ProGuard. Чтение их дважды потребует времени и генерирует много предупреждений (которые вы полностью отключили - безопаснее отключать их выборочно).

Ответ 3

Если у вас есть корневой телефон и вы хотите протестировать его, вы можете установить scala libs прямо на свой телефон, чтобы вам больше не нужен шаг proguard:

https://github.com/jrudolph/scala-android-libs