LINUX.ORG.RU
ФорумMobile

Чем заменить Gradle, а лучше и всю Android Studio?

 , , ,


0

3

В общем, не могу начать работать в Android Studio. Сама java понятна и нравится. А именно убивает Gradle. Мне кажется очень запутанным. Эти его конфиги с указанием версий всего и вся и потом ругань, если импортируешь что-то чужое с несовпадающей версией. Какого фига студия при каждом проекте скачивает gradle с интернета? Как отучить? Если офлайн то ошибка всегда. Может стоит его изучать вообще с отвязкой от студии? Возможно такое использование(код писать в чём-то другом)? И так ли он необходим? Хотел скомпилировать одно приложение из сорцов прошивки. Естественно в нём есть методы из фреймворков этой прошивки. И не могу никак добавить этот фрейворк. Ругается студия типа

Error:(4, 0) Could not find method compile() for arguments [file collection] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Почему у гугла все так запутанно? Как добавить framework.jar вынутый из телефона? Мышкокликательно не получается - он добавляется, но что-то не работает см. выше. А ковыряться в gradle-файлах запутался. Или нужно выдергивать исходники этого фреймворка из самих исходников прошивки и их подсовывать студии?

Очень неоднозначно всё как-то. В связи с этим вопрос куда спрыгнуть со студии? Пробовал эклипс те же заморочки с gradle.

Вот хочется чего-то попроще. Вижу на сайте темы вроде «Emacs вполне себе IDE для Rust (Хауту по настройке)», а когда будет тема «Emacs/Vim вполне себе IDE для Android (Хауту по настройке)»? В чем еще можно писать(java)/собирать apk? Gradle обязателен?

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


Gradle - это crap-ware. Среда сборки специально создана, чтобы чем-то занять людей, заморочить им головы. С Maven немного не получилось - люди быстро поняли сущность жёсткость XML'я, в котором не хочется разбираться. Остался «прямой» BAT (.cmd) и Ant-скриптинг (осторожно: XML) для сборки программ на Java.

iZEN ★★★★★ ()
Ответ на: комментарий от iZEN

Gradle - это crap-ware.

Не только Gradle. Android Studio — тоже знатный crap-ware.

EXL ★★★★★ ()

Какого фига студия при каждом проекте скачивает gradle с интернета?

Добро пожаловать в современный мир программирования на Java.

Когда я тыкал AS последний раз (четыре месяца назад) поддержка того же Android NDK там была на уровне: «вот вам сборочный файл нашего нового хипстерского DSL, но работать он не будет, пока вы в каком-то там файле не пропишите UseAndroidNdkDeprecatedUnstableFeature=true, а после этого ничего работать тоже не будет, потому что плагин NDK, идущий в комлекте-бандле с AS экспериментальный, устаревший и весьма ограниченный, а для того, чтобы всё хоть как-то немного работало качни-ка вот эти 300МБ с помощью мобильного интернета.

Штудия эта весит, блджад около 2ГБ! Неужели они не могут положить эти жалкие 300МБ рядом? Воистину в JetBrains какие-то говноеды. С Eclipse/ADT было всё просто и понятно. А главное — быстро.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)

Какого фига студия при каждом проекте скачивает gradle с интернета?

Вроде у неё есть режим Work Offline. У меня он по-крайней мере работает. Если в зависимостях нет ничего, что тянулось бы из внешних источников.

http://stackoverflow.com/questions/18158034/how-to-setup-android-studio-to-wo...

EXL ★★★★★ ()

градль - ничем. гугл принудительно перевел всех на градль. градль сам качает зависимости «незнамо откуда», и кроме как градлем подключить их нельзя.

точнее, их можно вручную скачать оттуда, откуда их берет градль, и конвертнуть в другой формат, который сможет понять, например, ant.

но это еще больший геморрой чем градль.

AS — заменить можно чем угодно. для жабы. я пользуюсь VIM + JavaImp.

из VIM дергается make через :make, а уже свой Makefile дергает градль с разными параметрами.

но у меня свой собственный кросс-платформенный UI, для которого не нужен аццкий гугло-андроидо-XML.

для стандартного/нативного гуя — придется что-то искать, или писать XML вручную.

waker ★★★★★ ()
Ответ на: комментарий от waker

градль - ничем. гугл принудительно перевел всех на градль. градль сам качает зависимости «незнамо откуда», и кроме как градлем подключить их нельзя.

Ну локально-то он их скачивает в .gradle, емнип. Их оттуда можно взять. А берет gradle их из мавеновских реп, maven-central и т.п.

Я бы выкинул к чертям андроид студию, взял бы IDEA Ultimate и ручками проект в maven создал. Но это не для новичка. Можно еще самой идеей артифакты собирать.

Deleted ()
Ответ на: комментарий от Deleted

шило на мыло. то что ты описал, все равно требует наличия градля и JB-говнеца.

waker ★★★★★ ()
Ответ на: комментарий от waker

гугл принудительно перевел всех на градль

