Данная публикация представляет больше ознакомительную цель, нежели подробно описывает шаги настройки, использования той или иной технологии и т.п. Здесь можно найти личные наблюдения, рассуждение и выводы.
В качестве испытательного полигона выступил Beget.
Какие собственно варианты есть для билда apk:
- Gradle
- Android Maven Plugin
- Ant + Ivy
- … Реверс не совсем подходит под задачу (наверное, тут может быть еще 100500 вариантов, но рассматриваю основные)
Настройка Android SDK, Oracle JDK не вызывает особых трудностей. Плюс на хостингах высокая пропускная способность, поэтому можно напрямую через ssh быстро скачать файлы (Здесь и далее подразумевается ОС Linux)
wget http://your-link
Также через консоль и установить нужные компоненты, например, касаемые Android SDK
sh sdkmanager "platforms;android-27"
Собственно, изначально и думал использовать gradle, но билд завершается не успев начаться. Зависает данная команда.
$ [...]/.local/jdk1.8.0_172/bin/java -verbose:class -Xmx512m -cp [...]/.gradle/wr
apper/dists/gradle-4.4-all/[...]/gradle-4.4/lib/gradle-launcher-4.4.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 4.4
Перепробовал все файловые разрешения дать и тп. Так и не понял, в чем именно причина, возможно происходит ожидание внешнего подключения, которое недоступно из-за ограничений хостинга.
Что ж это не единственный способ, попробуем другие. Я не разрабатывал под Android в 2009-2012 годах, правда застал закат Eclipse ADT. В те времена, по-сути еще и Gradle не было, поэтому maven и подобные сборщики были в ходу.
Начались трудности с указанием зависимостей. Не проблема их по-другому прописать, проблема заменить
annotationProcessor
и подобные вещи. Проблема указать использование java 8 (это еще даже не kotlin). Проблема изучения альтернативных IDE (В Android Studio без Gradle никуда). Проблема автоматизировать подписание apk (в gradle несколько строк все выполняют), настроить proguardЗдесь, кстати, интересный момент. По умолчанию в дебрях Android SDK скрывается proguard 4.7, но требуемая (именно c maven плагином) поддержка java 8 начинается только с 5 версии. Это зависит именно от используемого jdk. Единственным решением оказалось вручную заменить папку proguard (плюс копировать несколько вложенных файлов txt). Вроде как работает
Еще интересный момент обнаружился в работе с манифестом (оказывается уж очень много свойств прописывает Gradle за нас). Если не указать
targetSdkVersion
, то приложение будет иметь непонятный zoom экрана, да и тема будет не такой, какая указана в стилях. В данном проекте использовалась WebView, и без свойства android:hardwareAccelerated="true"
нормальной работы этого виджета ждать не стоитНапрашивается общий вывод
Как итог, оба варианта альтернативных сборок работают и это радует, но походу дела всплывает много тонкостей. В этом плане Gradle серьезно облегчает работу для стандартных задач. Может, конечно, они менее удобные и не предоставляют такого огромного количества инструментов и плагинов, но вопрос был в работоспособности вообще в условиях хостинга.
Отличный стартовый проект для работы с ant + ivy
У maven плагина есть собственный список демо-проектов
Пишите свои альтернативные варианты сборки, интересно узнать их больше. Всем спасибо
Комментарии (28)
nafgne
30.05.2018 14:25Ant! Ivy!
Зачем?androidovshchik Автор
30.05.2018 14:26-6Gradle сборка зависла на хостинге. Пришлось искать альтернативы, хоть мне и предпочтительней конечно gradle
sindzicat
30.05.2018 14:30+1Зачем вам хостинг со всеми его ограничениями, когда самые дешёвые VPS-ки от 80 руб. стоят?
androidovshchik Автор
30.05.2018 14:32-5Здесь он стоит всего 7 руб в день
sindzicat
30.05.2018 14:38+1Но вообще вопрос не о цене был. Смысл моего комментария был в том, что за те же деньги можно взять VPS, и никаких ограничений, присущих хостингу, не будет. Соответственно сборка чего-либо должна быть безпроблемной.
androidovshchik Автор
30.05.2018 14:37-7И кстати VPS/VDS доступна в бете на beget за 25 руб в день
sindzicat
30.05.2018 14:40Это за месяц? Ссылку не подскажете?
androidovshchik Автор
30.05.2018 14:48-6Нет в день как раз. Блин, хабросообщество какое-то тронутое (точнее некоторые прокаченные кармой ее члены), минусуют все комментарии подряд, даже на stackoverflow адекватнее. По поводу стоимости, как-то дешево, мне кажется, но надо попробовать
ksenobayt
30.05.2018 14:50+5Вас минусуют за неявную реферальную ссылку и отчаянный форс того же самого хостера. Это крайне не приветствуется на Хабре.
androidovshchik Автор
30.05.2018 14:57-7Комментарии тоже с реферальными ссылками? Не вижу кстати в этом никакой проблемы. Я же не отправляю ссылками на вредоносный сайт
LuckyStarr
30.05.2018 15:21+3Выскажу своё личное мнение: посты с реферальными ссылками вызывают резкое отторжение сразу и не к посту, а к автору.
mwizard
30.05.2018 15:13+10т.е. всего-то навсего 750 рублей в месяц! Как дешево, вот это да! Я не могу поверить своим глазам! Это лучшее предложение на рынке! И ни капельки не реклама!
Главное, не смотрите на digital ocean (310 руб/мес), hetzner (180 руб/мес), amazon ec2 (165 руб/мес) и scaleway (145 руб/мес)! Просто не думайте — начнете думать, и ничего не получится! Wеgеt — лучший провайдер в мире! Только Baget, только хардкор!androidovshchik Автор
30.05.2018 15:17-6Да, пожалуй, не стоило упоминать провайдера. Вышло из этого нехорошо все. Опишите просто свои варианты, каждому решать, какой хостинг лучше и почему
mwizard
30.05.2018 15:18+1Но ОЧЕНЬ ДЕШЕВО ЖЕ, однозначно стоит попробовать! Так дешево даже не бывает!
MeGaPk
30.05.2018 21:21+1Тихо! Не дай бог ТС ещё узнает о bitrise.io, где 200 билдов даром! (ни разу я не превысил этот лимит, даже когда часто билдил настраивая fabric и скрипты).
easyman
30.05.2018 21:36Ваш комментарий на порядок ценнее этой статьи, а Вы его не болдом и без реферальной ссылки…
bitrise.ioandroidovshchik Автор
30.05.2018 23:03-3FUCK YOU
roscomtheend
31.05.2018 09:22+1Информативно, свежо, не нарушает правила. Ниже ещё один — с показным непониманием ситуации. Несколько статей, а с механикой не разобрались, не удивительно что применяете такие через-решения.
easyman
30.05.2018 14:51+1Зачем всё усложнять?
Уже есть куча готовых docker контейнеров.
Можно посмотреть, как они собираются, если есть желание.
P.S. если кто-то не замечал, в консоли Google cloud есть докер. Можете интерактивно работать там, пока что это бесплатно.
androidovshchik Автор
30.05.2018 15:29-12Оставляю комментарий, чтобы его как можно больше заминусовали. Вперед! Не стесняйтесь, кому присуще стадное поведение
LoadRunner
31.05.2018 10:26Рекомендую убрать статью в черновики, пока не стало ещё хуже. И пересмотреть своё поведение и отношение, а не бомбить.
ksenobayt
Реферальные ссылки ставить, не предупреждая о них — ататай и нехорошо.
androidovshchik Автор
Рад, что кто-то заметил такого типа пасхалки