2013-12-18 8 views
1

Мне нужно использовать библиотеку Newman, StackMob’s Http Client в моем Android-проекте.Использование sbt-assembly для Newman, библиотеки клиента Http-библиотеки StackMob

Я использую sbt-assembly для создания единой (uber) банки со всеми зависимостями. Команда дает мне очень большой файл jar (48mb), и Android не может преобразовать его в dex.

Как я могу добавить только необходимые зависимости в мою библиотеку jar?

ответ

1

Я написал весь раздел в README в sbt-сборке на excluding JARs and files.

Когда вы говорите:

Как я только добавить необходимые зависимости в моей библиотеке банку?

Слово «зависимости» в контексте sbt-assembly обычно означает зависимые баночки. Проблема в уровне банки, вам нужны все они. Вам нужно найти *.class файлы, которые не используются, и исключить это из финальной толстой банки. sbt-assembly имеет стратегию слияния, которую вы можете использовать для игнорирования файлов.

Для разработки Android, так как существует так много файлов для исключения, вам потребуется что-то, что делает анализ автоматически. Вот где ProGuard. Это приведет к значительному уменьшению размера банок. Но это также немного вуду, поскольку вы, возможно, не сможете узнать, нужен ли вам определенный класс или нет. Попробуйте pfn/android-sdk-plugin, если вы еще этого не сделали. Он кэширует результат ProGuard и делает его намного быстрее.

+0

thx для ответа, я попробую еще одна проблема заключается в том, что, используя сборку sbt, она добавляет в мою жирную jar все зависимости и еще одну библиотеку scala, я видел много примеров, чтобы исключить добавление scala в jar но никто не помогает мне, кто может объяснить мне, как это сделать. – iCaesar

+0

исключая scala lib из нашей толстой банки, дает плохие результаты, поэтому теперь я пытаюсь настроить и использовать ProGuard – iCaesar