I want to change the minimum SDK version in Android Studio from API 12 to API 14. I have tried changing it in the manifest file, i.e.,
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="18" />
and rebuilding the project, but I still get the Android Studio IDE throwing up some errors. I presume I have to set the min SDK in ‘project properties’ or something similar so the IDE recognizes the change, but I can’t find where this is done in Android Studio.
Laurel
5,90314 gold badges30 silver badges56 bronze badges
asked Oct 19, 2013 at 10:31
8
When you want to update your minSdkVersion in an existent Andriod project…
- Update
build.gradle (Module: YourProject)under Gradle Script and
make sure that it is NOTbuild.gradle (Project: YourProject.app).
An example of build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "28.0.2"
defaultConfig {
applicationId "com.stackoverflow.answer"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dependencies {
androidTestCompile 'junit:junit:4.12'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
- Sync gradle button (refresh all gradle projects also works).
or
- Rebuild project
After updating the build.gradle‘s minSdkVersion, you have to click on the button to sync gradle file («Sync Project with Gradle files»). That will clear the marker.
Updating manifest.xml, for e.g. deleting any references to SDK levels in the manifest file, is NOT necessary anymore in Android Studio.
Ola Ström
3,5644 gold badges20 silver badges40 bronze badges
answered Nov 23, 2013 at 21:08
SottiSotti
13.9k2 gold badges50 silver badges43 bronze badges
12
Update 2022
For Android Studio users:
-
Right click the App directory and
Choose the «Open Module Settings» (F4) option
-
Change the «Min SDK Version» in the Default Config tab
NOTE:
You might also want to change;
the «Target SDK Version» in the Default Config tab and
the «Compile SDK Version» in the Properties tab
-
Click Apply, then OK, and Gradle should automatically be synced
For users of older Android Studio versions:
- Right click the App directory and
Choose the «Module Setting» (F4) option - Change the ADK Platform to what you need
- Click OK and Gradle should automatically be synced
Ola Ström
3,5644 gold badges20 silver badges40 bronze badges
answered Feb 10, 2014 at 0:29
user3291001user3291001
1,9191 gold badge10 silver badges3 bronze badges
4
As now Android Studio is stable, there is an easy way to do it.
- Right click on your project file
- Select «Open Module Settings»
- Go to the «Flavors» tab.
- Select the Min SDK Version from the drop down list
PS: Though this question was already answered but Android Studio has changed a little bit by its stable release. So an easy straight forward way will help any new answer seeker landing here.
Isuru
30.1k59 gold badges187 silver badges295 bronze badges
answered Dec 23, 2014 at 19:20
priyankvexpriyankvex
5,6805 gold badges27 silver badges43 bronze badges
5
In android studio you can easily press:
- Ctrl + Shift + Alt + S.
- If you have a newer version of
android studio, then press on app first.
Then, continue with step three as follows. - A window will open with a bunch of options
- Go to Flavors and that’s actually all you need
You can also change the versionCode of your app there.
Daniel
451 silver badge9 bronze badges
answered May 13, 2015 at 19:48
Salah KleinSalah Klein
3703 silver badges12 bronze badges
In build.gradle change minSdkVersion 13 to minSdkVersion 8 Thats all you need to do. I solved my problem by only doing this.
defaultConfig {
applicationId "com.example.sabrim.sbrtest"
minSdkVersion 8
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
answered Jul 5, 2014 at 13:57
Sabri MevişSabri Meviş
2,1011 gold badge30 silver badges34 bronze badges
According to this answer, you just don’t include minsdkversion in the manifest.xml, and the build system will use the values from the build.gradle file and put the information into the final apk.
Because the build system needs this information anyway, this makes sense. You should not need to define this values two times.
You just have to sync the project after changing the build.gradle file, but Android Studio 0.5.2 display a yellow status bar on top of the build.gradle editor window to help you
Also note there at least two build.gradle files: one master and one for the app/module. The one to change is in the app/module, it already includes a property minSdkVersion in a newly generated project.
answered Apr 15, 2014 at 9:10
MeierMeier
3,8381 gold badge17 silver badges46 bronze badges
For the latest Android Studio v2.3.3 (October 11th, 2017) :
1. Click View on menu bar
2. Click Open Module Settings
3. Open Flavors tab
4. Choose Min Sdk version you need
6. Click OK
AnneTheAgile
9,7566 gold badges50 silver badges48 bronze badges
answered Oct 10, 2017 at 21:32
RidoRido
7174 gold badges10 silver badges22 bronze badges
If you’re having troubles specifying the SDK target to Google APIs instead of the base Platform SDK just change the compileSdkVersion 19 to compileSdkVersion "Google Inc.:Google APIs:19"
answered May 7, 2014 at 18:16
Juan ReyesJuan Reyes
4045 silver badges9 bronze badges
As well as updating the manifest, update the module’s build.gradle file too (it’s listed in the project pane just below the manifest — if there’s no minSdkVersion key in it, you’re looking at the wrong one, as there’s a couple). A rebuild and things should be fine…
answered Nov 10, 2013 at 11:44
Chris RollistonChris Rolliston
4,7781 gold badge15 silver badges20 bronze badges
0
In Android studio open build.gradle and edit the following section:
defaultConfig {
applicationId "com.demo.myanswer"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
here you can change minSdkVersion from 12 to 14
nstCactus
5,0032 gold badges30 silver badges41 bronze badges
answered May 20, 2016 at 7:35
File>Project Structure>Modules
you can change it from there
answered Feb 7, 2020 at 18:31
Wisam AtilWisam Atil
811 silver badge9 bronze badges
When you want to change minimum SDK you should take care of minSdkVersion[About] in module build.garadle
android {
defaultConfig {
minSdkVersion 21
}
}
answered May 30, 2021 at 14:02
yoAlex5yoAlex5
26.5k8 gold badges180 silver badges191 bronze badges
Changing the minSdkVersion in the manifest is not necessary. If you change it in the gradle build file, as seen below, you accomplish what you need to do.
defaultConfig {
applicationId "com.demo.myanswer"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
answered Jul 1, 2016 at 15:10
Chris DeckChris Deck
1462 silver badges9 bronze badges
To change the minimum SDK version in Android Studio just…
1). Right click on «app» in the «Project» panel
2). Choose the new «Min SDK Version» on the «Default Config» tab
3). Click on «OK» and the project will now resync with the new Gradle settings.
answered Sep 7, 2022 at 18:41
SnostorpSnostorp
4687 silver badges12 bronze badges
For me what worked was: (right click)project->android tools->clear lint markers. Although for some reason the Manifest reverted to the old (lower) minimum API level, but after I changed it back to the new (higher) API level there was no red error underline and the project now uses the new minimum API level.
Edit: Sorry, I see you were using Android Studio, not Eclipse. But I guess there is a similar ‘clear lint markers’ in Studio somewhere and it might solve the problem.
answered Oct 27, 2013 at 9:27
Gradle Scripts ->
build.gradle (Module: app) ->
minSdkVersion (Your min sdk version)
answered Jul 12, 2016 at 11:27
Android-разработчица такси Maxim и ментор курса «Android-разработчик» Арина Мурашева подробно рассказывает, как установить и использовать Android Studio и как собирать и отлаживать приложения.
Для чего используется Android Studio?
Android Studio — это IDE (интегрированная среда разработки) для работы с платформой Android. Она позволяет разрабатывать приложения для смартфонов, планшетов, часов, телевизоров и других устройств на этой ОС.
Я использую Android Studio, потому что это официальная среда разработки, которую поддерживает Google. Она основана на IntelliJ IDEA от компании JetBrains, чьи продукты я люблю и использую еще со студенческих времен. В Android Studio те же горячие клавиши и интерфейс, что и в других продуктах JetBrains, поэтому для меня эта среда самая привычная и удобная.
Установка Android Studio
Установка Java SDK
Установите Java SDK независимо от того, планируете вы разрабатывать на Java или Kotlin. Для этого перейдите на официальный сайт Oracle в раздел Downloads и скачайте нужную версию Java SDK. Для разных проектов могут понадобиться разные версии, но если вы не знаете, какая нужна, — скачивайте последнюю.
Установка и настройка Android Studio
В отличие от многих инструментов разработки, за Android Studio не нужно платить. Чтобы скачать Android Studio, перейдите на официальный сайт для разработчиков Android и нажмите Download, согласитесь с условиями использования и нажмите Download Android Studio.
После завершения скачивания запустите установочный файл и начните процесс установки. Сначала выберите путь установки Android Studio и Android SDK. Оставьте пути по умолчанию или выберите свои.
Если у вас уже установлена старая версия Android Studio, то первое окно установщика будет выглядеть как на скриншоте ниже. При этом процесс установки будет немного отличаться, однако в этой статье рассматривается только первичная установка Android Studio.
Повторная установка Android Studio
После этого несколько раз нажмите Next, оставляя все параметры по умолчанию, пока не начнется установка. После завершения установки Android Studio должна запуститься автоматически. Если нет, то ярлык программы вы сможете найти в меню «Пуск» или на рабочем столе.
При первом запуске Android Studio нужно будет ее настроить. Сначала студия спросит, нужно ли импортировать настройки с прошлой версии. Так как это первая установка студии, то сохраненных настроек у вас нет. Оставьте второй вариант и нажмите OK.
После этого завершите настройку и скачайте необходимые компоненты с помощью Setup Wizard, который открывается после нажатия OK в предыдущем окне.
Нажмите Next и перейдите к выбору типа установки компонентов Android Studio.
Если вам не нужна кастомная настройка компонентов, выберите Standard и нажмите Next.
После этого установщик сообщит, что необходимо загрузить несколько компонентов для завершения установки. Нажмите Finish и подождите, пока все компоненты загрузятся и распакуются. После завершения этого процесса снова станет доступна кнопка Finish. Нажмите на нее, после чего появится экран приветствия Android Studio.
Как использовать Android Studio
Работа в Android Studio похожа на работу в большинстве современных IDE. Однако, как и везде, здесь есть свои нюансы. Далее мы разберем основы работы в Android Studio.
Для начала необходимо создать проект в Android Studio. На приветственном экране нажмите Create New Project, после этого вы увидите экран с шаблонами устройств и Activity (это класс, в котором реализуют логику экрана приложения). Для начала можно выбрать Phone and Tablet (телефоны и планшеты) и No Activity либо Empty Activity. Разница в том, что в первом случае вам нужно будет реализовать первую Activity с нуля, а во втором студия самостоятельно создаст готовый редактируемый шаблон.
После выбора нажмите Next и увидите окно настроек будущего проекта. Название проекта (Name) в Android Studio может быть любым и даже содержать пробелы. А вот имя пакета (Package Name) должно быть уникальным, если вы собираетесь опубликовать приложение в Google Play.
Что еще можно выбрать: расположение проекта (Save Location), язык (Language), который вы собираетесь использовать (Java или Kotlin), и минимальную поддерживаемую SDK (Minimum SDK). Минимальная поддерживаемая SDK — это самая ранняя версия операционной системы Android, в которой приложение может работать. Если вы меняете расположение файлов проекта, то не забудьте создать папку, которая будет содержать ваш проект. Обратите внимание, что в названии не должно быть пробелов.
Язык здесь можно выбрать любой, потому что в проекте доступны и Java, и Kotlin. А вот минимальную поддерживаемую Android SDK выбирайте внимательно.
Студия подсказывает, какое количество устройств на сегодняшний день поддерживают ту или иную SDK. Старайтесь выбрать минимальное значение, чтобы как можно больше устройств могли успешно работать с вашим приложением в Android Studio. Но учтите, что чем ниже минимальная SDK, тем больше трудностей будет возникать при разработке.
Структура проекта Android
Если в предыдущем шаге вы выбрали шаблон Empty Activity, то при создании проекта студия сгенерирует и структуру файлов проекта. Так выглядит пустой, только что созданный проект в Android Studio.
Он содержит 2 корневые папки: app и Gradle Scripts. Папка app включает 3 подпапки: manifests (содержит файлы конфигураций приложения), java (содержит исходный код приложения) и res (содержит файлы ресурсов — картинок, стилей, размерностей и т.д.).
AndroidManifest.xml в папке manifests содержит информацию о пакетах и компонентах приложения. Этот файл важен для работы приложения Android, так как именно в нем прописаны разрешения приложения на использование компонентов системы Android. Также в нем определяется, как будут запускаться компоненты приложения.
Читайте также: Кто такой Android-разработчик?
В папке java исходные файлы проекта могут содержаться в различных подпапках. Обычно в Android-приложении в папке java также есть определенная структура файлов. В этой статье мы рассматривать ее не будем, так как тема выходит за пределы общей структуры проекта.
В папка res есть несколько подпапок даже при создании тестового базового проекта, и она сильно разрастается при разработке настоящих приложений. Будьте готовы, что файлы в этой папке могут занимать много места на вашем жестком диске.
Рассмотрим подпапки, которые появляются при создании базового проекта:
- Папка drawable содержит файлы с изображениями.
- В папке layout нужно располагать xml-файлы, используемые для создания интерфейса приложения.
- Папка mipmap хранит значки приложения.
- Папка values хранит xml-файлы со значениями строк, цветов, тем, стилей.
Папка Gradle Scripts содержит скрипты для автоматизации сборки проекта.
Папка .idea не видна на скриншоте, но если изменить конфигурацию Android на Project, то она появится. Эта папка нужна для настройки метаданных проекта в Android Studio.
Для редактирования xml-файлов в Android Studio встроен удобный инструмент. Он позволяет не только редактировать код xml-файлов, но и видеть изменения в режиме реального времени с помощью визуального представления. В этом же визуальном представлении можно редактировать xml-файлы.
Чтобы посмотреть работу этого редактора, откройте файл activity_main.xml, сгенерированный Android Studio. Кстати, если ваш проект уже разросся и искать файлы неудобно, то нажмите клавишу Shift быстро два раза, и откроется окно поиска по файлам проекта. Начните вводить туда название нужного файла, а затем выберите его из списка. Как видно на анимации, необязательно вводить слова полностью — достаточно первых букв.
По умолчанию открывается только редактор кода.
Чтобы открыть визуальный редактор, нажмите кнопку Split в верхнем правом углу, чтобы отобразить оба представления рядом. Или кнопку Design, чтобы открыть только визуальное представление.
Android Studio выполняет сборку приложения с использованием системы Gradle. Он значительно упрощает сборку проекта из большого количества файлов в apk-файл, который можно установить на Android-устройстве.
Хочу поделиться лайфхаком, который выручал меня не раз. Если проект перестал собираться по непонятной причине, скорее всего, это связано с gradle. В таком случае в меню выберите Build, а затем опцию Clear Project.
После того как вы добавили первую функциональность в свое приложение, начните отлаживать его (запускать и проверять работоспособность всех функций). Лучше делать это на устройстве Android.
Для этого подключите устройство Android к компьютеру через USB. При этом убедитесь, что на телефоне включена отладка по USB в параметрах разработчика.
Чтобы включить параметры разработчика, в настройках своего телефона найдите пункт «Номер сборки» (обычно находится в «Сведениях об устройстве») и нажмите на него быстро семь раз. Далее перейдите в параметры разработчика и включите отладку по USB.
После этого подключите телефон через USB к компьютеру и увидите название своего устройства в верхней панели Android Studio — у меня это Samsung. Обратите внимание, на телефоне могут появиться уведомления, где нужно разрешить отладку с данного компьютера.
Затем нажмите на кнопку Run (зеленый треугольник), и приложение запустится на вашем телефоне.
Если приложение «упало» (завершило работу, когда не должно было) или возникли какие-то другие ошибки — данные вы увидите на вкладке Logcat (внизу).
В панели настроек Logcat можно выбрать устройство, на котором производится отладка, отлаживаемый процесс и поставить фильтр на сообщения, которые хотите видеть в Logcat. Обычно сообщения об ошибках и так заметны — они выделяются красным, — но если хотите видеть только их, то поставьте фильтр Error.
Устройств на Android так много, что невозможно протестировать код на каждом из них. Здесь на помощь приходят виртуальные устройства, доступные для скачивания из Android Studio.
Чтобы создать виртуальное устройство, откройте AVD Manager (Android Virtual Device Manager) и начните создание желаемого устройства.
Для создания нового устройства нажмите кнопку Create Virtual Device. Затем выберите устройство (модель телефона).
После нажмите Next и переходите к выбору системы Android, которая будет установлена на устройство. Если ранее вы не устанавливали ни одной эмулированной системы, то ее нужно будет скачать. У меня уже скачан Android Q.
После скачивания нажмите Next, затем Finish, и создание виртуального устройства завершено.
Чтобы запустить приложение на созданном устройстве, выберите его в списке устройств и нажмите кнопку Run.
По-настоящему освоить Android Studio получится только самостоятельно в процессе практики. Дополнительно рекомендую изучить горячие клавиши в Android Studio (как двойное нажатие Shift для поиска по файлам).
| date | categories | tags | related-id | update | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
2019-07-16 |
|
|
start-java |
2021-08-09 |
Установка Android Studio в Windows
В статье рассказывается, как установить Android Studio в Windows 10.
Предварительные напутствия
Настоятельно рекомендую устанавливать Android Studio на 64-битную Windows. На сайте Android Studio даже нет полноценного установщика на 32-битную версию. Раньше можно было архив скачать на 32-битную, но теперь и это не найти.
В идеале лучше использовать Windows 10 x64, но на Windows 8.1, 8, 7 тоже должно пойти.
Помните, что для Android Studio нужно минимум 8 Гб оперативной памяти (раньше было 2 Гб, а потом 4 Гб) и выше. Программа очень прожорливая. А на жестком диске нужно приличное количество места: после установки с эмулятором всё будет занимать от 15 Гб, а потом в процессе работы после установки библиотек и остального занимаемое место будет быстро расти.
Желательно иметь процессор от Intel, так как на процессорах AMD будут проблемы с эмуляторами Android. Но они решаемы.
И желательно, чтобы процессор имел поддержку виртуализации: сильно ускорит работу эмуляторов.
Если есть возможность и если пользователь на вашем компьютере называется по-русски, то поменяйте его на английское написание. Проблем с русскими именами будет много, причем не только в Android Studio. Очень много программ зарубежного производства рассчитаны на работу с файлами, в пути которых только латиница. Но если возможности нет для смены имени, то в статье будут описаны решения некоторых ваших проблем.
JDK
Если раньше нужно было самостоятельно устанавливать JDK, то теперь он устанавливается самостоятельно при установке Android Studio:
Но если всё таки что-то пошло не так, то подробно об установке JDK можно узнать в статьях: Установка JDK в Windows или Установка OpenJDK в Windows.
Скачивание Android Studio
Переходим по ссылке: https://developer.android.com/studio/.
Нажимаем на кнопку скачивания:
Соглашаемся с лицензией, прокручивая её, и скачиваем:
Установка 64-битной Android Studio
Запускаем скаченный файл:
Раньше рекомендовал менять пути установки Android Studio, но теперь же, наоборот, рекомендую устанавливать всё туда, куда хочет Android Studio, так как на большинстве машин теперь всё работает по умолчанию хорошо. И в следующем окне установщика можем оставить всё, как есть:
Далее по умолчанию, или выберете, где в меню Пуск будет находиться Android Studio:
И пошел процесс установки, в конце которой вы увидите окно окончания установки:
Установка предварительной сборки
Если хотите получить самую последнюю версию Android Studio с самыми последними нововведениями, то можно установить предварительную версию.
На сайте https://developer.android.com/studio/preview/ скачиваем превью версию программы:
Скачается не установщик, а архив, который мы распаковываем. И в папке bin находится файл studio64.exe, который и запускаем:
Первоначальная настройка Android Studio
При первом запуске Android Studio нас попросят выставить некоторые настройки. Сперва появится это окно:
Спросят об отправке статистики в Google (я обычно соглашаюсь):
Выбираем стандартную настройку параметров:
Выбор светлой или темной темы:
Если Android Studio не смог найти сам JDK, то нужно ему помочь его найти:
Список того, что будет установлено:
Сама установка:
Хорошо, если в окне окончания установки не будет красного текста, который свидетельствует о том, что что-то не установилось. Например, обладатели AMD процессоров, возможно, увидят сообщение, что не установился HAXM. Это будет означать, что стандартный эмулятор вы скорее всего нормально не запустите, но Android Studio будет работать полноценно. Если у вас появились другие сообщения об ошибках, то это плохо (гуглите).
Окончание установки:
Создание нового приложения
Теперь создадим новое приложение:
Выбираем болванку нашего приложения Empty Activity:
Выберем настройки проекта:
Внимание! В пути к проекту, как и в его названии, не должно быть русских букв и пробелов! По умолчанию Android Studio сохраняет проекты в папке пользователя компьютера. И если у вас пользователь написан русскими буквами, то ничего не запустится!
Поэтому рекомендую создать какую-нибудь папку, где будете располагать свои проекты. Например, у меня это папка C:UserssergiOneDriveProjectsAndroid.
Когда выберите папку для ваших проектов (у меня C:UserssergiOneDriveProjectsAndroid), то придется вручную дописать название проекта в пути проекта, убирая пробелы из названия. Саму папку создавать не нужно: Android Studio создаст её сам. По итогу у меня получился путь C:UserssergiOneDriveProjectsAndroidMyApplication. В последующие разы Android Studio будет создавать проекты по нормальному.
Также в этом окне выбираем язык Java как основной язык проекта (по умолчанию будет выбран Kotlin), минимальную версию Android, на котором будет запускаться приложение (версия 5.1 вполне сойдет).
И после кнопки Finish должно наконец-то появиться окно редактора Android Studio:
Если надо, то закройте окно с подсказками:
В этот момент начнет работать Gradle, чтобы синхронизировать нужные библиотеки. И пока внизу не прекратиться крутиться кружок, то проект не готов к работе. Если у вас компьютер слабый, то крутиться кружок будет долго:
Внизу пропала полоса загрузки, а кнопка запуска приложения стала зеленой. Это означает, что всё прогрузилось:
Возможно (не обязательно) внизу появится сообщение об ошибке Install Tools ... and sync project:
Эту ошибку вы будете встречать часто, когда будете открывать чьи-то проекты программ на Android Studio, сделанных не на вашем компьютере. Бояться её не нужно: просто щелкните по этой синей надписи Install Tools ... and sync project: Android Studio просто говорит, что ему нужны библиотеки SDK, которых нет у вас, и предлагает их скачать.
Для тех, у кого пользователь назван русскими буквами
Если у вас пользователь назван русскими буквами, то в предыдущем разделе столкнетесь с тем, что Gradle не синхронизирует проект, и вообще он на всё ругается. Дело в том, что по умолчанию Gradle в новых версиях Android Studio ставит в отдельную папку, которая находится в папке пользователя, который у вас написан по-русски.
Вам нужно поменять папку на другую. Создадите, например, папку C:Androidgradle. Потом идите в настройки Android Studio:
Там находим настройки Gradle. Видим, что Gradle сейчас находится в папке пользователя:
Меняем его на путь к папке, которую мы создали, например, это C:Androidgradle:
Но после нажатия OK ничего не произойдет (иногда слетает светлая тема оформления). Нужно Gradle синхронизировать принудительно. Для этого наверху есть кнопка Sync Project with Gradle Files:
И начнется небыстрый процесс скачивания и установки gradle в новую папку с последующей синхронизацией проекта:
Чтобы убедиться, что всё прошло хорошо, то можно посмотреть папку C:Androidgradle, где должны появиться следующие папки:
Если слетит тема оформления, то нужно её вернуть (File → Settings...):
Настройка SDK
Надеялись, что всё установили? Нет, теперь нужно настроить SDK. Для этого из Android Studio нужно перейти в SDK Manager. Это можно сделать так:
В разделе SDK Platforms вы выбираете те версии Android, которые вам потребуются. Можно, например, выбрать последнюю и минимальную версию, под которой всё должно работать, как показано на скриншоте ниже:
В SDK tools выберете Google USB Driver (чтобы можно было подключать планшеты и смартфоны), Google Web Driver:
Нажимаете на OK и начинается процесс установки:
Создание виртуального устройства
Если у вас нет физического Android устройства, или же вы хотите своё приложение протестировать на конкретных устройствах с конкретной версией Android, то вам нужно будет виртуальное устройство.
Идем в AVD Manager:
Создаем новое виртуальное устройство:
Выбираем, какое устройство будем создавать. Допустим, мы хотим создать эмулятор Pixel 2:
Внимание! Важный шаг. Для эмулятора нужен образ версии Android, который будет устанавливаться на эмулятор. И вам нужно будет его скачать, нажав на Download. Например, нам нужен Android 10.0:
Рекомендую выбирать версию Android от 6 и выше. Например, выбирал однажды версию более низкой версии, но при попытке запуска приложений на эмуляторе возникала ошибка такого вида:
Обычно такая ошибка решается отключением Instant Run в настройках, но в тот раз не помогало. Так что еще раз рекомендую выбирать версию Android от 6 и выше (с ними у меня проблемы не возникли).
Если вы обладатель AMD процессора, то вполне вероятно, что образ Android x86 не заработает у вас, поэтому нужно выбирать (после неудачной попытки с образом x86) образ Android из другой вкладки под armeabi-v7a. Но сразу предупреждаю: если у вас эмулятор под armeabi заведется всё-таки, то работать он будет медленно, и было на практике много случаев, когда эмулятор потом так и не запускался:
После нажатия на кнопку Download начнется скачивание образа:
Возможно, что перед этим вас попросят согласиться с лицензией:
После этого образ Android будет доступен для выбора и можно продолжить создание виртуального устройства:
Здесь всё можно оставить по умолчанию:
Попробуем запустить эмулятор:
Если через какое-то время у вас в эмуляторе запустился полноценный Android, то всё замечательно:
Можно пока его не закрывать, так как будем его использовать для запуска нашего приложения. Но для будущего есть рекомендация: закрывать эмулятор лучше через крестик, а не через кнопку питания, которая находится чуть ниже: практика показывает, что при отключении питания потом эмулятор может не запуститься:
Другие эмуляторы
Если родной эмулятор от Android Studio не запускается или тормозит так, что работать нельзя, то можно попробовать сторонние эмуляторы, благо их много.
BlueStacks — известный эмулятор, предназначенный в первую очередь для запуска игр Android на ПК, но его можно использовать и для Android Studio.
Genymotion — по работе похож на родной эмулятор Android Studio. Можно устанавливать образы разных версий Android.
Nox — еще один популярный эмулятор от китайцев, которым лично много пользовался.
Запуск приложения
Теперь у нас Android установлен и настроен. В процессе мы создали приложение до этого. Давайте его запустим. Для этого щелкаем по зеленому треугольнику в панели инструментов:
Или из главного меню вызвать такую же команду:
Обратите внимание на то, что раньше в Android Studio после нажатия на кнопку запуска предлагалось выбрать устройство, на котором будет происходить запуск, то сейчас вначале нужно выбрать устройство в выпадающем меню слева от кнопки запуска:
Если вы выключили эмулятор, то можно либо его запустить через AVD Manager, либо тут выбрать эмулятор и по нему щелкнуть. Но если у вас устройство медленное, и эмулятор запускается долго, то лучше его запустить заранее.
Вас могут попросить что-нибудь дополнительно установить (привыкайте к этому):
Ждем, когда Gradle соберет проект, сформирует APK файл и загрузит его на устройство:
Ошибки при запуске
В реальности при установке Android Studio, при запуске приложений вас может ожидать букет ошибок. Причем они постоянно разные от версии к версии Android Studio. Могут быть проблемы в совместимости JDK и Android Studio, проблемы с операционной системой, учетными записями и так далее.
Всегда лучше загуглить текст ошибки, чтобы почитать, что говорят об этом люди.
На июль 2021 года, например, при создании пустого приложения и его запуске появляется ошибка:
Для исправления этой ошибки, нужно внести изменения в файл build.gradle (обратите внимание, что таких файлов два: вам нужен второй). Нужно в трех местах число 31 поменять на 30:
А потом синхронизировать Gradle:
Скорее всего, когда вы читаете эту статью, то именно этой ошибки не будет.
Как запустить на реальном физическом устройстве
Вначале включим режим Для разработчиков на телефоне.
Зайдите в настройки телефона и в разделе О телефоне найдите пункт Номер сборки. Щелкните по нему 7 раз. На скриншоте ниже мне пишут: «Не нужно, вы уже разработчик», — так как я уже нажимал 7 раз на этот пункт в прошлом:
Теперь в настройках телефона уровнем выше должен появиться пункт Для разработчиков:
В нем нужно включить пункт Отладка по USB:
Теперь, если вы включите свой смартфон через кабель к компьютеру, то устройство должно увидеться в списке устройств:
Но оно не получится запустить приложение на нем, так как устройство имеет подпись Unknown Device. Это возникает по причине того, что на самом устройстве мы не разрешили компьютеру подключение. Разрешите:
Если вы пропустили это окно, то вытащите кабель и вставьте его обратно.
После разрешения доступа устройство должно появиться полноценно:
Теперь его можно выбирать при запуске приложения на телефоне:
Сейчас я описал алгоритм подключения устройства в общем случае на примере Windows 10 и OnePlus 3t с Android 8.0. У вас подключение может отличаться. Лучше загуглить подключение вашего устройства к Android Studio. Пример запроса: Galaxy A6 connect Android Studio Windows 7.
Например, на Windows 7 нужно устанавливать драйвера телефона. Где взять для некоторых марок телефонов можно найти тут: https://developer.android.com/studio/run/oem-usb.
Для Samsung телефонов на Windows 7 драйвера автоматически ставятся при установке приложений Samsung (устройства с версией Android до 4.2 включительно) и Samsung Smart Switch (устройства с версией Android выше 4.2).
Windows 10 обычно все драйвера находит автоматически.
Дополнительные настройки
Настройки, описанные в данном разделе, опциональны, и можно их вообще не трогать.
Переходим в настройки приложения:
В разделе General я ставлю возможность увеличения шрифта колесиком мыши при нажатом Ctrl, а также устанавливаю правило, что при сохранении файла все лишние пробелы справа у всех строк будут удаляться.
Пример приложения
В статье Сложение двух чисел в Android Studio на Java (Android приложение) написано как вы можете написать простое приложение по сложению двух чисел.
Чтобы стать успешным Android-разработчиком нужно хорошее понимание языка Java, API Android и архитектуры приложений Android.
Также важно использовать эффективную среду разработки. В течение многих лет Eclipse IDE с плагином ADT была наиболее популярной платформой для разработки под Android. Но сегодня лидерство принадлежит Android Studio:
В этой статье я кратко расскажу об этой платформе и покажу, как загрузить, установить и запустить ее. После этого мы создадим с помощью Android Studio анимированное мобильное приложение.
- Начало работы с Android Studio
- Загрузите Android Studio
- Windows
- Android Studio Mac OS
- Linux
- Пакетная установка и Android Studio SDK
- Установка Android Studio на 64-разрядную Windows 8.1
- Запуск Android Studio
- Ваше первое мобильное приложение в Android Studio
- Создание нового проекта
- Окна проекта и редактора
- Заключение
Android Studio является официально поддерживаемой Google IDE для разработки Android-приложений. Основанная на IntelliJ IDEA, Android Studio доступна под лицензией Apache 2.0. Актуальная стабильная версия 2.1.1 включает в себя следующие функции:
- Единая среда, в которой можно разрабатывать приложения для всех Android-устройств;
- Возможность создания приложений под Android TV и Android Wear;
- «Мастера» для создания общих макетов и компонентов Android, работающие на основе шаблонов;
- Функциональный редактор макетов, который позволяет перетаскивать компоненты пользовательского интерфейса и включает в себя возможность предварительного просмотра макетов на нескольких экранах;
- Рефакторинг для Android и быстрые исправления;
- Поддержка разработки на основе Gradle;
- Инструменты Lint для повышения производительности, юзабилити, устранения проблем связанных с совместимостью версий и другие;
- Интеграция с ProGuard и возможность подписки на приложения;
- Быстрый и многофункциональный эмулятор;
- Instant Run для внесения изменений в запущенное приложение без создания нового файла APK (Application PacKage Zip);
- Встроенная поддержка облачной платформы Google для интеграции с Google Cloud Messaging и App Engine;
- C++ и NDK;
- Расширение возможностей Android Studio с помощью плагинов.
Google предоставляет Android Studio для Windows, Mac OS X и Linux. Загрузить это программное обеспечение можно с официальной страницы приложения. Перед установкой Android Studio убедитесь, что операционная система и ваш компьютер соответствует следующим требованиям:
- Microsoft Windows 7/8/10 (32-разрядная или 64-разрядная версия);
- 2 ГБ оперативной памяти, рекомендуется 8 ГБ оперативной памяти;
- 2 ГБ свободного места на диске, рекомендуется 4 ГБ (500 МБ для IDE + 1,5 ГБ для SDK Android и образа эмулятора);
- Минимальное разрешение экрана 1280 на 800 пикселей;
- JDK 8;
- Для ускоренного эмулятора: 64-разрядная операционная система и процессор Intel с поддержкой функций Intel VT-x, Intel EM64T (Intel 64) и Execute Disable (XD).
- Mac OS X 10.8.5 или выше, вплоть до 10.11.4 (El Capitan);
- 2 ГБ оперативной памяти, рекомендуется 8 ГБ оперативной памяти;
- 2 ГБ свободного места на диске, рекомендуется 4 ГБ (500 МБ для IDE + 1,5 ГБ для Android SDK и образа эмулятора);
- Для Android Studio минимальное разрешение экрана должно составлять 1280 на 800 пикселей;
- JDK 6.
- Стационарный компьютер с GNOME или KDE: протестированный на Ubuntu 12.04, Precise Pangolin (64-разрядное распределение, поддерживающее 32-разрядные приложения);
- 64-разрядное распределение, позволяющее запускать 32-разрядные приложения;
- Библиотека GNU C (glibc) версии 2.11 или новее;
- 2 ГБ оперативной памяти, рекомендуется 8 ГБ оперативной памяти;
- 2 ГБ свободного места на диске, рекомендуется 4 ГБ (500 МБ для IDE + 1,5 ГБ для Android SDK и образа эмулятора);
- Минимальное разрешение экрана 1280 на 800 пикселей;
- JDK 8;
- Для ускоренного эмулятора: процессор Intel с поддержкой функций Intel VT-x, Intel EM64T (Intel 64) и Execute Disable (XD) или процессор AMD с поддержкой технологии виртуализации AMD (AMD-V).
Когда вы убедитесь, что операционная система совместима и подходит для установки и настройки Android Studio, загрузите соответствующий дистрибутив.
android-studio-bundle-143.2821654-windows.exe включает в себя установщик и Android Studio SDK. В качестве альтернативы можно загрузить файл дистрибутива без установщика и SDK.
Я запустил android-studio-bundle-143.2821654-windows.exe, чтобы началась установка Android Studio. Установщик выводит диалоговое окно установки Android Studio, показанное на рисунке 1:
Рисунок 1. Настройка Android Studio
Нажав кнопку «Далее», я перехожу к следующему диалоговому окну, в котором можно отказаться от установки Android SDK (входит в комплект установки) и Android Virtual Device (AVD):
Рисунок 2. Вы хотите установить Android SDK и AVD?
Я решил сохранить настройки по умолчанию. После нажатия кнопки «Далее» вы попадете в диалоговое окно лицензионного соглашения. Примите его условия, чтобы продолжить установку:
Рисунок 3. Примите условия лицензионного соглашения для продолжения установки
В следующем диалоговом окне предлагается изменить папку в которую осуществляется установка Android Studio и Android Studio SDK:
Рисунок 4. Укажите место, в которое будет осуществлена установка Android Studio и Android Studio SDK
Измените место установки или используйте настройки по умолчанию и нажмите кнопку «Далее».
По умолчанию установщик создает ярлык для запуска программы. Затем нажмите кнопку «Установить», чтобы начать установку:
Рисунок 5. Создайте ярлык для Android Studio
В появившемся диалоговом окне отображается ход установки Android Studio и Android Studio SDK. Нажав кнопку «Показать детали», можно просмотреть подробную информацию о ходе установки.
В диалоговом окне отобразится сообщение о завершении установки:
Установите флажок «Запустить Android Studio»
Чтобы завершить установку и приступить к Android Studio уроку, нажмите кнопку «Готово».
Android Studio при своем запуске выводит следующую заставку:
Рисунок 7. Экран приветствия Android Studio
При первом запуске вам будет предложено установить в диалоговых окнах несколько параметров конфигурации. В первом диалоговом окне основное внимание уделяется импорту настроек из ранее установленной версии Android Studio:
Рисунок 8. Параметры импорта
Можно принять настройки по умолчанию и нажать на кнопку «ОК». После этого Android Studio выведет диалоговое окно «Мастера установки»:
Рисунок 9. Проверка настроек Android SDK и среды разработки
После нажатия кнопки «Далее», «Мастер установки» предложит выбрать тип установки компонентов SDK. На данный момент я рекомендую использовать стандартную конфигурацию:
Рисунок 10. Выберите тип установки
Нажмите кнопку «Далее» и подтвердите выбранные настройки. Затем нажмите кнопку «Готово», чтобы продолжить:
Рисунок 11. Просмотрите настройки
«Мастер установки» загрузит и распакует необходимые компоненты. Нажмите кнопку «Показать детали», если хотите увидеть подробную информацию о загружаемых архивах и их содержимом:
Рисунок 12. «Мастер установки» загружает и распаковывает компоненты Android Studio
Перед тем, как установить Android Studio, еще раз проверьте параметры своей системы. Если ваш компьютер собран не на базе процессора Intel, может возникнуть неприятный сюрприз после того, как компоненты будут полностью загружены и распакованы:
Рисунок 13. Аппаратное ускорение на базе Intel недоступно
Возможные варианты решения проблемы – использовать медленный эмулятор или Android-устройство для ускорения разработки.
Нажмите кнопку «Готово», чтобы завершить работу «Мастера установки». После этого вы увидите диалоговое окно «Добро пожаловать в Android Studio»:
Рисунок 14. Добро пожаловать в Android Studio
Оно используется для запуска нового проекта Android Studio, работы с существующим проектом и т. д.
Самый быстрый способ познакомиться с Android Studio — использовать его для разработки приложения. Мы начнем с приложения «Привет, мир», которое выводит сообщение «Добро пожаловать в Android».
На данный момент у вас уже должна быть установлена, запущена и настроена Android Studio. Нажмите кнопку «Начать новый проект Android Studio». После этого на экране появится диалоговое окно «Создать новый проект», показанное на рисунке 15:
Рисунок 15. Диалоговое окно «Создать новый проект»
Введите название приложения — W2A (Welcome to Android) и доменное имя компании. Затем вы должны увидеть, что в качестве местоположения проекта задан путь C:UsersjeffreyAndroidStudioProjectsW2A. Нажмите кнопку «Далее», чтобы выбрать целевые устройства:
Рисунок 16. Выберите категории целевых устройств
Android Studio позволяет выбирать форм-факторы или категории целевых устройств для каждого приложения. Я использую минимальные параметры SDK API 15: Android 4.0.3 (IceCreamSandwich) (в разделе «Смартфоны и планшетные ПК»), которые поддерживается моим планшетом Amazon Kindle Fire HD. Поскольку Android Studio в настоящее время не поддерживает этот уровень API (даже при добавлении образа системы 4.0.3 через SDK Manager), я изменил этот параметр на API 14: Android 4.0 (IceCreamSandwich), который также поддерживается моим планшетом.
Нажмите кнопку «Далее», и вам будет предоставлена возможность выбрать шаблон для основного направления приложения. Пока мы остановимся на «Empty Activity». Выберите этот шаблон и нажмите кнопку «Далее»:
Рисунок 17. Укажите шаблон направления
Затем настройте направление:
Рисунок 18. Настройте направление
Введите W2A в качестве названия направления и main в качестве названия шаблона и нажмите кнопку «Готово», чтобы завершить этот этап. На экране появится сообщение о том, что идет создание проекта, а затем будет загружено рабочее пространство.
Сначала вы увидите приветственное диалоговое окно «Совет дня», которое при желании можно отключить в Android Studio:
Рисунок 19. Рабочее пространство Android Studio
Рабочее пространство проекта состоит из панели меню, панели инструментов, рабочей области, дополнительных компонентов, с помощью которых можно открыть другие окна (например, окно консоли Gradle), и строки состояния.
Чтобы получить доступ к стандартному диспетчеру AVD или диспетчеру SDK, выберите из меню «Сервис» пункт «Android», а затем в появившемся всплывающем меню — пункт «Менеджер AVD» или пункт «Менеджер SDK».
Когда вы попадаете в рабочую область проекта, W2A идентифицируется как текущий проект. Через несколько минут данные о нем появятся в двух новых окнах:
Рисунок 20. Окна проекта и редактора
Окно проекта представляет собой дерево, основными ветвями которого являются «Приложения» и «Скрипты Gradle». Приложения разбиты на разделы manifests, java и res:
- В manifests хранится файл AndroidManifest.xml, который представляет собой XML-файл, описывающий структуру Android -приложения. В этот файл также записываются настройки разрешений (когда это применимо) и другие сведения о приложении;
- В java хранятся исходные Java-файлы приложения в соответствии с иерархией пакетов — в нашем случае ca.javajeff.w2a;
- В разделе res хранятся файлы ресурсов приложения, которые разбиты на поддиректории drawable, layout, mipmap и values:
- drawable: первоначально пустой подраздел, в котором можно хранить графические ресурсы приложения;
- layout: содержит файлы макета приложения; изначально здесь хранится файл макета основного направления main.xml;
- mipmap: содержит файлы ic_launcher.png, в которых хранятся иконки для запуска приложения с экрана в различных разрешениях.
- values: содержит файлы colors.xml, dimens.xml, strings.xml и styles.xml.
В разделе настроек Android Studio «Gradle Scripts» определены различные файлы .gradle и .properties, которые используются системой сборки на основе Gradle.
Каждое ответвление / раздел соответствует имени каталога или имени файла. Например, res соответствует каталогу res, а strings.xml соответствует файлу strings.xml.
Мы установили, настроили Android Studio и создали проект своего первого мобильного приложения. Теперь вы готовы создать свое Android –приложение. В Android Studio это означает заполнение нового проекта Java-кодом и файлами ресурсов.
Improve Article
Save Article
Improve Article
Save Article
Generally, API level means the Android Version. This determines which version the developers are targeting their application and what is going to be the minimum level of the android version in their application will run. For setting the Minimum level and Maximum level android studio provides two terminologies.
- minSdkVersion: This means the minimum Android OS version that will support the app and
- targetSdkVersion: This means the version for which the developers are actually developing their application.
The app will be compatible with all the versions of android which is falling between minimum level SDK and target SDK. Sometimes during development, there is a need to change the API level of the Android Studio. So to change the API level we have two methods. In this article, we are going to discuss both methods.
Method 1
This method is very simple and very straight forward. One needs to stay very alert while making changes here.
Step 1: Open your project in Android mode then go to Gradle Scripts > build.gradle(Module: app) as shown in the following image.
Step 2: Refer to the below image and here you have to change the minSdkVersion and targetSdkVersion as per the requirement. After changing as per the requirement then you have to click on the Sync Now button and you are done.
Method 2
Step 1: Open Android Studio and go to File > Project Structure as shown in the below image.
Step 2: A pop-up screen will arise like below. Now select the Modules > Default Config and scroll down and you can see two sections as shown in the below image in Default Config. There you change the SDK version as per your requirement and then click on the OK button below. And you are done.
Note: If you are choosing the second Approach then you need not to make changes in Gradle. It will automatically update the gradle.
Improve Article
Save Article
Improve Article
Save Article
Generally, API level means the Android Version. This determines which version the developers are targeting their application and what is going to be the minimum level of the android version in their application will run. For setting the Minimum level and Maximum level android studio provides two terminologies.
- minSdkVersion: This means the minimum Android OS version that will support the app and
- targetSdkVersion: This means the version for which the developers are actually developing their application.
The app will be compatible with all the versions of android which is falling between minimum level SDK and target SDK. Sometimes during development, there is a need to change the API level of the Android Studio. So to change the API level we have two methods. In this article, we are going to discuss both methods.
Method 1
This method is very simple and very straight forward. One needs to stay very alert while making changes here.
Step 1: Open your project in Android mode then go to Gradle Scripts > build.gradle(Module: app) as shown in the following image.
Step 2: Refer to the below image and here you have to change the minSdkVersion and targetSdkVersion as per the requirement. After changing as per the requirement then you have to click on the Sync Now button and you are done.
Method 2
Step 1: Open Android Studio and go to File > Project Structure as shown in the below image.
Step 2: A pop-up screen will arise like below. Now select the Modules > Default Config and scroll down and you can see two sections as shown in the below image in Default Config. There you change the SDK version as per your requirement and then click on the OK button below. And you are done.
Note: If you are choosing the second Approach then you need not to make changes in Gradle. It will automatically update the gradle.
Афоризм
Да, он кобель. Но с длинной родословной.
Поддержка проекта
Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
• Yandex.Деньги
410013796724260
• Webmoney
R335386147728
Z369087728698
В Android Studio имеется возможность определить собственный стиль представления информации в редакторе, сохранить все настройки в
отдельный файл, который в дальнейшем можно импортировать в новую версию IDE. Здесь на странице описываются некоторые возможности
настройки интерфейса среды разработки. Это даёт Вам возможность понять где искать и как определить тот или иной стиль представления
информации.
Чтобы открыть окно настроек в окне приветствия нажмите «Configure» в нижней части формы и во всплывающем меню выберите пункт «Settings».
как это представлено на следующем скриншоте :
Всплывающее меню раздела конфигурации включает пункты импорта и экспорта настроек (Import Settings, Export Settings), о
чем было сказано выше.
Отображение номера строки
Чтобы отображать номера строк кода в среде разработки необходимо в левой части окна настроек среды разработки IDE выбрать пункт меню
Editor/General/Appearance и в правой части установить (не снимать) галочку в чекбоксе «Show line numbers».
Разделители методов
Между методами класса можно установить разделительную черту. Это очень удобно для наглядного отделения одного метода от другого. Чтобы
не делать это вручную, можно процесс автоматизировать установкой флага в чекбоксе «Show method separators» (см. скриншот выше).
Выделение изменённых файлов звёздочкой
Часто в различных редакторах изменённые, но не сохранённые файлы на вкладках помечаются звёздочкой. Так работает в Eclipse, Notepad++ и
многих других редакторах. Чтобы данную функцию включить в Android Studio необходимо выделить пункт меню Editor/General/Editor Tabs и в
панели установить флажок в чекбоксе «Mark modified tabs with asterisk».
Использование стиля «Верблюжьи горбы»
Стиль редактирования «Верблюжьи горбы» определяет навигацию курсора при использовании клавиш ‘Ctrl+ стрелки влево/вправо’.
Ниже представлены анимационные изображения, демонстрирующие использование стиля «Верблюжьи горбы».
Для использования в среде разработки стиля навигации «Верблюжьи горбы» выберите в окне настроек пункт меню Editor/General/Smart Keys
и в правой части установите галочку в чекбоксе «Use «CamelHumps» words».
Импортирование на лету, «imports on the fly»
В Android Studio имеется функция автоматического импорта («imports on the fly») и очистки неиспользуемых импортов в Java коде. Ниже
представлены анимационные изображения, демонстрирующие использование функции «imports on the fly».
Для установки в среде разработки функции «импорт на лету» выберите в окне настроек пункт меню Editor/General/Auto Import и в правой
части установите галочку в чекбоксах «Add unambiguous imports on the fly» и «Optimize imports on the fly», как это представлено на следующем
скриншоте.
Цветовая гамма
Android Studio позволяет настроить шрифты и цветовую гамму окон редактирования, отладки, консоли для различных языков программирования (Java,
C/C++, Groovy) и форматов представления информации (HTML, JSON). На следующих двух скриншотах представлены панели настроек Java и консоли.
Настройка цветовой гаммы редактора Java
Настройка цветовой гаммы окна консоли
Студия версии 3.1.4 поставляется с двумя предустановленными темами: Default (IntelliJ), Darcula. По умолчанию, используется тема Default
со светлым фоном (выпадающий список Scheme). Интерес для программистов IntelliJ представляет тема с чёрным фоном Darcula; здесь обыгрывается
слово «dark». Чтобы переключиться на «тёмную тему», поменяйте её в выпадающем списке Scheme.
Кодировка
Для изменения кодировки новых проектов и текущего необходимо выделить пункт меню в окне конфигурации File/Settings/Editor/File Encodings
и определить значения «Global Encoding» и «Project Encoding». В Android Studio по умолчанию используется в качестве глобальной кодировки
UTF-8, а для кодировки проектов используется «системная по умолчанию». У многих разработчиков в качестве системной используется win-1251,
с которой могут быть связаны проблемы при выводе строковых сообщений.
Именование полей, методы get/set
Android Studio умеет самостоятельно генерировать так называемые методы get/set класса на основе его полей. Чтобы использовать правильный стиль
кодирования согласно ковенции ‘Android Code Style Guidelines for Contributors’, необходимо сначала определить настройки распознавания префиксов
‘m’ (member) и ‘s’ (static) в названии переменных. Для этого следует открыть панель настроек Editor/Code Style/Java и перейти на вкладку
‘Code Generation’. В разделе Naming в поле Naming Prefix строки Field введите префикс ‘m’. После добавьте префикс ‘s’ для статических полей в
строке ‘Static field’.
Подобная настройка подскажет IDE о необходимости генерирации методов для поля без соответствующего префикса в его наименовании. Например, для
поля mCatName будет создан метод setCatName() вместо setMCatName().
Для генерации в файле класса с полями методов get/set щёлкните правой кнопкой мыши после конструктора и в раскрывшемся меню выберите команду
‘Generate…| Getter And Setter’, определите в открывшемся окне поля класса и щёлкните на кнопке OK, чтобы IDE сгенерировала get/set методы
для каждого выделенного поля класса.
Примечание : в тексте использованы анимационные изображенные
с сайта http://java-help.ru/configuring-android-studio
Время прочтения
25 мин
Просмотры 218K
На днях я обнаружил, что версия Android Studio неуклонно стремится к единице, в связи с чем задумался об изучении этого инструмента. Чтобы не было скучно, я решил поделиться своим опытом и собранными граблями в виде статьи-туториала.
Сразу хочу оговориться, что я не являюсь гуру Android-разработки, поэтому каких-либо откровений в тексте вы не найдете. Зато тут есть пошаговая инструкция по установке и настройке Android Studio под Windows и созданию простейшего проекта с использованием Android NDK.
Также заранее предупреждаю: статья получилась большой и очень подробной (честно, сам не ожидал), даже несмотря на то, что я почти все скриншоты и некоторые листинги кода спрятал под спойлеры.
На момент написания последней версией Android Studio была 0.8.1, для последующих версий необходимые действия могут отличаться от нижеописанных (очень надеюсь, что в лучшую сторону).
Для тех, кого интересует только NDK
Для тех, кого интересуют только настройки Gradle для NDK
Установка и настройка Android Studio
1. Необходимо установить JDK (Java Development Kit) и JRE (Java Runtime Environment).
Раньше Android SDK поддерживал только JDK версии 6, но теперь это в прошлом. Поддерживается 7 и даже 8 (по крайней мере, именно 8-ю версию я указал в качестве JAVA_HOME и в настройках Android Studio, и никаких проблем не испытал).
JRE же нужен для запуска самой студии. У меня она использует версию 7.
Скачать JDK и JRE версий больше 6 можно с сайта Oracle.
Переменную JAVA_HOME теперь, вроде бы, можно не устанавливать, так как в Android Studio мы будем в настройках прописывать путь к JDK. Но я ее установил. Для этого нужно:
- Зайти в Панель управленияСистема и безопасностьСистема, выбрать слева Дополнительные параметры системы, в открывшемся диалоге найти кнопку Переменные среды.
- Создать системную или пользовательскую переменную JAVA_HOME и указать для нее путь к JDK. У меня указан вот такой путь: C:Program FilesJavajdk1.8.0_05.
Если вы по каким-либо причинам нуждаетесь в 6 версии JDK
JDK 6 без регистрации можно получить так:
- Скачать Java EE 6 с сайта Oracle.
- Установить его. В комплекте есть JDK 6.
- В качестве JAVA_HOME в этом случае нужно указать путь к JDK из Java EE, по умолчанию это C:/glassfish3/jdk.
2. Если у вас установлен Android SDK.
В комплекте с Android Studio идет свой Android SDK. И, если вы хотите использовать именно его, то в некоторых случаях может случиться странное. Например, у меня при обновлении SDK через SDK Manager часть файлов записывалась в старую папку, и возникли проблемы, когда я эту папку удалил. Скорее всего это произошло из-за того, что в реестре хранился ключ с путем к старой папке. Поэтому имеет смысл почистить реестр. Для этого нужно запустить regedit.exe и найти HKEY_LOCAL_MACHINESoftwareAndroid SDK Tools для 32-битных машин либо HKEY_LOCAL_MACHINESoftwareWow6432NodeAndroid SDK Tools для 64-битных машин и удалить Android SDK Tools. Если в реестре вашей системы таких ключей нет, то все в порядке.
Если у вас установлена переменная среды ANDROID_SDK_HOME и вы хотите, чтобы она указывала на старую установку, то, по идее, это не должно стать проблемой, так как при настройке Android Studio мы укажем ей путь к SDK. Проблемы могут возникнуть, если эту переменную использует какое-либо из приложений, входящих в состав Android SDK.
3. Теперь переходим к установке Android Studio.
Нужно скачать Android Studio для вашей системы с официальной страницы и установить ее. По умолчанию, если выбрать «Установить только для меня» ставится в Users<user>AppDataLocalAndroidandroid-studio, иначе ставится в Program FIles (x86)Androidandroid-studio. Можно выбрать и другую папку.
После установки запускаем Android Studio.
Видим вот такой диалог
В нем делаем следующее:
- Проверяем обновления и, при необходимости, обновляемся (для этого нажмите на Check в нижней части окна)
- Заходим в Configure->SDK Manager (на всякий случай: SDK Manager — это не часть Android Studio, а утилита из Android SDK) и устанавливаем то, что вам необходимо. Если вы не знаете, что необходимо, то лучше установить все, что он предложит.
Вот что он установил у меня
- Затем я сменил тему на Darcula.
Как это сделать
нужно зайти в Configure->Settings->Appearance:
- Далее заходим в Configure->Project Defaults->Project Structure и меняем SDK Location на путь к вашему Android SDK, а JDK Location на путь к JDK.
Скриншот
Создание проекта
1. New Project
Жмем New Project.
Появляется вот такой диалог
В нем можно настроить:
- Имя проекта (я оставил по умолчанию: My Application)
- Домен компании, по умолчанию <username>.example.com, в моем случае markedone.example.com
- Имя пакета тоже можно отредактировать, нажав на Edit справа. По умолчанию генерируется из имени проекта и домена компании и выглядит как com.example.<username>.<имя проекта в lowercase без пробелов>, я его изменил на com.example.markedone.myapp.
- Путь, куда будет сохранен проект. Я указал свою папку для всяких тестовых проектов.
Когда все введено, жмем Next.
2. Form Factors
В этом диалоге выбираем целевые платформы и API.
Диалог выглядит так
Здесь я все оставил по умолчанию: Phone and Tablet и 4.0.3 IceCreamSandwich. Если API для каких-то платформ не установлен, выдается сообщение Not Insatlled. Например, как видно на скриншоте, у меня не установлены библиотеки для Google Glass (сделать это можно через SDK Manager).
Также обратите внимание на Help me choose, прикольная штука
Если нажать Help me choose, то откроется вот такой интересный диалог
Он содержит информацию по охвату устройств при выборе той или иной версии API. Прямоугольники версий API кликабельны, справа будет выведен список доступного в них функционала. Например, для предлагаемого по умолчанию Ice Cream Sandwich’а:

Жмем Next.
3. Add Activity
На следующем экране нам предлагается выбрать Activity
Естественно, я не смог пройти мимо Fullscreen Activity и выбрал ее. Вы можете выбрать другую Activity, но в этом случае у нас будут отличаться исходники на Java, и вам придется самостоятельно добавлять вызов нативного метода из Java (впрочем, в этом нет ничего сложного).
Делаем выбор, нажимаем Next.
Появляется следующий диалог
Здесь нам предлагается настроить Activity.
- Activity Name — имя класса, я оставил по умолчанию: FullscreenActivity.
- Layout Name — имя layout, для редактора UI, также оставляем по умолчанию.
- Title — по умолчанию предлагается FullscreenActivity, я поставил пробел: Fullscreen Activity.
Нажимаем Finish.
В итоге должен открыться проект
Сборка и запуск
1. Сборка проекта
Запускаем сборку через меню: Build->Make Project (для пунктов меню указаны иконки и горячие клавиши, так что с ними будет несложно разобраться).
У меня при первой сборке возникла ошибка:
Произошло это в файле MyApplication/app/build.gradle
Для того, чтобы понять в чем дело, достаточно навести курсор на подчеркнутую строку:
Все просто, здесь указана версия 19, а у нас установлена только 20, да и в настройках проекта мы указали 20 как целевую. Просто поменяем цифру:
Как видно, студия на этом не успокоилась, и предлагает установить еще более новую версию. Но нам сейчас это не нужно.
Снова запускаем Build->Make Project. На этот раз у меня все собралось. Надеюсь, у вас тоже.
2. Настройка виртуального устройства
Для того чтобы запустить программу в эмуляторе, нужно настроить виртуальное устройство. Заходим в Tools->Android->AVD Manager (это, как и SDK Manager, утилита из Android SDK). Нам нужна первая вкладка, Android Virtual Device, она и открыта по умолчанию. Справа находим кнопку Create… и нажимаем ее.
Появится диалог настройки виртуального устройства
- AVD Name — имя виртуального устройства, я ввел TestPhone. Дальше я, правда, выбрал планшет, но уже не стал менять название.
- Device — различные предустановленные настройки устройства, значение выбирается из доступных в выпадающем списке, я выбрал 7» WSVGA (Tablet) (1024 x 600: mdpi).
- Target — целевая версия API, доступны только те, которые есть в SDK. Установить их можно через SDK Manager.
W в названии означает Wear, версия для носимых устройств (часы и прочее). Так как мы в настройках проекта выбирали Tablet&Phone, то нам нужен другой пункт: Android L (Preview) — API Level L. - CPU/ABI — платформа, я выбрал ARM (armeabi-v7a).
- Keyboard — тут, думаю, все понятно.
- Skin — как я понял, внешний вид устройства, я выбрал значение, соответствующее установленному значению Device: WSVGA.
- Front Camera и Back Camera — наличие камер.
- Memory Options — оперативная память.
- Internal Storage — жесткий диск устройства.
- SD Card — думаю, понятно.
- Emulation options: Snapshot — позволяет эмулятору сохранять свое состояние между запусками, Use Host GPU — позволяет использовать видеокарту компьютера для OpenGL ES. Последнюю опцию я включил, но OpenGL — приложение у меня впоследствии упало на этом эмуляторе при старте. Наверное, из-за ARM vs x86_64.
Внизу диалога выводится, какую ошибку вы допустили при настройке. Например, в имени устройства нельзя вводить пробелы, а некоторые поля обязательны для заполнения. Когда внизу нет надписи — все введено верно. Жмем OK.
Устройство появилось в списке
Пара слов о вкладке Device Definitions
На ней заданы доступные устройства (те, которые потом отображаются в выпадающем списке Device при создании нового виртуального устройства). Чтобы создать новое устройство, нужно нажать на кнопку Create Device… и озаботиться заполнением следующего диалога:

Закрываем AVD Manager и возвращаемся в главное окно Android Studio.
3. Запуск на эмуляторе
Выполняем Run->Run ‘app’.
Придется подождать, пока произойдет сборка проекта для запуска.
В конце концов, появится окно выбора устройства

Здесь единственный доступный вариант для выбора — это наше виртуальное устройство. Он нам сразу предложен, так что просто жмем OK.
Запускается эмулятор, довольно долго
Можно открыть Tools->Android->Android Device Monitor (утилита из Android SDK), чтобы увидеть логи с эмулятора. Он должен автоматически подцепить виртуальное устройство и сразу начать выводить лог.
Android Device Monitor
А вот приложение после запуска эмулятора у меня с первого раза не открылось, пришлось еще раз нажать Run->Run ‘app’.
Появился немного изменившийся диалог
Здесь устройство перекочевало из списка для запуска в список уже запущенных. В этом списке, само собой, оказываются и реальные устройства.
После этого дело пошло, и приложение довольно быстро установилось и запустилось.
Полноэкранный режим
А если на приложение тапнуть, то выглядит оно так
Это не поведение системы, обработка клика происходит в приложении (файл FullscreenActivity.java):
// Set up the user interaction to manually show or hide the system UI.
contentView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (TOGGLE_ON_CLICK) {
mSystemUiHider.toggle();
} else {
mSystemUiHider.show();
}
}
});
После запуска, Android Studio предложила мне выключить Android Device Monitor, для того чтобы интегрировать вывод прямо в IDE.
Вот как выглядит интеграция
4. Запуск в Debug-режиме
Run->Debug ‘app’
Снова уже знакомый нам диалог
Жмем OK.
Ждем, пока запустится приложение и приконнектится дебаггер. Я поставил точку останова при нажатии на кнопку Dummy Button.
Android Studio в дебаге
Немного раздражает отсутствие панельки со всякими Step Into, Step Out etc.
Все это находится в меню Run
5. Запуск на 4.0.3
В процессе создания и запуска проекта вы, наверное, заметили, что мы создали приложение, совместимое с версией 4.0.3, но запускали его только на самой последней версии Android. Сейчас мы это исправим. Для этого нужно установить версию 4.0.3 через Tools->Android->SDK Manager.
Необходимое отмечено галочками на скриншоте
Это SDK Platform, ARM EABI v7a System Image и Intel x86 Atom System Image. На самом деле, мы запускали эмулятор ARM, и Intel нам сейчас ставить не обязательно. Я его поставил сугубо потому, что он установлен и для Android L.
Теперь создадим еще одно устройство для новой старой версии Android (или же вы можете отредактировать старое).
Настройки нового устройства
Запускаем (Run->Run ‘app’).
В диалоге выбираем новое устройство для запуска
И смотрим, как выглядит новый эмулятор — явно брутальнее.
Запуск
Полноэкранный режим
После нажатия
5. Запуск на устройстве
Перед тем как перейти к работе с NDK, давайте запустим проект на реальном устройстве. Я буду запускать на телефоне
Huawei Ascend G300 с Android 4.0.3
Первое, что нужно сделать, это установить adb-драйвер. У меня с этим все довольно просто, драйвер находится прямо на телефоне, единственное, что нужно сделать, это воткнуть шнур в компьютер, зайти в примонтировавшийся диск и запустить исполняемый файл, который и установит adb-драйвер. Для других устройств все может быть сложнее. Например, для планшета Prestigio мне в свое время пришлось прописывать Vendor ID в специальный файл (чтобы использовался стандартный драйвер от Google), для Samsung нужен их собственный Kies, был отдельный драйвер для HTC и так далее. В общем, вам придется самостоятельно разобраться, как установить драйвер для вашего устройства.
После того как драйвер был установлен, нужно на устройстве разрешить отладку по USB. У меня на телефоне для этого нужно зайти в Настройки->Для разработчиков->Отладка по USB. Но для разных устройств, а также сборок и версий Android, расположение этого пункта меню может отличаться.
Теперь телефон будет находиться Android SDK, а разрабатываемые приложения будут устанавливаться. Однако, для Huawei это еще не все: с телефона не идут логи, нужно их включить.
Как включить логи на Huawei
Набрать в качестве телефонного номера: *#*#2846579#*#*
Появится сервисное меню.
Перейти в ProjectMenu->Background Setting->Log Setting
Открыть Log switch и установить там ON.
Открыть Log level setting и установить необходимый вам уровень логирования (я поставил verbose).
Перезагрузить телефон.
Теперь можно запускать приложение на устройстве: Run->Run ‘app’
В диалоге выбора устройства появилось реальное устройство
Запускаемся на телефоне.
Результат запуска.
Приложение в портрете:
Приложение в ландшафте:
Установка и настройка Android NDK
1. Установка NDK
Android SDK, как мы уже выяснили, входит в комплект Android Studio, а вот NDK — нет. Скачиваем NDK, подходящий для вашей системы, отсюда. Распаковываем архив и кладем в какую-нибудь папку, например, в D:ndk, так, чтобы файл ndk-build.cmd лежал прямо в ней. Важно: необходимо, чтобы в пути к NDK не было пробелов.
2. Добавим переменную ANDROID_NDK_HOME
Заходим в Панель управленияСистема и безопасностьСистема, выбираем слева Дополнительные параметры системы, в открывшемся диалоге нажимаем кнопку Переменные среды. Создаем переменную с именем ANDROID_NDK_HOME и значением D:ndk (путь к вашей NDK).
Альтернативно, вместо указания глобальной переменной можно прописать путь к ndk в файле local.properties вашего проекта (прямо в корневой папке: MyApplicationlocal.properties). Содержимое файла будет выглядеть примерно так (обратите внимание на двойные бэкслеши, так как для Windows это критично):
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=C:\Users\<user>\AppData\Local\Android\android-studio\sdk
ndk.dir=D:\ndk
Не верьте дисклеймеру про «ваши изменения будут выкинуты», в данном случае это не так. Обратите внимание, что этот файл рекомендуется исключать из-под контроля версий, так как он содержит только локальную для пользователя информацию. Для разнообразия в этом нам не соврали. Ну и, само собой, это изменение никак не повлияет на другие Ваши проекты. При установленной ANDROID_NDK_HOME прописывать путь в local.properties необязательно.
3. Установим необходимую версию Android API
Зайдите в NDKplatforms (у меня это D:ndkplatforms) и посмотрите максимальную версию доступных API. В моем случае максимальная версия 19. Но при этом в SDK у нас установлены только версии 20 и 15. Так что заходим в SDK Manager и скачиваем SDK Platform версии 19, иначе ничего не соберется.
Что надо скачать
4. Настроим gradle для работы с NDK
Информацию я брал из сэмплов, скачать их можно здесь, в самом низу страницы. Я скачивал сэмплы для версии 0.11. В качестве основного примера я брал ndkSanAngeles.
Как запустить ndkSanAngeles
После того, как сэмплы скачаны, их нужно распаковать. Затем нужно открыть проект ndkSanAngeles. Для Android Studio проектом является папка, так что открывать надо именно ее. Для того этого выполняем File->Open, либо, если вы в Welcome диалоге, Open Project. Ищем папку ndkSanAngeles через диалог открытия файла.
После открытия проекта стоит обратить взор на файл build.gradle. Вот его оригинал:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.11.0'
}
}
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
defaultConfig {
ndk {
moduleName "sanangeles"
cFlags "-DANDROID_NDK -DDISABLE_IMPORTGL"
ldLibs "GLESv1_CM", "dl", "log"
stl "stlport_static"
}
// This actual the app version code. Giving ourselves 1,000,000 values
versionCode = 123
}
buildTypes.debug.jniDebugBuild true
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
// this is the flavor part of the version code.
// It must be higher than the arm one for devices supporting
// both, as x86 is preferred.
versionCode = 3
}
arm {
ndk {
abiFilter "armeabi-v7a"
}
versionCode = 2
}
mips {
ndk {
abiFilter "mips"
}
versionCode = 1
}
fat {
// fat binary, lowest version code to be
// the last option
versionCode = 0
}
}
// make per-variant version code
applicationVariants.all { variant ->
// get the single flavor
def flavorVersion = variant.productFlavors.get(0).versionCode
// set the composite code
variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode
}
}
А вот измененная версия, чтобы проект собирался у меня:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
defaultConfig {
ndk {
moduleName "sanangeles"
cFlags "-DANDROID_NDK -DDISABLE_IMPORTGL"
ldLibs "GLESv1_CM", "dl", "log"
stl "stlport_static"
}
// This actual the app version code. Giving ourselves 1,000,000 values
versionCode = 123
}
buildTypes.debug.jniDebugBuild true
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
// this is the flavor part of the version code.
// It must be higher than the arm one for devices supporting
// both, as x86 is preferred.
versionCode = 3
}
arm {
ndk {
abiFilter "armeabi-v7a"
}
versionCode = 2
}
mips {
ndk {
abiFilter "mips"
}
versionCode = 1
}
fat {
// fat binary, lowest version code to be
// the last option
versionCode = 0
}
}
// make per-variant version code
applicationVariants.all { variant ->
// get the single flavor
def flavorVersion = variant.productFlavors.get(0).versionCode
// set the composite code
variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode
}
}
Изменения следующие:
- О несовпадении версии плагина gradle (classpath ‘com.android.tools.build:gradle:0.11.0’) будет сказано при попытке сборки и предложен правильный номер версии. У меня это 0.12.+.
- compileSdkVersion 19 остается, так как это максимальная версия для текущего NDK.
- buildToolsVersion изменился на 20. Установленные версии можно посмотреть в SDK Manager, там же можно установить другие.
После этого ndkSanAngeles должен собраться. Будьте внимательны, проверяйте версии, установленные у вас.
В нашем проекте нужно выбрать правильный файд build.gradle, так как здесь их два. Дело в том, что MyApplication — это проект, а app — это модуль проекта (или подпроект), и у них build.gradle для каждого свой. Сначала рассмотрим файл проекта
MyApplication->build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
Из комментариев в коде явно следует, что нам нужен файл модуля
MyApplication->app->build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.example.markedone.myapp"
minSdkVersion 15
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Support Repository through the SDK manager to use this dependency.
//compile 'com.android.support:support-v4:19.+'
compile 'com.android.support:support-v4:20.+'
}
Настроим его для работы с NDK, используя в качестве «донора» build.gradle из ndkSanAngeles.
Для начала, заменим
compileSdkVersion 20
на
compileSdkVersion 19
так как NDK ограничен версией 19.
В defaultConfig мы добавим настройки ndk, а также заменим targetSdkVersion на 19:
defaultConfig {
applicationId "com.example.markedone.myapp"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
ndk {
moduleName "myapp"
cFlags "-DANDROID_NDK"
ldLibs "log"
stl "stlport_static"
}
}
Настройки NDK включают в себя
- moduleName — имя модуля, будет использовано для именования *.so файла
- cFlags — флаги C
- ldLibs — библиотеки, которые вы хотите подключить к нативному коду
- stl — версия библиотеки STL
В buildTypes включим для debug дебажную сборку JNI:
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug.jniDebugBuild true
}
Теперь добавим productFlavors. Здесь мы указываем, какие собранные *.so библиотеки включать в сборку под конкретную архитектуру. Таким образом, *.apk собранный для arm будет содержать версию библиотеки только для arm, под x86 — для x86 и так далее. Этот кусок полностью скопирован с ndkSanAngeles. Объяснение значений versionCode из комментариев: для x86 ставим максимальное значение versionCode, так как если устройство поддерживает и x86 и arm, то сборка x86 предпочтительнее (видимо, так как у нее большая версия, то установлена будет именно она), а минимальный versionCode прописывается для fat (по идее это должен быть «толстый» *.apk, содержащий сразу все возможные версии библиотек).
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
// this is the flavor part of the version code.
// It must be higher than the arm one for devices supporting
// both, as x86 is preferred.
versionCode = 3
}
arm {
ndk {
abiFilter "armeabi-v7a"
}
versionCode = 2
}
mips {
ndk {
abiFilter "mips"
}
versionCode = 1
}
fat {
// fat binary, lowest version code to be
// the last option
versionCode = 0
}
}
«Собираем» значение versionCode для каждого из вариантов сборки:
// make per-variant version code
applicationVariants.all { variant ->
// get the single flavor
def flavorVersion = variant.productFlavors.get(0).versionCode
// set the composite code
variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode
}
Наконец, последняя секция, dependencies. Если помните, здесь мы меняли compile ‘com.android.support:support-v4:19.+’ на compile ‘com.android.support:support-v4:20.+’, чтобы собирать с единственной установленной у нас версией библиотеки. Теперь придется поменять обратно на 19.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile 'com.android.support:support-v4:19.+'
}
Полный листинг измененного файла build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.example.markedone.myapp"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
ndk {
moduleName "myapp"
cFlags "-DANDROID_NDK"
ldLibs "log"
stl "stlport_static"
}
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug.jniDebugBuild true
}
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
// this is the flavor part of the version code.
// It must be higher than the arm one for devices supporting
// both, as x86 is preferred.
versionCode = 3
}
arm {
ndk {
abiFilter "armeabi-v7a"
}
versionCode = 2
}
mips {
ndk {
abiFilter "mips"
}
versionCode = 1
}
fat {
// fat binary, lowest version code to be
// the last option
versionCode = 0
}
}
// make per-variant version code
applicationVariants.all { variant ->
// get the single flavor
def flavorVersion = variant.productFlavors.get(0).versionCode
// set the composite code
variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode
}
sourceSets { main { jni.srcDirs = ['src/main/jni', 'src/main/jni/'] } }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile 'com.android.support:support-v4:19.+'
}
5. Создаем папку jni
В папке jni мы будем сохранять C/C++ файлы. Этого от нас ожидает NDK. Папку нам нужно создать в MyApplication/app/src/main. Это можно сделать прямо из Android Studio, причем, двумя способами.
Во-первых, можно кликнуть правой кнопкой на main и просто создать папку через
New->Directory
Во вторых, можно воспользоваться специальным пунктом меню
New->Folder->JNI Folder
Он запускает визард создания папки
В первом диалоге мы выбираем, для какой части модуля будет создана папка jni, а во втором можно изменить ее расположение.
6. Добавим C++ файлы
Визарда для C++ файлов нет, поэтому для создания файла мы кликаем правой кнопкой на папке jni и выбираем
New->File
Для начала создадим заголовочный файл myapp.h:
#pragma once
#include <jni.h>
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz);
#ifdef __cplusplus
}
#endif
Описание
#pragma once— вместо стандартной (#ifndef/#define/#endif) защиты от повторного включения. Сейчас#pragma onceпонимается большинством C++ компиляторов.#include <jni.h>— включаем заголовок JNI, чтобы можно было использовать типы, объявленные там.#ifdef __cplusplus ... #endif— код внутри будет скомпилирован только в C++ (но не в C).extern "C" { ... }— избавляемся от name mangling (что это и почему, хорошо описано тут).JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz);— объявление функции, которую будем реализовывать.
Разберем это объявление подробнее.- JNIEXPORT необходимо для грамотной линковки.
- JNICALL для правильного соглашения о вызове.
- jstring — тип возвращаемого значения функции, в данном случае это строка, совместимая со строкой Java.
- Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI — имя функции, состоит из:
Java — язык, который вызывает.
com_example_markedone_myapp — это id приложения (com.example.markedone.myapp).
FullscreenActivity — имя класса Java, который содержит объявление метода, представляющего нативную функцию.
stringFromJNI — собственно, имя функции (таким оно будет в Java). JNIEnv* env, jclass clazz— обязательные параметры, передающиеся из Java.
JNIEnv* env— указатель на объект, представляющий из себя JNI-окружение.
jclass clazz— класс, которому принадлежит объявление нативного метода в Java. Здесь нужно оговориться, что jclass clazz — это для статического нативного (static native) метода. Для нестатического метода будет нужно писатьjobject obj.
Теперь создадим файл реализации, myapp.cpp. В нем мы напишем следующий код:
#include <android/log.h>
#include <string>
#include "myapp.h"
JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz)
{
std::string tag("GREETING");
std::string message("Hello from C++!");
__android_log_print(ANDROID_LOG_INFO, tag.c_str(), "%s", message.c_str());
std::string jniMessage("Hello from JNI!");
return env->NewStringUTF(jniMessage.c_str());
}
Описание
#include <android/log.h>— подключаем лог, ради которого мы даже добавили библиотеку (ldLibs «log»)#include - для std::string, который мы используем для проверки наличия STL.
#include "myapp.h"— подключаем наш заголовочный файл.
JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz) { ... } - реализуем функцию, объявленную в "myapp.h".
std::string tag("GREETING"); std::string message("Hello from C++!");— создаем строки для вывода в лог.
__android_log_print(ANDROID_LOG_INFO, tag.c_str(), "%s", message.c_str());— вывод в лог. Обратите внимание, что необходимо указывать 4 параметра: тип сообщения в логе, тэг, формат строки, и, наконец, само сообщение.
std::string jniMessage("Hello from JNI!");— строка, которую мы будем передавать в Java.
return env->NewStringUTF(jniMessage.c_str());— возвращаемое значение, при помощи JNIEnv создаем jstring из C-строки. Обратите внимание, что нам не нужна конструкция вида(*env)->, так как мы пишем на C++, а не на C.
А теперь мы создадим еще один файл: stub.cpp, и оставим его пустым. Дело в том, что если оставить только один *.cpp файл в папке jni, то ndk-build будет выдавать ошибку «no rule to make target».
7. Добавим вызов нативной функции из Java
Открываем файл MyApplication/app/src/main/java/com.example.markedone.myapp.FullscreenActivity. На самом деле, у него расширение java, а com, example, markedone и myapp — это папки, но Android Studio это скрывает.
Содержимое файла
package com.example.markedone.myapp;
import com.example.markedone.myapp.util.SystemUiHider;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
/**
* An example full-screen activity that shows and hides the system UI (i.e.
* status bar and navigation/system bar) with user interaction.
*
* @see SystemUiHider
*/
public class FullscreenActivity extends Activity {
/**
* Whether or not the system UI should be auto-hidden after
* {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
*/
private static final boolean AUTO_HIDE = true;
/**
* If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
* user interaction before hiding the system UI.
*/
private static final int AUTO_HIDE_DELAY_MILLIS = 3000;
/**
* If set, will toggle the system UI visibility upon interaction. Otherwise,
* will show the system UI visibility upon interaction.
*/
private static final boolean TOGGLE_ON_CLICK = true;
/**
* The flags to pass to {@link SystemUiHider#getInstance}.
*/
private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION;
/**
* The instance of the {@link SystemUiHider} for this activity.
*/
private SystemUiHider mSystemUiHider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen);
final View controlsView = findViewById(R.id.fullscreen_content_controls);
final View contentView = findViewById(R.id.fullscreen_content);
// Set up an instance of SystemUiHider to control the system UI for
// this activity.
mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS);
mSystemUiHider.setup();
mSystemUiHider
.setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() {
// Cached values.
int mControlsHeight;
int mShortAnimTime;
@Override
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public void onVisibilityChange(boolean visible) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
// If the ViewPropertyAnimator API is available
// (Honeycomb MR2 and later), use it to animate the
// in-layout UI controls at the bottom of the
// screen.
if (mControlsHeight == 0) {
mControlsHeight = controlsView.getHeight();
}
if (mShortAnimTime == 0) {
mShortAnimTime = getResources().getInteger(
android.R.integer.config_shortAnimTime);
}
controlsView.animate()
.translationY(visible ? 0 : mControlsHeight)
.setDuration(mShortAnimTime);
} else {
// If the ViewPropertyAnimator APIs aren't
// available, simply show or hide the in-layout UI
// controls.
controlsView.setVisibility(visible ? View.VISIBLE : View.GONE);
}
if (visible && AUTO_HIDE) {
// Schedule a hide().
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
}
});
// Set up the user interaction to manually show or hide the system UI.
contentView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (TOGGLE_ON_CLICK) {
mSystemUiHider.toggle();
} else {
mSystemUiHider.show();
}
}
});
// Upon interacting with UI controls, delay any scheduled hide()
// operations to prevent the jarring behavior of controls going away
// while interacting with the UI.
findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Trigger the initial hide() shortly after the activity has been
// created, to briefly hint to the user that UI controls
// are available.
delayedHide(100);
}
/**
* Touch listener to use for in-layout UI controls to delay hiding the
* system UI. This is to prevent the jarring behavior of controls going away
* while interacting with activity UI.
*/
View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (AUTO_HIDE) {
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
return false;
}
};
Handler mHideHandler = new Handler();
Runnable mHideRunnable = new Runnable() {
@Override
public void run() {
mSystemUiHider.hide();
}
};
/**
* Schedules a call to hide() in [delay] milliseconds, canceling any
* previously scheduled calls.
*/
private void delayedHide(int delayMillis) {
mHideHandler.removeCallbacks(mHideRunnable);
mHideHandler.postDelayed(mHideRunnable, delayMillis);
}
}
Добавим следующий код в класс FullscreenActivity:
static {
System.loadLibrary("myapp");
}
private static native String stringFromJNI();
Здесь сначала идет загрузка библиотеки, а затем объявление метода stringFromJNI, который соответствует нашей функции в C++. Обратите внимание, что он объявлен как static (это влияет на то, что (jclass или jobject) будет в качестве второго параметра C++-функции) и native. Реализовывать native-метод не нужно, мы это уже сделали в C++, а остальное за нас сделает JNI.
Теперь мы, в общем-то, уже можем вызвать нашу функцию. Если вы, как и я, выбрали FullscreenActivity, то у нас есть Dummy Button, который, по сути, ничего не делает. И даже уже есть touch listener, пусть и не самый лучший (он будет вызываться много раз, пока палец на экране), но, чтобы не плодить лишний код, используем его.
Для начала добавим в список импорта:
import android.widget.Button;
чтобы можно было нормально работать с кнопкой.
Найдем следующий код:
View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (AUTO_HIDE) {
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
return false;
}
};
и добавим несколько строк перед return false.
View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (AUTO_HIDE) {
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
final String message = stringFromJNI();
final Button button = (Button)findViewById(R.id.dummy_button);
final String actualText = button.getText().toString();
if(message.equals(actualText)) {
button.setText("Dummy Button");
}
else {
button.setText(message);
}
return false;
}
};
Описание добавленного кода
final String message = stringFromJNI();— получаем строку из C++. Вызов нативного метода — то, ради чего все и затевалось.final Button button = (Button)findViewById(R.id.dummy_button);— находим объект кнопки.final String actualText = button.getText().toString();— вытаскиваем текущий текст кнопки.if(message.equals(actualText))— сравниваем строку, полученную из C++, с текстом кнопки.button.setText("Dummy Button");— если одинаковы, меняем текст кнопки на Dummy Button.button.setText(message);— если различаются, то меняем на текст, полученный из C++.
Полный листинг класса измененного класса
package com.example.markedone.myapp;
import com.example.markedone.myapp.util.SystemUiHider;
import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
/**
* An example full-screen activity that shows and hides the system UI (i.e.
* status bar and navigation/system bar) with user interaction.
*
* @see SystemUiHider
*/
public class FullscreenActivity extends Activity {
static {
System.loadLibrary("myapp");
}
private static native String stringFromJNI();
/**
* Whether or not the system UI should be auto-hidden after
* {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
*/
private static final boolean AUTO_HIDE = true;
/**
* If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
* user interaction before hiding the system UI.
*/
private static final int AUTO_HIDE_DELAY_MILLIS = 3000;
/**
* If set, will toggle the system UI visibility upon interaction. Otherwise,
* will show the system UI visibility upon interaction.
*/
private static final boolean TOGGLE_ON_CLICK = true;
/**
* The flags to pass to {@link SystemUiHider#getInstance}.
*/
private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION;
/**
* The instance of the {@link SystemUiHider} for this activity.
*/
private SystemUiHider mSystemUiHider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen);
final View controlsView = findViewById(R.id.fullscreen_content_controls);
final View contentView = findViewById(R.id.fullscreen_content);
// Set up an instance of SystemUiHider to control the system UI for
// this activity.
mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS);
mSystemUiHider.setup();
mSystemUiHider
.setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() {
// Cached values.
int mControlsHeight;
int mShortAnimTime;
@Override
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public void onVisibilityChange(boolean visible) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
// If the ViewPropertyAnimator API is available
// (Honeycomb MR2 and later), use it to animate the
// in-layout UI controls at the bottom of the
// screen.
if (mControlsHeight == 0) {
mControlsHeight = controlsView.getHeight();
}
if (mShortAnimTime == 0) {
mShortAnimTime = getResources().getInteger(
android.R.integer.config_shortAnimTime);
}
controlsView.animate()
.translationY(visible ? 0 : mControlsHeight)
.setDuration(mShortAnimTime);
} else {
// If the ViewPropertyAnimator APIs aren't
// available, simply show or hide the in-layout UI
// controls.
controlsView.setVisibility(visible ? View.VISIBLE : View.GONE);
}
if (visible && AUTO_HIDE) {
// Schedule a hide().
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
}
});
// Set up the user interaction to manually show or hide the system UI.
contentView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (TOGGLE_ON_CLICK) {
mSystemUiHider.toggle();
} else {
mSystemUiHider.show();
}
}
});
// Upon interacting with UI controls, delay any scheduled hide()
// operations to prevent the jarring behavior of controls going away
// while interacting with the UI.
findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Trigger the initial hide() shortly after the activity has been
// created, to briefly hint to the user that UI controls
// are available.
delayedHide(100);
}
/**
* Touch listener to use for in-layout UI controls to delay hiding the
* system UI. This is to prevent the jarring behavior of controls going away
* while interacting with activity UI.
*/
View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (AUTO_HIDE) {
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
final String message = stringFromJNI();
final Button button = (Button)findViewById(R.id.dummy_button);
final String actualText = button.getText().toString();
if(message.equals(actualText)) {
button.setText("Dummy Button");
}
else {
button.setText(message);
}
return false;
}
};
Handler mHideHandler = new Handler();
Runnable mHideRunnable = new Runnable() {
@Override
public void run() {
mSystemUiHider.hide();
}
};
/**
* Schedules a call to hide() in [delay] milliseconds, canceling any
* previously scheduled calls.
*/
private void delayedHide(int delayMillis) {
mHideHandler.removeCallbacks(mHideRunnable);
mHideHandler.postDelayed(mHideRunnable, delayMillis);
}
}
17. Собираем и запускаем проект
Сначала Build->Make Project. На этом этапе собирается Java-часть.
Затем Run->Run ‘app’. А вот здесь, перед стартом приложения, будет происходить сборка C++ части. Если в ней будут какие-то ошибки, то об этом будет выведено сообщение. Если ошибок нет, то появится стандартный диалог выбора устройства, и, после нажатия OK приложение запустится.
Работа на реальном устройстве

