LINUX.ORG.RU

Делать Android приложения на java/kotlin/C++ без Android Studio - реальность?

 


3

4

Хочется на кнопку «Make New Project» в студии нажать, а вручную создать каждый файлик и осмысленно написать каждую строку Манифеста, зато поняв что происходит. Да и в качестве IDE на 2021 год vim + LSP + нужный language server + консоль + велосипедные скрипты куда интереснее, чем тормозная монструозная хрень от JetBrains. Хочется рецептов, статей, как собирать, чем лить (adb), текстов про опыт.

UPDATE

Нашёл древнее: https://authmane512.medium.com/how-to-build-an-apk-from-command-line-without-ide-7260e1e22676. Переработал, осмыслил, проапдейтил схемы установки всего. Слегка потрахался с настройкой USB в мобиле, чтобы adb увидело девайс.

Получился такой мануал: http://0x0.st/-Ty0.txt Выполнил его, достиг успеха. Маленький фикс мануала: adb install надо не на hello.apk а на hello.unaligned.apk, который до Align ZIP шага, потому что Aligning ломает цифровую подпись как-то.

Но при установке на живую мобилу (samsung note 9) мобила сказала такое: http://0x0.st/-TyG.jpg ( https://imgur.com/a/VHTpdc8 ). Получилась такая иконка в установленных: http://0x0.st/-Ty5.jpg При старте заявило: http://0x0.st/-Tyh.jpg Но работать не отказалось. Выглядит как-то так: http://0x0.st/-TyC.jpg

Возможно у меня есть эмулятор, но я незнаю. Это всё на живом девайсе. Ось: свежая убунта 20.04 с дефолтным ядром. Интересно заслушать экспертов о ругани мобилы на старину платформы приложения. Возможно вместо «platforms;android-30» надо ставить что-то свежее как-то, но инстяллятор вроде свежее ничего не предлагал, хотя я может быть смотрел жопой. Главная позитивная новость в реальности процесса и в размере занимаемых ресурсов на уровне 100 КБ.



Последнее исправление: igloev (всего исправлений: 5)

Ну да, чего же нет. Когда-то попадался даже туториал, но это было давно.

fernandos ★★★
()

Нашёл древнее: https://authmane512.medium.com/how-to-build-an-apk-from-command-line-without-ide-7260e1e22676

Переработал, осмыслил, проапдейтил схемы установки всего. Слегка потрахался с настройкой USB в мобиле, чтобы adb увидело девайс.

Получился такой мануал: http://0x0.st/-Ty0.txt

Выполнил его, достиг успеха.

Но при установке на живую мобилу (samsung note 9) мобила сказала такое: http://0x0.st/-TyG.jpg ( https://imgur.com/a/VHTpdc8 )

Получилась такая иконка в установленных: http://0x0.st/-Ty5.jpg При старте заявило: http://0x0.st/-Tyh.jpg Но работать не отказалось. Выглядит как-то так: http://0x0.st/-TyC.jpg

Возможно у меня есть эмулятор, но я незнаю. Это всё на живом девайсе. Ось: свежая убунта 20.04 с дефолтным ядром.

Интересно заслушать экспертов о ругани мобилы на старину платформы приложения. Возможно вместо «platforms;android-30» надо ставить что-то свежее как-то, но инстяллятор вроде свежее ничего не предлагал, хотя я может быть смотрел жопой.

igloev
() автор топика
  1. download some fresh «commandlinetools-linuz*.zip»
  2. unpack it to ~/bin/; now you get «~/bin/cmdline-tools/»
  3. Make dir for Android SDK (SDK root): mkdir ~/bin/android-sdk/
  4. (find name of latest Android SDK version): ~/bin/cmdline-tools/bin/sdkmanager –sdk_root=/HOME_FULLPATH/bin/android-sdk –list | grep «Android SDK Platform»

А вот мне бы хотелось без качания малварных блобов. Например, adb и всякий тулчейн жавы у меня есть в родных пакетах. Хотелось бы либо ничего кроме них не ставить, либо ограничиться .jar’ом с андроидным API с которым достаточно собраться или что-то в таком духе.

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

Посмотри в сторону QT

Не, пасиба, волшебства хочется минимум, комбайны не интересны, да и бинари по 50 мегобайт не айс.

igloev
() автор топика

тормозная монструозная хрень от JetBrains

Профи может себе комп обновить за месяц.

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

Профи может себе комп обновить за месяц.

Пробовали, не взлетело. Зависает на 3 секунды на любом топовом lenovo thinkpad ноуте за 200 тыр. Похоже надо было игровой асус за лям брать было, но это чё-то жопа какая-то совсем.

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

Зависает на 3 секунды на любом топовом lenovo thinkpad ноуте за 200 тыр.

