Рубрики
Без рубрики

Как я написал свое первое полнофункциональное приложение для Android

В течение 4 месяцев я разработал идею мобильного приложения, самостоятельно изучил фреймворк Android и т. д… С тегами android, java, firstpost.

В течение 4 месяцев я спланировал идею мобильного приложения, самостоятельно изучил фреймворк Android, написал свой первый REST API и выпустил готовое приложение для Android в Google Play Store. Я многому научился на этом пути, поэтому решил поделиться тем, что узнал.

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

Этот проект состоял из 5 основных компонентов: Подготовка, Интерфейс, Серверная часть, Модульное тестирование и выпуск Play Store. Ниже приведены все вещи, которые помогли мне создать мое приложение.

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

Я использовал TutorialsPoint для изучения XML и Java в рамках Android framework. В дополнение к заметкам я закодировал вместе с учебником, чтобы создать одно гигантское приложение, которое на самом деле ничего не делало, но демонстрировало все, чему я научился.

Тем временем я искал хорошее настольное приложение для создания каркаса. Каркас – это набор эскизов для приложения, который показывает структуру и макет . Я начал больше сосредотачиваться на пользовательском интерфейсе в своих проектах, и я начал использовать больше навыков разработки программного обеспечения. Я прочитал о том, как спланировать мобильное приложение, и, набросав несколько экранов в своем бумажном блокноте, я нашел Карандаш . Он был легким, но некоторые другие разработчики сказали, что предпочитают легкое программное обеспечение для создания каркасов, поэтому я согласился с ним. Это также бесплатно, еще один критерий, который я искал.

Мой каркас с низкой точностью на бумаге Borum Jot

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

Карандаш был тем, что я считал своим высококачественным, или “hi-fi”, каркасом. На самом деле я нарисовал почти каждый экран, но я не фокусировался на цветовой теме. Я просто хотел выяснить как и где Я бы выложил особенности.

Затем я перешел к своему макету. Я знал, что это все еще личный проект, на который посмотрит не так много людей, поэтому я выбрал для макета то же программное обеспечение, что и для прототипа: Adobe XD. Adobe XD – это мощное бесплатное приложение для Windows для создания макетов и прототипов. Дело в том, что у него есть кривая обучения. После просмотра учебных пособий я был уже на пути к тому, чтобы…

А для прототипа я соединил “монтажные области” вместе в Adobe XD. Прямоугольники были идеально выровнены, цвета были именно такими, как я планировал, и прототип функционировал в той степени, в какой это возможно для программного обеспечения без данных.

После двух месяцев планирования и обучения я был готов приступить к созданию своего приложения.

Конечно, я начал с XML. Файлы XML-макета содержат разметку , что означает, что на самом деле они не использовали логику. Я выполнял одно действие (это то, что Android называет экраном) в день, и примерно через 2 недели я почти имитировал свой макет (за исключением множества деталей, например, на экране задач).

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