Вывод сообщения в лог
Заключение
В целом, мне Android Studio понравилась. Интеграция Android SDK выполнена довольно плотно, иногда даже забываешь, что это запускаются отдельные программы. Есть всякие интересные плюшки, такие, как Help me choose. Понравилась новая система сборки — Gradle, — но тут же и недостаток: по ней очень мало информации.
Также, видно, что поддержка NDK еще сыровата, но прослеживается движение в этом направлении. Очень надеюсь, что они все-таки сделают полноценную поддержку C++-разработки.
P.S. Дебага C++ кода пока не обнаружено.
#———————————————————————
# Uncomment this option if you want to customize path to user installed plugins folder. Make sure you're using forward slashes.
#---------------------------------------------------------------------
# idea.plugins.path=${idea.config.path}/plugins
#———————————————————————
# Maximum file size (kilobytes) IDE should provide code assistance for.
# The larger file is the slower its editor works and higher overall system memory requirements are
# if code assistance is enabled. Remove this property or set to very large number if you need
# code assistance for any files available regardless their size.
#---------------------------------------------------------------------
idea.max.intellisense.filesize=2500
#---------------------------------------------------------------------
# This option controls console cyclic buffer: keeps the console output size not higher than the specified buffer size (Kb).
# Older lines are deleted. In order to disable cycle buffer use idea.cycle.buffer.size=disabled
#---------------------------------------------------------------------
idea.cycle.buffer.size=1024
#---------------------------------------------------------------------
# Configure if a special launcher should be used when running processes from within IDE.
# Using Launcher enables "soft exit" and "thread dump" features
#---------------------------------------------------------------------
idea.no.launcher=false
#---------------------------------------------------------------------
# To avoid too long classpath
#---------------------------------------------------------------------
idea.dynamic.classpath=false
#———————————————————————
# There are two possible values of idea.popup.weight property: "heavy" and "medium".
# If you have WM configured as "Focus follows mouse with Auto Raise" then you have to
# set this property to "medium". It prevents problems with popup menus on some
# configurations.
#---------------------------------------------------------------------
idea.popup.weight=heavy
#---------------------------------------------------------------------
# Use default anti-aliasing in system, i.e. override value of "Settings|Editor|Appearance|Use anti-aliased font"
# option. May be useful when using Windows Remote Desktop Connection for instance.
#---------------------------------------------------------------------
idea.use.default.antialiasing.in.editor=false
#---------------------------------------------------------------------
# Disabling this property may lead to visual glitches like blinking and fail to repaint
# on certain display adapter cards.
#---------------------------------------------------------------------
sun.java2d.noddraw=true
#---------------------------------------------------------------------
# Removing this property may lead to editor performance degradation under Windows.
#---------------------------------------------------------------------
sun.java2d.d3d=false
#---------------------------------------------------------------------
# Workaround for slow scrolling in JDK6
#---------------------------------------------------------------------
swing.bufferPerWindow=false
#---------------------------------------------------------------------
# Removing this property may lead to editor performance degradation under X Window.
#---------------------------------------------------------------------
sun.java2d.pmoffscreen=false
#---------------------------------------------------------------------
# Workaround to avoid long hangs while accessing clipboard under Mac OS X.
#---------------------------------------------------------------------
#ide.mac.useNativeClipboard=True
#---------------------------------------------------------------------
# Maximum size (kilobytes) IDEA will load for showing past file contents -
# in Show Diff or when calculating Digest Diff
#---------------------------------------------------------------------
#idea.max.vcs.loaded.size.kb=20480
# algorithm to provide a custom system DPI.
# The options are not supported on Mac, as Retina support is built-in.
# where <dpi_value> can range from 96 (100% zoom), to 288 (300%) zoom.














































































































































