Ну охренеть, у вас там машинистки работают? Строчат код, не думая?

anonymous
()

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

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

на не от хорошей жизни такая жирная и корявая

На три секунды виснет. Потратим год и назло будем в блокноте кодить.

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

Ну охренеть, у вас там машинистки работают? Строчат код, не думая?

Думаем неделю, 10 минут пишем код. Но когда ты пишешь строчку кода, то как-то не хочется прерываний посередине печатания одного слова секунд на 5. А бывают особо неудачные набитые говномакросами C++ проекты, на которых эта хрень любит зависнуть секунд на 10 на железе за 200 тыр при печатании любого нового слова. Да, не надо писать говно, но когда говно написано за 10 лет до тебя и его нельзя быстро выкинуть, приходится с ним жить. Тем более, что у vim + clangd проблемы это говно распарсить, искать в нём символы, references и что угод но ещё почему-то нет. ДжетБраенс проиграло короче.

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

топовом lenovo thinkpad ноуте за 200 тыр

Это который сливает по производительности стационарнику на Ryzen 3600 за 30 тыщ?

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

Но когда ты пишешь строчку кода, то как-то не хочется прерываний посередине печатания одного слова секунд на 5.

Принцесса на горошине. Я поверю, что оно раз в несколько минут тупит на автодополнении, но никак не на простом вводе.

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

Принцесса на горошине. Я поверю, что оно раз в несколько минут тупит на автодополнении, но никак не на простом вводе.

Не готов подгонять реальность под твои требования веры, сорянка.

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

Она тупит на подсветке вводимого кода, подсказках автокомплита, отображении имён параметров и вот этом вот всём. Не то чтобы сильно, но заметно.

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

А вообще сейчас же они используют для сборки APK такую штуку как Gradle.

Ну это же явовский Make. Чем автоматизировать я найду, хоть градле, хоть мейком, важно же понять последовательность шагов, коорые я автоматизирую. Магии не хочется, как сказано выше. Да её и не получится, в билде гредла всё равно придётся прописать все шаги. Не, возможно в гредле надо писать меньше, чем в мейке, но мне пока хочется понять все шаги как они есть.

igloev
() автор топика
Ответ на: комментарий от izzholtik

Она тупит на подсветке вводимого кода, подсказках автокомплита, отображении имён параметров и вот этом вот всём. Не то чтобы сильно, но заметно.

2021-я версия у идеи сырая и неудачная. У студии наверняка тоже. Можно взять чуть постарше.

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

Та не, это у неё по жизни тормоза. Помню ещё статью на хабре, что они выделили «базовую» печать и отрисовку в отдельный поток, чтобы не было визуального лага, а на самом деле IDE воспринимает ввод и реагирует на него с заметной задержкой.

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

В Gradle шаги не пишутся, он декларативный.

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

Та не, это у неё по жизни тормоза. Помню ещё статью на хабре, что они выделили «базовую» печать и отрисовку в отдельный поток, чтобы не было визуального лага, а на самом деле IDE воспринимает ввод и реагирует на него с заметным лагом.

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

anonymous
()

Да.

Но для Kotlin сразу скажу – я не смог. Если на обычной жаве ещё можно как-то писать без IDE, то с этим языком сложнее.

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

Но для Kotlin сразу скажу – я не смог. Если на обычной жаве ещё можно как-то писать без IDE, то с этим языком сложнее.

Вот и получается на выбор - потратить N секунд в день на тормоза или бороться с мельницами и потратить часы и дни впустую.

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

Вот и получается на выбор - потратить N секунд в день на тормоза или бороться с мельницами и потратить часы и дни впустую.

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

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

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

Блокнот и gradle </thread>

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

Абсолютно согласен.

Я предпочёл не тратить нервы и время на то, чтобы идти против течения, хотя это самое течение не приносит удовольствия от процесса программирования.

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

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

Я мантейнер пакетов со стажем - версии будут такие какие я захочу. Главное чтобы софт был в принципе пригоден для опакечивания. Если нет вариантов кроме как ставить этот многомегабайтный кусок говна через его блобоинсталлятор значит я навсегда ставлю крест на разработке под говноид. Если он раздербанивается на собираемые из исходников утилиты, ну и может куски для сборки apk которые запускаться на сборочной машине не будут, то сойдёт. adb вот например нормально опакечивается.

slovazap ★★★★★
()

Если я правильно помню, из левоты нужны aapt, dx и adb. Ну и android.jar.