из VIM дергается make через :make, а уже свой Makefile дергает градль с разными параметрами.

О. Так ты полностью перешел с Ant на Gradle? Давно?

А у тебя Gradle вызывает ndk-build или компилирует через свою собственную кухню?

EXL ★★★★★ ()
Ответ на: комментарий от EXL

О. Так ты полностью перешел с Ant на Gradle? Давно?

уже довольно давно, да. в момент когда не смог собрать проект с новыми google play services.

А у тебя Gradle вызывает ndk-build или компилирует через свою собственную кухню?

у меня gradle собирает только жабу, APK, signing, alignment, и т.п.

нативные бинари собираю по прежнему отдельно, через ndk-build (вручную), gradle подхватывает уже собранные.

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

waker ★★★★★ ()

эта самое, а с помощью Autotools проекты на этой вашей жабе собирать можно теоретически? :)

Harald ★★★★★ ()
Ответ на: комментарий от Harald

autotools это параллельная вселенная. вроде как никто не запрещает конфигурировать и собирать им что угодно, но непонятно зачем :)

waker ★★★★★ ()

Emacs/Vim вполне себе IDE для Android (Хауту по настройке)

Ну про vim тебе вполне уже объяснили. Вот тебе ссылка на тред о текущем положении вещей в emacs. Сам я на java не пишу, но присматриваюсь к ensime. Но с emacs + ensime нет простого способа избавиться от gradle, хотя принципиально это возможно.

feofan ★★★★★ ()
Ответ на: комментарий от feofan

ИМХО, самый простой и правильный способ - таки осилить gradle безотносительно того, продолжишь ты использовать AS или нет.

feofan ★★★★★ ()
Ответ на: комментарий от iZEN

сущность жёсткость XML'я

Это да. xml мне так и не понравился. Особенно как заворачивает его гугл.

ult ()
Ответ на: комментарий от waker

пользуюсь VIM + JavaImp

Спасибо, поразбираюсь с ним.

ult ()
Ответ на: комментарий от feofan

Вот тебе ссылка на тред

Спасибо, почитаю.

таки осилить gradle

Как-то тяжело с ним. Но и видимо, по хотелке гугла, без него тоже не получится.

ult ()
Ответ на: комментарий от ult

После Maven и SBT, Gradle как глоток горного воздуха.

И сложность его намного ниже, чем этох двух.

theLastOfCats ()

Android Studio можно заменить IDEA Community Edition. Gradle заменять не стоит, если проект изначально не расчитан на что-то другое или если недостаточно опыта, или если приложение недостаточно популярное, чтобы в его сорцах и без gradle хотели разобраться. А так если выложить на github что-нибудь небольшое, и попросить кого-нибудь посмотреть, то если это нельзя будет одним кликом в Android Studio загрузить, то никто не будет с тобой возиться. Более того, даже за ненормального посчитают. И доля смысла в этом есть, терять время на импорт проекта не хочется никому.

anonymous_sama ★★★★★ ()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Ответ на: комментарий от EXL

читал, просто не запомнил, ибо жаба не очень интересовала

Harald ★★★★★ ()
Ответ на: комментарий от EXL

Из gcj скоро выпилят жабу. Точнее сам gcj выпилят из набора. Уже обсуждается, гугли.

anonymous ()

Почему у гугла все так запутанно?

Каждый раз как приходится работать с апи гугла, матерюсь на их сраный подход в апи и непонятными доками. Оно ж абсолютно неудобное. Есть же отличные примеры extjs,zend,symphony. А у этих все через ж*пу

anonymous ()
Ответ на: комментарий от EXL

Когда я тыкал AS последний раз (четыре месяца назад) поддержка того же Android NDK там была на уровне: «вот вам сборочный файл нашего нового хипстерского DSL, но работать он не будет

До сего момента ничего не изменилось.

andreyu ★★★★★ ()

Использую vim и плагины к нему. Но у меня кода на яве полтора с половиной класса. В основном это обертки для всяких сторонних либ и inapp-purchases.

Сборка проектов делается командой :make <target>, которая дергает <target> из Makefile. А внутри, в зависимости от проекта, или ant, или gradle.

andreyu ★★★★★ ()
Ответ на: комментарий от waker

JavaImp.

Глобально? Они это серьезно?

"
You need to set two global variables in your .vimrc in order for this to work:
1. Paths to Java Project Source files.
"

andreyu ★★★★★ ()
Ответ на: комментарий от EXL

А у тебя Gradle вызывает ndk-build или компилирует через свою собственную кухню?

Не знаю, как у waker, но я из Makefile дергаю ndk-build, а потом gradle.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

можно в локальный vimrc вытащить, если есть необходимость.

под глобальными имеется ввиду что они `let g:...=...`

это проблема?

waker ★★★★★ ()
Ответ на: комментарий от andreyu

Не знаю, как у waker, но я из Makefile дергаю ndk-build, а потом gradle.

у меня примерно так же. точнее, есть 2 отдельных makefile, один на jni, другой на все остальное. можно сделать, чтобы 1й makefile автоматически дергался из 2го, но мне просто не нужно.