%[ https://gist.github.com/Borumer/d76ef92e042f62507e7de5250ffad27d ]

За еще меньшее время я успешно смоделировал большую часть своего макета с помощью реального кода.

Это был мой первый раз, по крайней мере, я так думал, отделяя бэк-энд от фронт-энда. Мне было интересно, что разработчики voodoo magic использовали для создания REST API и “внешней конечной точки API”, и я хотел создать ее сам.

Однако, оказывается, я уже создавал веб-приложения с полным стеком раньше, просто технически не REST API. Я знал, что PHP и REST API – это просто набор страниц, написанных на серверном языке, таком как PHP, которые выдают либо XML, HTML (редко), либо JSON-вывод и возвращают стандартные коды состояния HTTP. Если кто-то знает, как использовать PHP для запроса к базе данных, он или она может создать REST API.

Ключевой частью здесь является REST, который расшифровывается как Репрезентативная передача состояния, это архитектурный стиль. Никаких дополнительных классов не требуется, за исключением тех, которые помогают разработчику выдавать выходные данные и устанавливать HTTP-заголовки. Я создал класс с именем Rest Service , который имел статический метод для установки заголовка с кодом состояния и установки Content-Type в application/json . С классами, которые запрашивали базу данных, классами, которые помогали с проверкой и отправкой заголовков, и страницами PHP, которые создавали экземпляры и вызывали все их методы, называемые конечными точками API, я эффективно создал REST API.

Я ходил взад и вперед между написанием нового внутреннего кода и написанием нового внешнего кода в течение оставшихся двух месяцев, за исключением одной заминки. Я использовал Vercel , отличную платформу хостинга freemium, для размещения моего API и GoDaddy для домена. Vercel использует Amazon Web Services для развертывания своего сайта, а Amazon Web Services использует динамические или постоянно меняющиеся IP-адреса. Чтобы извлечь данные из базы данных, которую я создал в своей учетной записи хостинга GoDaddy, мне нужно было внести в белый список IP-адрес созданного мной API. Это создало проблему, потому что не было определенного IP-адреса для серверов Vercel. После призывов о помощи я закончил тем, что (очень небезопасно, но без какого-либо другого жизнеспособного варианта) внес ВСЕ адреса в белый список с %.%.%.% чтобы решить эту проблему.

Как я упоминал ранее, я хотел использовать методы, используемые профессиональными разработчиками программного обеспечения. Одним из них было тестирование разработки программного обеспечения. Я прошел курс по EdX, в котором рассказывалось о том, как писать модульные тесты, поэтому я хотел сделать это нормой для своих программных проектов.

Android Studio, IDE, которую я использовал для создания интерфейса проекта, имеет как часть каждого проекта Android папку для тестирования. Фреймворк Android начинается с Mockito и JUnit для модульного тестирования. Я написал несколько модульных тестов для своих более простых модулей (таких как чисто Java-модули) и не стал беспокоиться о контекстных и интерфейсных тестах. Вот пример, который проверял, вернул ли мой Login Validation правильную строку в зависимости от того, правильно ли совпадают адрес электронной почты и пароль.

public void loginCredentialValidation_isCorrect() {
    LoginValidation loginValidation = new LoginValidation(mMockContext, "armageddon@gmail.com","pass");
    String resultWithInvalidCredentials = loginValidation.validate();
    assertEquals(resultWithInvalidCredentials, LoginValidation.SUCCESS);
}

Хотя я тестировал не все и, конечно, не наравне со всеми принципами тестирования, я хорошо познакомился с этим навыком. Если вы также новичок в модульном тестировании, я бы посоветовал отложить написание тестов до тех пор, пока вы действительно хорошо не освоите язык и фреймворк. Хотя это не соответствует разработке, основанной на тестировании, написание кода не только в новой среде (Mockito и JUnit), для новой среды (Android), для новой цели (тестирование программного обеспечения) может быть очень сложным, если вы уже новичок в самих технологиях.

Учетная запись разработчика Google Play (с единовременной платой в размере 25 долларов США) предоставила мне доступ к консоли Google Play, которая позволила мне загрузить мое приложение для Android в виде файла .aab (Android App Bundle), что делает мой код понятным для операционной системы Android. Я выпустил для каждой функции, которую я добавил, и использовал различные формы тестирования.

Я надеюсь, что это руководство было полезно для всех, кто хочет создать свое собственное мобильное приложение. Даже если вы используете Kotlin вместо Java или JSON вместо XML, большинство упомянутых вещей остаются прежними. Вы уже создавали мобильное приложение раньше? Было ли ваше путешествие похоже на мое? Оставьте комментарий ниже!

Приложение является общедоступным и доступно для скачивания: Приложение является общедоступным и доступно для скачивания:

Первоначально опубликовано на HashNode по адресу Первоначально опубликовано на HashNode по адресу

Оригинал: “https://dev.to/varuns924/how-i-wrote-my-first-full-stack-android-app-2c11”