Проблема в том, что сырцы этой ничтожной левоты лежат в гигантских гугловых репах, и для сборки требуют ещё больше жироты типа гуглотеста и пр, загаживать систему которыми нафиг никому не упёрлось ради ничтожных софтинок. Когда-то давно, один герой осилил выдрать из гигантских реп adb и сделать standalone adb source (ничтожность этой говноутилитки можете сами оценить), но потом забил на это дело. Наверно можно сделать то же самое и сейчас. Возможно это даже будет востребовано, в том числе и мейнтейнерами пакетов в разных дистрах. Сделать скрипт который автоматом выдирает из гигантских реп сырцы нужных ничтожных софтинок и соответственно апдейтит нормальные репы с ними, которыми уже все будут пользоваться.

Stanson ★★★★★
()

Можно. Но смыла не имеет абсолютно никакого. А лучше сразу брать Flutter/Xamarin/React Native, т.к. с большой долей вероятности одного андроида будет мало.

Stack77
()

Реальность без студии будет очень суровой.

Тормоза на i5 + ssd + 16gb наблюдаю только при открытии и первом билде проекта. Разв пару дней вынужденно делаю Invalidate caches/restart - у студии что-то слетает и перестают видеться переменные и т.д, но это простительно при остальном удобстве.

ps: отладку и проектирование интерфейса тоже без студии планируешь делать?

man-from-36
()
Последнее исправление: man-from-36 (всего исправлений: 1)
Ответ на: комментарий от Stack77

у флуттера поддержка десктопов только-только появилась, для реакта под каждую платформу придется кучу оригинального кода писать, electron не везде умеет, apache cordova аналогично…

а надо бы win + macos + linux + ios + android

man-from-36
()

Студию можно и не любить, но почему бы не заглянуть в документацию?

Но при установке на живую мобилу (samsung note 9) мобила сказала такое: http://0x0.st/-TyG.jpg

о ругани на «старину платформы»: https://developer.android.com/guide/topics/manifest/uses-sdk-element.html

потому что Aligning ломает цифровую подпись как-то

apksign & zipalign: https://developer.android.com/studio/command-line/zipalign

в двух словах, сначала zipalign потом apksign. Если используешь оба варианта подписи, тогда так: jarsign, zipalign, apksign.

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

Можно. Но смыла не имеет абсолютно никакого.

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

igloev
() автор топика
Ответ на: комментарий от man-from-36

Реальность без студии будет очень суровой.

Да не, вроде норм же как показывает опыт написания мануала в стартовом посте. Только в башскрипт загнать это всё и будет огонь.

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

Тут особых вариантов нет. Дальше «Hello, world!» без студии будет не работа, а ад. Я бы все же рекомендовал на Flutter сразу переходить. Судя по ОП вы не в компании работать собрались с жестким требованием разработки в Android Studio. Flutter большинство задач покрывает, компилируется в нативный код + сразу получаете ios/android, как минимум.

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

Flutter большинство задач покрывает, компилируется в нативный код + сразу получаете ios/android, как минимум.

Ух ты, клёво. Надо почитать. А Android SDK этот флуттер с собой тащит или просит установить из официальных гуглоисточников? А то я люблю всё нативное из праивльных мест поставленное.

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

Я не читал. Когда-то давно собирал подобным образом «Hello, world!», многое забылось + редко пишу мобильные приложения. Дебажить, либы подключать, UI делать - возможно, конечно, но это же не работа будет, а издевательство над собой. Трудозатраты нереальные, проще ОЗУ накинуть и проц поменять (если совсем уж древнее железо для студии).

Stack77
()

Не понимаю откуда в треде шквал советов об упрощении жизни. Вопрос был в изучении основ и низкоуровневых минимальных шагов для создания приложенечек. Но за флуттер спасибо.

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

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

Забавно, как вы быстро срываетесь на оскорбления, защищая своё поделие.

anonymous
()

Для начала сделай хелло-ворлд в студии. Внимательно разберись с каждым файлом. Разберись, что делает андроид плагин в грэдле. И потом повтори это всё. В целом ничего невозможного тут нет, все операции для сборки используют консольные утилиты из Android SDK, всё, что нужно - выяснить нужные параметры для из вызова (и порядок). Я бы для начала запустил бы ./gradlew –debug assembleDebug и долго читал бы выхлоп грэдла, скорей всего там будет вся нужная информация для дальнейшего продолжения разборок. Все маны в интернете есть, гугли внимательно. А готовых рецептов вряд ли найдёшь, никто в своём уме так не делает, исключительно для обучения, а для обучения это надо делать самому.

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

Но можно! Тем более, что встроенные средства разработки под android и ios там есть.

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

никто в своём уме так не делает

А CI как же организуют? Или разработчики под Andriod не используют CI?

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

А CI как же организуют?

Непонятно, в чём вопрос. Проект на android собирается из консоли командой ./gradlew clean assembleDebug. Топикстартер просто не хочет использовать Gradle, а хочет вместо этого использовать какие-то свои скрипты.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.