waker ★★★★★ ()
Ответ на: комментарий от waker

можно в локальный vimrc вытащить, если есть необходимость.
это проблема?

Я глобальный конфиг вима храню в гите и использую на различных платформах, разных конфигурациях и разных проектах. Глобальному конфигу не нужно ничего знать о специфике текущей конфигурации.

andreyu ★★★★★ ()
Ответ на: комментарий от waker

можно сделать, чтобы 1й makefile автоматически дергался из 2го, но мне просто не нужно.

В моем случае просто нет смысла собирать это все раздельно.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

В моем случае просто нет смысла собирать это все раздельно.

у меня бывает, что нативная часть не меняется месяц, а жаба-часть в активной разработке.

waker ★★★★★ ()
Ответ на: комментарий от andreyu

Глобальному конфигу не нужно ничего знать о специфике текущей конфигурации.

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

waker ★★★★★ ()
Ответ на: комментарий от waker

у меня бывает, что нативная часть не меняется месяц, а жаба-часть в активной разработке.

В таком случае ndk-build отработает мгновенно.

andreyu ★★★★★ ()
Ответ на: комментарий от waker

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

Не придираюсь, видимо я действительно не понял фразу «You need to set two global variables in your .vimrc in order for this to work».

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

В таком случае ndk-build отработает мгновенно.

не очень мгновенно. проверка файлов на необходимость пересборки занимает время. еще у ndk-build есть баго-фича, он пересобирает все с нуля после переключения веток в git.

waker ★★★★★ ()
Ответ на: комментарий от EXL

Штудия эта весит, блджад около 2ГБ! Неужели они не могут положить эти жалкие 300МБ рядом? Воистину в JetBrains какие-то говноеды.

И как же джетбрейнс связаны с гуглом сделал всё именно так?

anonymous ()

Как пример(не лучший, просто наборы скриптов) на личном опыте: https://github.com/FWGS/xash3d-android-project и https://github.com/FWGS/cs16-client (каталог android/).

Java у нас не так много, поэтому поддерживать Android-часть не так сложно.

Ресурсы пишутся вручную, а поэтому годно отформатированы все *.xml файлы. Java-файлы пишутся в любимом текстовом редакторе разработчика. Собирается это всё чудо с помощью ant в одно единое приложение, которое уже потом отдельно подписывается и выравнивается. Притом, оба приложения уже связаны с «внешними» библиотеками — Google Play Services и её зависимостями.

a1batross ★★★★★ ()
Последнее исправление: a1batross (всего исправлений: 3)
Ответ на: комментарий от waker

не очень мгновенно.

Переключение ветки в git делается дольше :)

проверка файлов на необходимость пересборки занимает время.

Вообще незаметно. Даже на проекте в несколько тысяч сорцов.

еще у ndk-build есть баго-фича, он пересобирает все с нуля после переключения веток в git.

Если дата сорца свежее, чем объектника, то пересоберет. А вот внесение изменений в module_name.mk вызывает пересборку всех сорцов, описанных в нем.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

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

waker ★★★★★ ()
Ответ на: комментарий от waker

но на практике — время заметно,

Уговорили, заметно, но не настолько, что бы этим заморачиваться :)

и пересобирается все после переключений веток.

Ну причину этого я уже описал. Если меняется какой-то заголовочный файл, который включен во все остальные, то такая печаль вполне возможна. Но это проблема тех, кто избегает forward declaration.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

Омг а это тут причем? Я говорю за то, что ndk-build считает что все файлы поменялись, после того как ветки перещелкнул, например, временно, и вернул обратно. Файлы те же, а даты наверное у всех файлов другие?

waker ★★★★★ ()
Ответ на: комментарий от waker

Омг а это тут причем? Я говорю за то, что ndk-build считает что все файлы поменялись, после того как ветки перещелкнул, например, временно, и вернул обратно. Файлы те же, а даты наверное у всех файлов другие?

А как еще ndk-build должен понять, что файл был изменен? Только сравнение даты исходника и даты объектника.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

совершенно верно. поэтому я не делаю пересборку автоматически, т.к. ndk-build не может этого понять. и пересобираю нативщину только когда она меняется.

waker ★★★★★ ()
Ответ на: комментарий от waker

совершенно верно. поэтому я не делаю пересборку автоматически, т.к. ndk-build не может этого понять.

Да, в таком случае есть резон разделять правила сборки. Тем не менее это не баг ndk-build - он ведет себя вполне адекватно.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

а, так ты все это время пытался меня убедить в том, что я и написал с самого начала, употребив слово «баго-фича»? LOL

waker ★★★★★ ()
Ответ на: комментарий от waker

а, так ты все это время пытался меня убедить в том, что я и написал с самого начала, употребив слово «баго-фича»? LOL

Ага :)
Я не знаю, как еще можно было интерпретировать эту фразу:
«еще у ndk-build есть баго-фича, он пересобирает все с нуля после переключения веток в git»

andreyu ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.