Android 2019
Android 2019
Версии ОС
Среды разработки
Языки разработки
Java
Официальный язык программирования, поддерживаемый средой разработки
Android Studio. В 2018 году Java вошёл в пятёрку самых популярных языков
программирования.
На Java ссылается большинство официальной документации Google.
Kotlin
Язык был официально представлен в мае 2017 года на Google I/O и
позиционируется Google как второй официальный язык программирования под
Android после Java, только чуть более простой для понимания. Знания Java
необходимы здесь, чтобы понимать принципы работы Kotlin, общую структуру
языка и его особенности.
В настоящее время Kotlin используется для создания Android-приложений
такими лидерами бизнеса как Pivotal, Atlassian, Pinterest, Evernote и Uber.
Последняя статистика App brain показывает, что в сегменте топовых
приложений 2018 года Kotlin занимает 25,3% рынка. При этом 40,76% новых
инсталляций приложений также приходятся на приложения, написанные на Kotlin.
Почему Kotlin это ведущий язык программирования для разработки Android-
приложений?
1) Улучшенная производительность
Последовательный и интуитивный синтаксис Kotlin обеспечивает
повышение производительности команд разработчиков. Для написания и
деплоймента программы требуется меньше времени и меньше строк кода. В
результате вы получаете готовое приложение быстрее.
2) 100% совместимости с Java
Другими словами, методы Java можно вызывать из Kotlin. Это является
преимуществом не только для разработчиков, но и для компаний, имеющих
большую кодовую базу на Java.
3)Легкость поддержки
Android-разработчикам легко поддерживать код на Kotlin, поскольку этот
язык поддерживается во многих IDE, включая Android studio, и в нескольких
других SDK. Кроме того, разработчики могут работать с любым привычным
набором инструментов.
4) Надежность
Последняя версия Kotlin имеет обратную совместимость со всеми
предыдущими версиями. Это избавляет Android-разработчиков от огромной
головной боли – работы с разными версиями.
5) Легкость изучения
Kotlin изучать легче, чем Java, потому что для этого не требуется никаких
знаний в сфере разработки мобильных приложений.
6) Поддержка Android Studio
Android Studio предоставляет расширенную поддержку Kotlin и инструменты
адаптации. Разработчики могут работать одновременно на Kotlin и на Java.
Недостатки Kotlin:
1) Скорость компиляции
Разработчики жалуются на колебания скорости компиляции кода на Kotlin. В
некоторых случаях она происходит очень быстро, а в других заметно медленнее.
2) Меньшая поддержка сообщества
У Kotlin маленькое сообщество разработчиков, в связи с чем количество
ресурсов для изучения этого языка ограничено. Вам встретится много вопросов без
ответов.
В чем Java все еще лучше, чем Kotlin?
1) Портируемость
С помощью виртуальной машины Java программы на этом языке могут
запускаться практически в любой системе. В результате Java получает лидерство
среди Android-приложений.
2) Большое сообщество
Благодаря обширным сообществам на GitHub и Stack Overflow разработчики
могут получить помощь практически по любой проблеме.
3) Кроссплатформенность
Применение этого языка не ограничивается лишь разработкой Android-
приложений. Java прекрасно подходит и для разработки кроссплатформенных
приложений.
4) Ресурсы
Поскольку Android разработан на Java, этот язык имеет уже готовые
библиотеки и SDK для облегчения процесса разработки.
В чем Java отстает?
1) Скорость
Java требует больше памяти и, по сравнению с другими языками, работает
намного медленнее.
2) На Java тяжелее писать код
Код на Java длинный, а следовательно, он требует больше времени для
написания, в нем больше ошибок и багов.
Что есть в Java, чего нет в Kotlin
Статические члены
Примитивные типы, не являющиеся классами
Частные поля
Wildcard-типы
Отмеченные исключения
Что есть в Kotlin, чего нет в Java
Шаблоны строк
Синглтоны
Null безопасность
Функции расширения
Умные приведения типов (smart casts)
С/С++
Более низкоуровневые языки поддерживаются Android Studio
с использованием Java NDK (Native Development Kit). Это позволяет писать
нативные приложения, что может пригодиться для создания игр или других
ресурсоёмких программ. Код будет запускаться не через Java Virtual Machine,
а непосредственно через девайс, что даст вам больше контроля над такими
элементами системы, как память, сенсоры, жесты и т. д., а также возможность
выжать из Android-устройств максимум ресурсов. Это также означает, что
пользоваться вам придётся библиотеками, написанными на C или C++.
Python
Любители этого языка разработали множество инструментов, позволяющих
скомпилировать код на Python в требуемое состояние, а наличие различных
библиотек позволит строить даже нативные интерфейсы. Самым популярным
фреймворком является Kivy.
BASIC
Он не поддерживается Android Studio и не подходит для сред Unity
и Xamarin. Для BASIC есть специальная среда разработки B4A, в которой можно
создавать Android-приложения.
Lua (с использованием Corona SDK)
На языке Lua основан кроссплатформенный графический движок Corona.
LUA значительно проще Java. Он поддерживает все нативные библиотеки,
позволяя тем самым писать под множество платформ.
PhoneGap
PhoneGap позволяет разрабатывать Android-приложения силами веб-
разработки. Ваше приложение будет отображаться через WebView, но как бы
в обёртке мобильного приложения. Для разработчиков PhoneGap — это что-
то вроде моста для доступа к нативным функциям смартфона или планшета вроде
акселерометра или камеры.
Литература
http://developer.android.com
Архитектура ОС Android
Ядро Linux
Android Runtime
Для устройств под управлением Android версии 5.0 (API уровня 21) или выше
каждое приложение запускается в собственном процессе и с собственным
экземпляром Android Runtime (ART). ART записывается для запуска нескольких
виртуальных машин на устройствах с низкой памятью путем выполнения DEX-
файлов, формат байт-кода, разработанный специально для Android, который
оптимизирован для минимального объема памяти.
До версии Android 5.0 (уровень API 21) Dalvik был временем выполнения
Android. Если ваше приложение хорошо работает с АРТ, то оно должно работать и
на Дальвике, но обратное может быть неверным. Android также включает в себя
набор основных библиотек времени выполнения, которые обеспечивают большую
часть функциональных возможностей языка программирования Java, включая
некоторые языковые функции Java 8, которые использует инфраструктура Java
API.
Нативные библиотеки C / C ++
Повторяющиеся примечания
Кроме того, доступны следующие API-интерфейсы для реализации
возможностей языка Java.
API-интерфейсы отражения и языковых функций:
java.lang.FunctionalInterface;
java.lang.annotation.Repeatable;
java.lang.reflect.Method.isDefault();
а также API-интерфейсы отражения, связанные с повторяющимися
примечаниями, например,AnnotatedElement.getAnnotationsByType(Class).
Вспомогательные API:
java.util.function.
Активация возможностей Java и набора инструментов Jack
Структура проекта
Здесь также мы увидим единственный модуль проекта - модуль app.
Собственно весь код, с которым мы будем работать, располагается внутри этого
модуля.
Все модули в проекте описываются файлом setting.gradle. По умолчанию он
имеет следующее содержимое
include ':app'
android {
compileSdkVersion 26
defaultConfig {
applicationId "by.bstu.patsei.hellow"
minSdkVersion 28
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-
core:3.0.2'
}
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
Файл манифеста
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".HelloWActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</manifest>
Ресурсы приложения
Папка res содержит каталоги с ресурсами, в частности она содержит
следующие каталоги:
папка drawable предназначена для хранения изображений,
используемых в приложении
папка layout предназначена для хранения файлов, определяющих
графический интерфейс. По умолчанию здесь есть
файл activity_main.xml, который определяет интерфейс для
единственной в проекте activity - MainActivity
папки mipmap-xxxx содержат файлы изображений, которые
предназначены для создания иконки приложения при различных
разрешениях экрана. Соответственно для каждого вида разрешения
здесь имеется свой каталог
папка values хранит различные xml-файлы, содержащие коллекции
Изменим код приложения так, чтобы оно выводило на экран строку "Hello
World!". В файле activity_hello_w.xml определение элемента TextView отвечает за
вывод текстовой информации на экран. Выводимый текст задается с помощью
атрибутаandroid:text.
После сохранения файла мы можем переключиться в графический режим
(рис.).
После переключения режима вы увидите обычный белый и рядом с ним синий
вид (рис. далее). Это один и тот же экран, но он отображен в двух разных
режимах: Design – в нем мы видим View компоненты так, как они обычно выглядят
на экране; Blueprint – отображаются только контуры View компонентов.
Структура окон разработки и редактирования экрана приложения
Запуск приложения
1) Создание эмулятора
2) Использования мобильного устройства для тестирования
Установить опции разработчика на МУ
Settings > About phone (Настройки > О телефоне) и семь раз
нажмите Build Number (Номер
сборки).
Вернитесь к предыдущему экрану и
Сторонние эмуляторы
Genymotion
Droid4x
BlueStacks
….