Или этапы разработки первого Android-приложения для обучения
Привет всем, котаны, старички и все остальные! Сразу скажу, я не программист, а только учусь. В этой статье я расскажу, как создать в принципе (почти) любое приложение, но в данном случае речь пойдет про Android.
Дисклеймер:
Вряд ли статья подойдет для гиков и программистов с опытом.
Статья ориентирована на новичков и имеет информативно-популяризующий характер, возможно, вдохновив кого-то на создание своего приложения или небольшого проекта.
Для некоторых читателей она может показаться нубской, однако лично для меня это является микро-победой. Всем добра и бобра!
Почему freestyle?
Дело в том, что я не создавал никаких макетов, не рисовал экраны, не продумывал логику и всего остального. Просто добавлял разные элементы в процессе создания, чувствуя себя художником с обилием возможностей. Например, такие микро-фишечки, как рандом, автопереход, статистика. Конечно, в голове генерировалось много всего интересного, что хотелось делать и воплощать. Однако я не хотел затягивать создание приложения более крупным функционалом, так как моя цель заключалась в том, чтобы создать что-то быстро с минимальными проблемами. В результате я пришел к решению, что для начала подойдет минимальный функционал.
К тому же, поскольку я не продумывал логику изначально, а действовал на лету, пришлось бы переписывать много кода, что увеличило бы его объем. Кстати, из-за этого в первом приложении получилось больше кода, так как из-за кривой структуры пришлось дописывать дополнительный код.
Начало
Всё началось с того, что я искал обучающие приложения по программированию. Как ни странно, в русскоязычном сегменте почти отсутствуют подходящие приложения, а многие из них представляют справочники в виде книг. Мне же хотелось иметь приложение в виде вопросника (quiz), чтобы можно было использовать в свободное время, откладывая точную информацию в виде ответов на заданные вопросы.
Подумав, почему бы не попробовать создать своё приложение, я начал искать информацию о том, как создать приложение на Python. Наткнувшись на Kivy (про Kivy я уже знал, но не вникал), я затем обнаружил KivyMD. Дизайн и возможности KivyMD мне сразу понравились. После прочтения нескольких статей и просмотра видеороликов на youtube (вы можете найти это в интернете, всё легко находится), я решил попробовать.
Этап первый: поиск нужного функционала
Так как я не программист, не знав с чего начать, я начал искать уроки в надежде найти нужный мне функционал для реализации своего замысла. Прокликав разные запросы во всех поисковиках, я обнаружил необходимый функционал, хоть и ограничивался только начальным этапом (но даже это уже хорошо: первый экран – старт и второй экран с четырьмя окнами ответов на вопросы калькулятора (сейчас даже улыбает), на скринах, думаю, будет понятно, о чем идет речь).
Проработав от А до Я какое-либо приложение, разметка KIVY становиться интуитивно понятна (хотя это скорее всего не для всех, но всё же).
Затем я приступил к написанию кода, повторяя уроки и адаптируя приложение под свои нужды. Мне хотелось чувствовать радость от того, что мои маленькие задумки оживают, ощущая при этом прилив радости, так как я осуществляю их в жизнь.
Этап второй: подключения ChatGPT
Пользоваться ChatGPT я начал в начале весны 2023 года, как через его API (сделав своего телеграм бота в пару строк), так и через браузерную версию, понимая, что этот инструмент является отличным помощником почти во всем. Я предполагал, что он поможет мне и в написании кода. После первого этапа, когда дописывать код с урока уже не было релевантно моим задачам, я начал загружать куски кода и просить GPT (для справки: использовалась версия 3.5) доделывать нужный функционал, с чем он почти всегда успешно справлялся.
Как пользоваться GPT подробно описывать не буду. Недавно обнаружил статью, посвященную созданию приложений с использованием ChatGPT, что добавляет интересный аспект к моему опыту. Заметил это уже после создания своего приложения. Посмотреть можно тут/клик.
p.s. Заметил что в комментариях часто спрашивают каким образом использовать ChatGPT и какой бот использовать, так вот есть телеграм бот (ссылка/клик) использует все официальные, обновлённым APi: gpt-3.5-turbo; gpt-4; gpt-4-1106-preview; gpt-4-vision-preview.
Этап третий: сборка apk
Доделав приложение до необходимого функционала, мне хотелось как можно быстрее скомпилировать его в apk, чтобы пощелкать свое творение на телефоне и затем допилить нужные детали (хотя, строго говоря, первоначальный замысел уже был готов на этом этапе). На своем пк мне не хотелось устанавливать какие-либо дополнительные программы и разбираться с технической частью, так как в процессе поисков я часто сталкивался с утверждением, что сборка – одна из самых проблемных вещей (на этом этапе у многих новичков возникают проблемы и ошибки). Подумав, что если это действительно сложно и тяжело, то я могу перейти на другой способ, но все же решил попробовать. Я начал заново искать информацию и разбираться, как выполнить сборку, и обнаружил, что можно воспользоваться Google Colab (что меня очень обрадовало).
Этап четвертый: сборка apk в Google Colab
Соответственно, на данном этапе у меня тоже возникали ошибки, и я не особо знал, как их решать, и что с ними делать. В надежде на успешную сборку я передавал их GPT, тестировал и пробовал различные варианты. Сразу скажу, что этот процесс удобнее и легче осуществлять на ПК. Я обратился к парням в телеграм-чате по разработке (находится тут/клик), начал задавать им вопросы, где-то они мне помогли, где-то я продолжил исследовать информацию самостоятельно, и в итоге смог скомпилировать свое первое приложение, что вызвало у меня максимальную радость. Сразу же загрузил его на телефон, но, к удивлению, оно не работало. Проблема заключалась в том, что я сам сделал что-то неправильно – это уже отдельная история, связанная с моим нубством. Помощь мне оказал парень из чата (привет, Павел).
Что нам нужно для сборки в Google Colab:
аккаунт в Google;
немного технических знаний (главное);
самое главное: наш прилично оформленный код приложения;
в принципе, больше ничего и не нужно.
Для удобства я составил инструкцию, чтобы быстро проверять. Делюсь с вами:
Сборка мобильного приложения на KIVY для Android через Google Colab
Просмотрите это видео
Далее переходите к файлу buildozer
Файлы исключения для buildozer:
source.include_exts = добавить используемые форматы в коде, например mp3, ttf
Все используемые библиотеки для buildozer:
requirements = python3,kivy,kivymd
(если используется kivymd, пишем обязательно; встроенные модули не писать, например, не писать: random, json)
Сборка конфигурации:
android.archs = armeabi-v7a
Остальное для первого раза можно оставить по умолчанию.
Примечание: следуйте указанным командам для Google Colab, здесь они представлены.
Таким образом, вы сможете эффективно использовать Google Colab для сборки мобильного приложения на KIVY для Android. Но всё всегда меняется в том числе данный туториал, так что это работает на 02.02.2024, а лучше используйте сразу пк.
Заключительный этап:
Закинув приложение на телефон, я провел тестирование и вновь испытал радость от успешного результата. И приступил к завершению своих микрофишек, о которых упоминал в самом начале статьи. На этом можно было бы заканчивать, так как я завершил разработку приложения, но возник один нюанс. После того, как весь функционал был создан, на компьютере всё работало отлично: статистика функционировала, результаты quiz'а сохранялись в формате JSON. Но после сборки на Android результаты не сохранялись, и это стало для меня вызовом, так как на компьютере всё успешно сохранялось, а на телефоне результаты обнулялись после перезапуска. На этом этапе я снова начал искать информацию и обратился за помощью в чат. Там мне посоветовали установить ADB (Android Debug Bridge). Я продолжил поиск информации, перечитывая, вероятно, всё, что есть в интернете, как полезное, так и бесполезное. Снова в чат, и снова мне сказали установить ADB.
Затем приложение было адаптировано для сохранения в формате INI (что также не помогло). Я думал переписать в формат TXT, чистый JSON или использовать TinyDB. Откровенно говоря, к этому моменту у меня уже не оставалось сил разбираться с ADB. Я попросил участника чата проверить приложение в ADB (Привет, Павел, если ты читаешь - то ещё раз привет), но он ничего не обнаружил. Затем в чате на мои умоляющие обращения отозвался парень по имени Алексей (привет, Алексей, спасибо за помощь, если читаешь). Я ему отправил свой проект и код, он провёл проверку и нашёл ошибки, указав меня на них. Хотя на самом деле это были не ошибки, а просто упущения в коде - пропущены два вызова функции сохранения. Ну вот и всё, приложение готово, и теперь вы можете ознакомиться с ним ниже?.
Мой канал, для тестирования хабр эффекта.
Выводы
Kivy и KivyMD – это отличные инструменты, которые меня впечатлили. Подходит как для новичков, так и для профессионалов. С их помощью новичок может легко создать простое или средней сложности приложение, в то время как опытные программисты могут разработать мощное и красивое приложение. Существует обилие примеров, что делает их использование ещё более привлекательным.
Рекомендую избегать повторения моего опыта и сразу начинать работать на пк. Хотя, для первоначального опыта можно воспользоваться Google Colab.
Если вы решите заниматься созданием приложений для Android, учтите, что вам придется установить Android Debug Bridge (ADB).
Независимо от того, что говорят, от работы с ChatGPT не стоит отмахиваться. Этот инструмент – отличный помощник, который быстро и почти всегда предоставляет необходимую информацию (соответственно на данный момент в рамках разумного).