Google I/O 2018:
What's new in Android

Learn about the improvements we're making to Android that make mobile development fast and easy, help you get more users by making apps radically smaller, and increase engagement to keep people coming back.




Introducing Android Jetpack

Components, tools and architectural guidance to accelerate Android development, eliminate boilerplate code, and build high quality, robust apps.


Start building an app

Whether you’re an experienced developer or creating your first Android app, here are some resources to get you started.

Developer guides

Here you'll find a wide range of documentation that teaches you how to build an app, including how to build your first Android app, how to build layouts that adapt to different screens, how to save data in a local database, how to use device sensors and cameras, and much more.


Sample code

Jump-start your development using these sample projects


Test your app

Verify your app’s behavior and usability before you release

Quality guidelines

Build a high quality app with these design and behavior guidelines

Distribute on Google Play

Reach a global audience and earn revenue

Get started with


Material Design

Android apps are designed using the Material Design guidelines. These guidelines provide everything you need to know about how to design your app, from the user experience flow to visual design, motion, fonts, and more.









Google services for Android

Take advantage of the latest Google technologies through a single set of APIs for Android, delivered across Android devices worldwide as part of Google Play services. Start by setting up the Google Play services library, then build with the APIs for services such as Google Maps, Firebase, Google Cast, AdMob, and much more.



Latest news

Android Developers Blog

The latest Android and Google Play news for app and game developers.


Android Studio provides the fastest tools for building apps on every type of Android device.

3.1.2 for Windows 64-bit (758 MB)

Developer Workflow Basics

The workflow to develop an app for Android is conceptually the same as other app platforms. However, to efficiently build a well-designed app for Android, you need some specialized tools. The following list provides an overview of the process to build an Android app and includes links to some Android Studio tools you should use during each phase of development.

  1. Set up your workspaceThis is the phase you probably already finished: Install Android Studio and create a project.For a walkthrough with Android Studio that teaches some Android development fundamentals, also check out the guide to Building Your First App.
  2. Write your appNow you can get to work. Android Studio includes a variety of tools and intelligence to help you work faster, write quality code, design a UI, and create resources for different device types. For more information about the tools and features available, see Write Your App.
  3. Build and runDuring this phase, you build your project into a debuggable APK package that you can install and run on the emulator or an Android-powered device. For more information about how to run your code, see Build and Run Your App.You can also begin customizing your build. For example, you can create build variants that produce different types of APKs from the same project, and shrink your code and resources to make your APK file smaller. For an introduction to customizing your build, see Configure Your Build.
  4. Debug, profile, and testThis is the iterative phase in which you continue writing your app but with a focus on eliminating bugs and optimizing app performance. Of course, creating tests will help you in those endeavors.For information about basic debugging tasks, read Debug Your App and Write and View Logs.To view and analyze various performance metrics such as memory usage, network traffic, CPU impact, and more, see Performance Profiling Tools.And for an introduction to building tests, see Test Your App.
  5. PublishWhen you're ready to release your app to users, there are just a few more things to consider, such as versioning your app and signing it with a key. For more information, see the Publish Your App.

This page contains guidance for troubleshooting common issues and configuration problems in Android Studio.

High density displays

As of version 1.5, Android Studio provides support for high density displays (like HiDPI and Retina monitors) on all platforms.

Scaling factor settings

Android Studio determines the scaling factor for your display as follows:

For Retina displays, UI elements are scaled by a factor of 200% and images are rendered in high resolution. There should be no blurriness due to scaling, even in multi-monitor configurations. Note that there is no support for scaling factors other than 100% (for non-Retina displays) and 200% (for Retina displays).
Android Studio uses the primary display's DPI settings to determine the scaling factor of UI elements. For images, if the scaling factor is less than 150%, normal resolution images are scaled up. If the scaling factor is greater than 150%, high resolution images are scaled appropriately.
Android Studio determines the scaling factor by looking at the "Text Scaling Factor," then at the XWindow system DPI Setting.

A DPI setting of 96 corresponds to a scaling factor of 100% (no scaling), and a DPI setting of 192 corresponds to a scaling factor of 200% (the size of UI elements is doubled). Android Studio currently supports DPI settings between 96 (100% scaling) and 288 (300% scaling). If Android Studio does not detect the correct system DPI on your Linux or Windows machine, you can set it manually by setting the hidpi property in the ide.propertiesfile as described in Customize your IDE properties. Note that this property has no effect on Mac machines. This property functions as follows:hidpi=true

Sets the DPI to 192 (200% scaling), ignoring the system settings.
Sets the DPI to 96 (100% scaling), ignoring the system settings.

Blurry or pixelated elements on high density displays

If one or more elements of Android Studio's UI appear blurry or pixelated on your high density display, you may be experiencing one of the following issues:

  • If most of the Android Studio UI looks fine, but one particular icon is blurry or pixelated, or one particular UI element uses the wrong size font, that particular element probably has not yet been fully updated for HiDPI support. Please file a bug by clicking Help > Submit Feedback. Please include a screenshot and as much information as possible on your system configuration.
  • If you are using a Windows or Linux machine and your display uses a scaling factor other than 100% or 200%, images may appear slightly blurred due to the scaling.
  • If you are using a Windows machine and you have have changed the Windows font size in the Control Panel, you may experience blurred or pixelated font. You can resolve this issue by signing out of Windows and then signing back in.
  • On a multi-monitor setup running Windows 8.1 or later, when you move a window from one display to another display with a different resolution or DPI, you may experience font or image problems (see bug186007). There is no known workaround at this time.
  • Older versions of the JRE 1.8 had an issue for blurry fonts (JRE 1.8.0_25-b18 amd64 in particular, see bug 192316.) As of version 2.2, Android studio includes a bunded version of the latest supported JDK, which includes the JDE. To resolve this issue, update Android Studio to version 2.2 or higher and switch to use the bundled JDK by clicking File > Project Structure > SDK Location and checking the Use embedded JDKcheckbox.

Incorrectly-sized elements on high density displays

If the entire Android Studio UI is the wrong size on your high density display, see Scaling factor settings. If some elements of the Android Studio UI are the wrong size on your high density display, but others are correctly-sized, you may be experiencing one of the following issues:

  • If you are using a custom editor scheme, the editor font may appear too small or too big compared to the rest of the UI elements on a high density display. To fix this issue, click File > Settings then click Editor > Colors and Fonts > Font and change the size of the editor font. Note that when the default scheme is active, the editor font size is scaled automatically (see bug 186920).
  • If some UI elements of Android Studio are the right size, but others are too small or too big, you may be experiencing issue 186923. Please file a bug by clicking Help > Submit Feedback. Please include a screenshot and as much information as possible on your system configuration.

Linux libraries

If you are running Android Studio on a 64-bit Linux machine, you may need to install some specific libraries, as follows.

If you are running a 64-bit version of Ubuntu, you need to install some 32-bit libraries with the following command:

sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 lib32bz2-1.0

If you are running 64-bit Fedora, the command is:

sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686

Project sync issues

When attempting to sync your project, you may receive the following error message: "Connection to the Internet denied. ('Permission denied: connect')". You can resolve this error message by adding the system property to your file in Android Studio as follows:

  1. Open your file in Android Studio.
  2. Add the following line to the file:

    Note that if you have already added other Gradle JVM arguments to your file, you can add this property to the same line as shown in the following example:

    org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m
  3. Restart Android Studio for your changes to take effect.
  4. Click Sync Project with Gradle Files to sync your project.

Problems updating the IDE on Windows

On Windows, files that are in use by a process cannot be deleted. When you attempt to use the built-in update mechanism in the IDE, it sometimes refuses to install the update, usually providing an error message like "Can't delete C:\some\path\file".

To work around this, open the task manager and attempt to kill processes that may be using the file, such as any Gradle daemons.

minSdkVersion issues

If you are using an obsolete version of the Android Support Libraries, you may receive an error message like the following:

:app:processDebugManifest app/src/main/AndroidManifest.xml:0:0 Error:
uses-sdk:minSdkVersion 19 cannot be smaller than version L declared in library app/build/intermediates/exploded-aar/
Suggestion: use tools:overrideLibrary="" to force usage

To resolve this issue, use the SDK manager to update to the latest (non-preview) versions of the Android Support Libraries. For more information about setting up the Support Libraries, see Support Library Setup.

Android Emulator issues

See Android Emulator troubleshooting.

This page tracks current known issues with Android Studio. To report an issue not already included here, see Report a Bug.

  • Configuration on demand with Gradle 4.6: If you're using either Android Plugin for Gradle 3.0.1 or 3.1.0 with Gradle 4.6, you should disable configuration on demand in your file, as shown below, to avoid some unpredictable build errors. This issue should be fixed in a future version of the plugin.
  • The @RestrictTo lint check does not work for Windows machines: In Android Studio 2.3, the @RestrictTo lint check does not correctly trigger error messages on Windows machines.
  • Virtual Devices with parentheses in their names will not run(" and ")" characters from the name.This issue has been resolved as of Android Studio 2.3
  • Instant Run is not compatible with Jack: Instant Run is currently not compatible with the Jack compiler, so it is disabled for projects using the Jack compiler. (Using the Jack compiler is only necessary when using Java 8 language features.)
  • Tools and libraries that require the app's class files are not compatible with Jack: Various tools that read .class files (such as JaCoCo, Mockito, and some lint checks) are currently not compatible with the Jack compiler.
  • Gradle build unable to clean output folders when project is on NTFS on Linux: Because of the file locking behavior of NTFS, on Windows machines, Android Studio automatically copies the classes' JAR files to another location before indexing, so that subsequent Gradle builds can clean and make changes to the build/tree. See issue 202297 for more information. This behavior is not enabled when using NTFS on Linux or OSX machines, but can be manually specified in your file by uncommenting the following line:
  • Mac Performance: The OpenJDK 1.8.0_76 bundled with Studio 2.2 has a few problems on Mac. Using an external 4K monitor with a scaled resolution can adversely impact rendering performance as discussed in issue 203412 and in IDEA-144261, up to the point that the IDE becomes unresponsive. Additionally, as reported in issue 223749 and in IDEA-158500, scrolling is very sensitive on Mac 10.12 (Sierra).
  • Gradle Sync Failed: Broken Pipe: The issue is that the Gradle daemon is trying to use IPv4 instead of IPv6.
    • Workaround 1: On Linux, put the following in your ~/.profile or ~/.bash_profile:
      export _JAVA_OPTIONS=""
    • Workaround 2: in Android Studio's vmoptions file, change the line to For more information, see the Networking IPv6 User Guide.
  • "peer not authenticated" errors from Gradle sync or SDK Manager: The root cause of these errors is a missing certificate in $JAVA_HOME/jre/lib/certificates/cacerts. To resolve these errors, proceed as follows:
    • If you're behind a proxy, try to connect directly. If the direct connection works, then in order to connect via the proxy you may need to use keytool to add the proxy server's certificate to the cacerts file.
    • Re-install a supported, unmodified JDK. There's a known issue affecting Ubuntu users, which results in an empty /etc/ssl/certs/java/cacerts. To work around this issue, execute the following on the command line:
      $ sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
  • JUnit tests missing resources in classpath when run from Studio: If you have specific resource folders in your Java modules, then those resources won't be found when running tests from the IDE. Running tests using Gradle from the command line will work. Executing the Gradle check task from the IDE will also work. See issue 64887 for more details.This issue happens because as of IntelliJ 13, you can only have a single folder as the classpath. IntelliJ's builder copies all resources into that build folder, but Gradle doesn't copy over the resources.
    • Workaround 1: Run the Gradle check task from the IDE rather than running a unit test.
    • Workaround 2: Update your build script to manually copy resources into the build folder. See comment #13 for more information.
  • Running JUnit tests may compile the code twice: When creating a new project, the template JUnit configuration might be created with two "Before launch" steps: Make and Gradle-aware Make. This configuration is then propagated to all created JUnit run configurations.
    • To fix the issue for the current project, click Run > Edit Configurations and change the default JUnit configuration to only include the Gradle-aware Make step.
    • To fix the issue for all future projects, click File > Close Project. You should see the welcome screen. Then click Configure > Project Defaults > Run Configurations and change the JUnit configuration to only include the Gradle-aware Make step.
  • Some test run configurations don't work: Not all run configurations that are available when right-clicking a test method are valid. Specifically, the following configurations are not valid:
    • Gradle run configurations (which have a Gradle logo as the icon) don't work.
    • JUnit run configurations (which have an icon without the green Android) don't apply to instrumentation tests, which cannot be run on the local JVM.

    Android Studio also remembers the run configuration created in a given context (for example, right-clicking a specific class or method), and will not offer to run in a different configuration in the future. To fix this, clickRun > Edit Configurations and remove the incorrectly-created configurations.

  • Linux and the Awesome WM 3.4: Android Studio versions 0.8.3 and higher may not work correctly with the "Awesome WM" window manager version 3.4. To resolve this issue, upgrade to Awesome WM version 3.5.
  • Frozen keyboard input - "iBus" problems on Linux: There are some known interactions between the iBus daemon on Linux and Android Studio. In some scenarios, the IDE stops responding to keyboard input or starts inputting random characters. This bug is triggered by some missing synchronization between iBus and XLib + AWT, and has already been reported upstream to JetBrains and iBus. There are three current workarounds for this issue:
    • Workaround 1: Force iBus into synchronous mode. Before starting Android Studio, run the following on the command line:
      $ IBUS_ENABLE_SYNC_MODE=1 ibus-daemon -xrd
    • Workaround 2: Disable iBus input in Android Studio. To disable iBus input for Android Studio only, run the following on the command line:
      $ XMODIFIERS= ./bin/

      This workaround only disables input methods for Android Studio, not any other applications you may be running. Note that if you restart the daemon while Android Studio is running (for example, by running ibus-daemon -rd), you effectively disable the input methods for all other applications and may also crash Android Studio's JVM with a segmentation fault.

    • Workaround 3: Double-check the shortcut bindings to make sure that the Next input shortcut is not set to Control+Space, since this is also the code completion shortcut in Android Studio. Ubuntu 14.04 (Trusty) makes Super+Space the default shortcut, but settings from previous versions may still be around. To check your shortcut bindings, run ibus-setup on the command line to open the IBus Preferences window. Under Keyboard Shortcuts, check the Next input method. If it is set to Control+Space, change it to Super+Space, or another shortcut of your choice.
  • Ubuntu and JAyatana: JAyatana allows Java Swing applications to integrate with the global menu in Ubuntu's Unity graphical shell. In some cases, Android Studio may encounter a NullPointerException under Unity, with an error message such as:
    at com.jarego.jayatana.swing.SwingGlobalMenu.getSwingGlobalMenuWindowController(
    at com.jarego.jayatana.swing.SwingGlobalMenu.installLockParentGlobalMenu(
    at ...

    For more information, see issue 187179. Because of this issue, newer versions of Ubuntu are disabling JAyatana by default. If you encounter this problem, there are two possible workarounds (see this Stack Overflow post for more information):

    • Workaround 1: Unset the JAVA_TOOL_OPTIONS environment variable when running Android Studio.
    • Workaround 2: Uninstall JAyatana.
  • Adding Java breakpoints while debugging native code: While your app is paused at a breakpoint in your native code, the Auto and Dual debuggers may not immediately recognize new Java breakpoints that you set. To avoid this issue, add Java breakpoints either before starting a debug session or while the app is paused on a Java breakpoint. For more information, see issue 229949.
  • Stepping out of the native debugger: While using the Auto or Dual debugger to debug Java and native code, if you step into a native function from your Java code (for example, the debugger pauses execution at a line in your Java code that calls a native function and you click Step Into ) and you want to return to your Java code, click Resume Program  (instead of Step Out  or Step Over ). Your app process will still be paused, so click Resume Program  in the your-module-java tab to resume it. For more information, see issue 224385.
  • Spurious Render Exception: The specific render error message is: "The following classes could not be found: -". Despite the error message, the layout preview is correct and the message can be safely ignored.This issue has been fixed as of the Android Studio 2.0 preview.
  • Android Emulator HAXM on macOS High Sierra: The Android Emulator on macOS High Sierra (10.13) requires HAXM 6.2.1+ for best compatibility and stability with macOS. However, macOS 10.13 has a more involved process to install kernel extensions such as HAXM. You need to manually allow the kernel extension itself to be installed as follows:
    1. First, attempt to install the latest version of HAXM from the SDK Manager.
    2. In MacOS, go to System Preferences > Security and Privacy.
    3. If you see an alert that System software from developer "Intel Corporation Apps" was blocked from loading, click Allow:

    For more information and workarounds, see this Apple webpage and issue 62395878.

We want to fix your bugs! But many bugs don't include required information. So we are focusing our limited resources on bugs that have complete reports. To improve the chances of your bug being fixed, please take a moment to read this document.

If you don't follow these steps, we will close your bug. If that happens, simply resubmit with the additional information.

Also note that the issue tracker is not a support forum. If you have questions about how to use the tools, or how to get your Android app to work, please visit or one of the several Android developer support resources.

How to report a bug

  1. Make sure you are using the latest version of the tools. We spend a lot of time reviewing bugs that have already been fixed. If we close your issue and it's not resolved, please open another issue provided you can reproduce it using the latest version.
  2. Open a bug report from Android Studio by selecting Help > Submit Feedback. This is the easiest way to start a bug because it populates the bug report with your Android Studio version, Java version, and system information, which we need to properly reproduce the issue. (Otherwise, file your bug here and add the version information by hand.)
  3. Describe the exact steps to reproduce. If we can reproduce the issue on the first try, the odds of a fix are much better. If possible, include a code snippet (or better yet, point to a github project which can be used to reproduce the bug). Screenshots are also helpful to show what you are observing.
  4. Describe what you expected to happen, and what you instead observed.
  5. Pick a descriptive summary for the bug. You'd be surprised how many bugs are filed with the summary "Bug," "Issue," "Exception," "Not working," and so on, which makes it difficult for us to sort the issues.
  6. For certain kinds of bugs, we need additional information:

Details for Android Studio bugs

Include the following additional information that is specific for Android Studio bugs.

If the IDE hangs

If the IDE itself appears to be very sluggish or completely frozen, generate a couple of thread dumps and attach them to the bug report. These tell us what the IDE is so busy doing (or what contended resource it’s waiting for).

If the IDE is sluggish but not frozen, also attach the idea.log file (select Help > Show Log in Finder). This shows us whether the reason the IDE is sluggish is that it's constantly throwing errors into the log.

If the IDE runs out of memory

If the IDE is running out of memory, please generate a histogram of the heap by executing the following:

jmap -histo:live 

If the IDE crashes or throws exceptions

For other types of crashes, attach the idea.log file. Select Help > Show Log in Finder.

Generating a thread dump

A thread dump is a printout of all the threads running in the JVM, and for each thread, a printout of all the stackframes. This makes it easy to see what the IDE is busy doing. Especially if you generate a couple of thread dumps a few seconds apart.

When you report bugs where the IDE is extremely busy with a pegged CPU, or where the IDE appears to have frozen, a thread dump can pinpoint either what code is doing a lot of work, or which threads are contending over resources and causing a deadlock.

The JDK ships with a tool named "jstack" which can be used to generate a thread dump. First you'll need to find the process id of the Android Studio process. You can use the "jps" command for that. (Both jstack and jps are in the bin directory of the JDK. If you have multiple JDKs installed, you should use the same version here as the one you are running Android Studio with, and you can see what version that is in Android Studio's About box.)

On Linux, Mac:

jps -mv | grep studio

For Windows:

jps -mv | findstr studio

For example, this will print out a long line like this:

$ jps -mv | grep studio
37605 -Dfile.encoding=UTF-8 -ea -Djna.nosys=true ...

The first number on the left, 37605 in this case, is the process ID.

Next, you can generate a thread dump and save it to the file dump.txt like so:

jstack -l pid >> dump.txt

If that does not work, there are some additional platform-specific ways you can generate a thread dump; seeIntelliJ Support for detailed instructions.

Details for Instant Run bugs

To report an issue with Instant Run, follow these steps:

  1. Enable Android Studio to log extra information about your Instant Run session.
  2. If you want to submit feedback about an issue you encountered before completing the previous step, try to recreate the issue.
  3. Submit a report immediately after you encounter an Instant Run issue.

What we collect

Enabling the IDE to log the following information about your Instant Run session helps the Android Studio team better understand the issue you encountered and is only ever used for that purpose:

  • idea.log: This log captures detailed information about Android Studio and its SDK tools as they perform their various actions. You can view this log for yourself by selecting Help > Show Log in Explorer (or Show Log in Finder on Mac).
  • build-info.xml: This is an intermediate file that Android Studio uses to coordinate Instant Run features with the Android plugin for Gradle.
  • build.log: This log captures build information from Gradle. This is similar to the output you see when you run Gradle with the --info command line option and click View > Tool Windows > Gradle Console (or click Gradle Console  in the tool window bar).
  • Logcat output: captures Instant Run runtime events (that is, events with the InstantRun tag) from the target device or emulator while the app is running. To learn more about logcat outputs, read Write and View Logs with Logcat.
  • profile.log: This log provides a profile of how quickly Gradle progressed through each build task.
  • TARGET-*: This is an empty file that Android Studio names after your target device (for example, TARGET-MOTOROLA-NEXUS6).

Enable extra logging

To grant Android Studio permission to capture and send this information, follow these steps:

  1. Open the Settings or Preferences dialog.
  2. Navigate to Build, Execution, Deployment > Instant Run.
  3. Check the Log extra info checkbox. You can disable this option at any time.
  4. Click OK.

Report an issue

After you enable extra logging, recreate any Instant Run issue you previously experienced. Immediately after you reproduce an issue, submit a report as follows:

  1. Select Help > Report Instant Run Issue from the menu bar. A dialog appears, similar to the one shown in figure 4.

    Figure 4. You can provide extra details in the text field and review the logs Android Studio will send along with your report.

  2. Provide some additional information in the text field to describe your experience, such as steps to reproduce the issue or how actual behavior differed from your expectations.
  3. When you are done, click OK.

Details for build tools and Gradle bugs

Include the following information that is specific for problems related to building your projects or problems with Gradle sync:

  • Gradle version. Select File > Project Structure, click Project, and then locate Gradle version.
  • Android Plugin Version. On the same page as the Gradle version, locate Android Plugin Version.
  • Module Compile Sdk Version. From the above page, select your module in the left pane and locate Compile Sdk Version.
  • Module Build Tools Version. From the above page, locate Build Tools Version.
  • Android SDK Tools version. Select Tools > SDK Manager, click SDK Tools, and then locate Android SDK Tools

Details for Android Emulator bugs

The easiest way to gather the emulator details is to use the File a bug feature in the extended controls:

  1. Click More  in the emulator panel.
  2. In the Extended controls window, select Bug Report on the left.This opens a screen where you can see the bug report details such as the screenshot, the AVD configuration info, and a bug report log. You can enter the steps to reproduce here or wait and type them into the report generated in the next step.
  3. Wait for the bug report to finish collecting, and then click Send to Google. This opens a window for you to save the bug report in a folder and then opens your browser to create a report in the Google Issue Tracker, with the necessary emulator details filled in.
  4. In the report, complete any remaining details such as the steps to reproduce the bug and attach the files saved when you created the bug report.

Otherwise, you must manually enter the following details:

  • Emulator Version. In the emulator, open the Extended controls, click Help, then click the About tab to find the Emulator version
  • Android SDK Tools version. Select Tools > SDK Manager, click SDK Tools, and then locate Android SDK Tools
  • Host CPU Model.
    • On Linux: Open /proc/cpuinfo
    • On Windows: Right-click My Computer and select Properties
    • On Mac: Click the Apple icon and click About This Mac
  • Device name. From the AVD Manager, click to open the drop-down menu in the Actions column for the device, and then select View Details (or open the $avdname.avd/config.ini file). Find the entry For example: 5

Preview release

Get early access to the latest features and improvements in Android Studio.

Canary build

Get the bleeding-edge features in a lightly tested build.


Use the latest tools

Preview builds give you early access to new features in all aspects of the IDE, plus early versions of other tools such as the Android Emulator and platform SDK previews.

Run alongside stable

You can install multiple versions of Android Studio side-by-side, so if a bug in the preview build blocks you, you can keep working on the same project from the stable version.

Share feedback

By building your apps with the Android Studio preview, you’re also helping us create a better version of Android Studio. We want to hear from you if you encounter any bugs.

Recent updates



Android Studio 3.2 Canary 14 now available

Android Studio 3.2 Canary 14 is now available in the Canary and Dev channels. For details of what's new in this canary release, see these sections of the release notes : What's New Assistant Navigation Editor AndroidX refactoring Android App Bundle


Emulator 27.3.0 Canary, 27.2.8 Beta

Emulator 27.3.0 Canary and 27.2.8 Beta are now available in the Canary and Beta channels, respectively. Changes common to both versions: Previously, we hardcoded all AVD userdata image sizes to 2GB. Now, we allow user data sizes under 2GB that are


Android Studio 3.2 Canary 13 available

Android Studio 3.2 Canary 13 is now available in the Canary and Dev channels. For details of what's new in this canary release, see these sections of the release notes: IntelliJ IDEA 2018.1.1 Export


Documentation for app developers

Whether you're building for Android handsets, Wear OS by Google, Android TV, Android Auto, or Android Things, this section provides the guides and API reference you need.

You can choose from a number of preset keymaps or modify a preset keymap to create a new custom keymap in the keymap settings for Android Studio.

To open the keymap settings, choose File > Settings (on Mac, Android Studio > Preferences) and navigate to the Keymap pane.

Figure 1. The Android Studio keymap settings window.

  1. Keymaps dropdown: Select the desired keymap from this menu to switch between preset keymaps.
  2. Actions list: Right click on an action to modify it. You can add additional keyboard shortcuts for the action, add mouse shortcuts to associate an action with a mouse click, or remove current shortcuts. If you are using a preset keymap, modifying an action’s shortcuts will automatically create a copy of the keymap and add your modifications to the copy.
  3. Copy button: Select a keymap from the dropdown menu to use as a starting point, and click Copy to create a new custom keymap. You can modify the keymap name and shortcuts.
  4. Reset button: Select a keymap from the dropdown menu and click Reset to revert it to its original configuration.
  5. Search box: Type here to search for a keyboard shortcut by the action name.
  6. Search by Shortcut: Click Find Actions by Shortcut and type a shortcut to search for actions by shortcut.

Keyboard Shortcuts

Android Studio includes keyboard shortcuts for many common actions. Table 1 shows the default keyboard shortcuts by operating system.

Note: In addition to the default keymaps in table 1 below, you can select from a number of preset keymaps or create a custom keymap. For more about customizing your keyboard shortcuts, see Configure Custom Keymaps, below.

Table 1. Default keyboard shortcuts for Windows/Linux and Mac operating systems


Save all Control + S Command + S
Synchronize Control + Alt + Y Command + Option + Y
Maximize/minimize editor Control + Shift + F12 Control + Command + F12
Add to favorites Alt + Shift + F Option + Shift + F
Inspect current file with current profile Alt + Shift + I Option + Shift + I
Quick switch scheme Control + ` (backquote) Control + ` (backquote)
Open settings dialogue Control + Alt + S Command + , (comma)
Open project structure dialog Control + Alt + Shift + S Command + ; (semicolon)
Switch between tabs and tool window Control + Tab Control + Tab

Navigating and Searching Within Studio

Search everything (including code and menus) Press Shift twice Press Shift twice
Find Control + F Command + F
Find next F3 Command + G
Find previous Shift + F3 Command + Shift + G
Replace Control + R Command + R
Find action Control + Shift + A Command + Shift + A
Search by symbol name Control + Alt + Shift + N some value 1
Find class Control + N Command + O
Find file (instead of class) Control + Shift + N Command + Shift + O
Find in path Control + Shift + F Command + Shift + F
Open file structure pop-up Control + F12 Command + F12
Navigate between open editor tabs Alt + Right/Left Arrow Control + Right/Left Arrow
Jump to source F4 / Control + Enter F4 / Command + Down Arrow
Open current editor tab in new window Shift + F4 Shift + F4
Recently opened files pop-up Control + E Command + E
Recently edited files pop-up Control + Shift + E Command + Shift + E
Go to last edit location Control + Shift + Backspace Command + Shift + Backspace
Close active editor tab Control + F4 Command + W
Return to editor window from a tool window Esc Esc
Hide active or last active tool window Shift + Esc Shift + Esc
Go to line Control + G Command + L
Open type hierarchy Control + H Control + H
Open method hierarchy Control + Shift + H Command + Shift + H
Open call hierarchy Control + Alt + H Control + Option + H

Writing Code

Generate code (getters, setters, constructors, hashCode/equals, toString, new file, new class) Alt + Insert Command + N
Override methods Control + O Control + O
Implement methods Control + I Control + I
Surround with (if...else / try...catch / etc.) Control + Alt + T Command + Option + T
Delete line at caret Control + Y Command + Backspace
Collapse/expand current code block Control + minus/plus Command + minus/plus
Collapse/expand all code blocks Control + Shift + minus/plus Command + Shift + minus/plus
Duplicate current line or selection Control + D Command + D
Basic code completion Control + Space Control + Space
Smart code completion (filters the list of methods and variables by expected type) Control + Shift + Space Control + Shift + Space
Complete statement Control + Shift + Enter Command + Shift + Enter
Quick documentation lookup Control + Q Control + J
Show parameters for selected method Control + P Command + P
Go to declaration (directly) Control + B or Control + Click Command + B or Command + Click
Go to implementations Control + Alt + B Command + Alt + B
Go to super-method/super-class Control + U Command + U
Open quick definition lookup Control + Shift + I Command + Y
Toggle project tool window visibility Alt + 1 Command + 1
Toggle bookmark F11 F3
Toggle bookmark with mnemonic Control + F11 Option + F3
Comment/uncomment with line comment Control + / Command + /
Comment/uncomment with block comment Control + Shift + / Command + Shift + /
Select successively increasing code blocks Control + W Option + Up
Decrease current selection to previous state Control + Shift + W Option + Down
Move to code block start Control + [ Option + Command + [
Move to code block end Control + ] Option + Command + ]
Select to the code block start Control + Shift + [ Option + Command + Shift + [
Select to the code block end Control + Shift + ] Option + Command + Shift + ]
Delete to end of word Control + Delete Option + Delete
Delete to start of word Control + Backspace Option + Backspace
Optimize imports Control + Alt + O Control + Option + O
Project quick fix (show intention actions and quick fixes) Alt + Enter Option + Enter
Reformat code Control + Alt + L Command + Option + L
Auto-indent lines Control + Alt + I Control + Option + I
Indent/unindent lines Tab/Shift + Tab sTab/Shift + Tab
Smart line join Control + Shift + J Control + Shift + J
Smart line split Control + Enter Command + Enter
Start new line Shift + Enter Shift + Enter
Next/previous highlighted error F2 / Shift + F2 F2 / Shift + F2

Build and Run

Build Control + F9 Command + F9
Build and run Shift + F10 Control + R
Apply changes (with Instant Run) Control + F10 Control + Command + R


Debug Shift + F9 Control + D
Step over F8 F8
Step into F7 F7
Smart step into Shift + F7 Shift + F7
Step out Shift + F8 Shift + F8
Run to cursor Alt + F9 Option + F9
Evaluate expression Alt + F8 Option + F8
Resume program F9 Command + Option + R
Toggle breakpoint Control + F8 Command + F8
View breakpoints Control + Shift + F8 Command + Shift + F8


Copy F5 F5
Move F6 F6
Safe delete Alt + Delete Command + Delete
Rename Shift + F6 Shift + F6
Change signature Control + F6 Command + F6
Inline Control + Alt + N Command + Option + N
Extract method Control + Alt + M Command + Option + M
Extract variable Control + Alt + V Command + Option + V
Extract field Control + Alt + F Command + Option + F
Extract constant Control + Alt + C Command + Option + C
Extract parameter Control + Alt + P Command + Option + P

Version Control / Local History

Commit project to VCS Control + K Command + K
Update project from VCS Control + T Command + T
View recent changes Alt + Shift + C Option + Shift + C
Open VCS popup Alt + ` (backquote) Control + V

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

Устаревшие компоненты

Раньше на сайте были описания устаревших компонентов. Я решил их удалить, чтобы не мозолили глаза. В их число попали GalleryAnalogClockDigitalClock.

На панели Palette находятся компоненты пользовательского интерфейса: View, Layouts, ViewGroup.

Виджет — это объект View, который служит интерфейсом для взаимодействия с пользователем. Если сказать предыдущую умную фразу простым языком, понятным даже коту, то виджеты — это обычные элементы управления: кнопочки, текстовые поля, флажки, переключатели, списки.

В сети можно встретить разные способы наименования на русском - контрол, вьюха, представление и т.д. Мы с вами будем использовать термин компонент. А знаете почему? Берём крайние буквы слова, отсчитываем по три следующих символа и выкидываем их на свалку. Что остаётся? Ну вы поняли - компонент. Красиво спрятались.

Кстати, в последних версиях Android Studio в режиме Design появилась панель Component Tree, хотя раньше в Eclipse аналогичная вкладка называлась Outline. Видимо, разработчики из Гугла читали эту статью и внесли поправки.

Стандартные элементы имеют привычные свойства: ширина, высота, цвет и т.п.

Другие настройки могут сбить с толку других программистов, поэтому не изощряйтесь в остроумии.

Выравнивание (gravity) - это ориентация в контейнере (alignment). Например, вы хотите выровнять текст надписи по правому краю, тогда свойство gravity будет иметь значение right. Набор значений для gravity достаточно ограничен: leftcenterrighttopbottomcenter_vertiсаlсliр_horizontal и еще некоторые.

Обратите внимание, что в Android есть два сходных атрибута выравнивания: android: gravity и android: layout_gravity. Разница заключается в том, что android: gravity - это настройка, используемая компонентом, а android: layout_gravity применяется контейнером. Например, можно установить для android: gravityзначение center, чтобы текст в EditText был выровнен по центру. Аналогичным образом можно выровнять EditText по правому краю LinearLayout (который является контейнером), установив android: layout_gravity="right".

У компонентов также есть атрибут android:tag, который можно использовать для хранения каких-то промежуточных данных. Также можно устанавливать теги программно. Напишем надуманный пример:

Далее >>>

Device compatibility


Android TV

Android Auto

Android Things

Chrome OS devices

Рубрика, посвящённая разработке дизайна под Android. Полезные приёмы, трюки, хитрости. Сделаем приложения красивыми, как коты.


Картинка взята со страницы Гугла о дизайне Design Reviews: Going beyond the surface - Articles - Google Design



Google выложила на Гитхабе библиотеку значков в svg-формате, можно скачать одним архивом или просмотреть онлайн. Для использования в VectorDrawable.


Android is the world's most popular mobile operating system, powering billions of devices ranging from phones to watches, tablets, TVs, and more.




Kotlin is now an official language on Android! Kotlin is already beloved by many Android developers for its combination of simplicity and power. So we're excited to make Kotlin development on Android a first-class experience.



Architecture Components

A collection of recommended libraries that help you design robust, testable apps are now stable for use in production apps and libraries.



Android 8.1 Oreo

Smarter, faster, and more powerful than ever. The world's favorite cookie is your new favorite Android release.


Android devices

Android runs on devices of all shapes and sizes, providing you a vast opportunity for continued user engagement.


Wear OS by Google

Make every minute matter with Wear OS by Google. Smartwatches that keep users connected to their health, the people and info they care about, and the Google Assistant — all from the wrist.




Build apps that let users experience your app's emersive content on the big screen. Users can discover your content recommendations on the home screen, and the leanback library provides APIs to help you build a great use experience for a remote control.




Write your apps for an in-car experience without having to worry about vehicle-specific hardware differences like screen resolution, software interfaces, knobs, and touch controls.




Build internet-connected devices for a wide variety of consumer, retail, and industrial applications.



Chrome OS

You can now distribute your Android apps to Google Chrome OS devices, such as Chromebooks, through Google Play Store.



Android Jetpack

Jetpack is a set of libraries, tools and architectural guidance to help make it quick and easy to build great Android apps. It provides common infrastructure code so you can focus on what makes your app unique.


Это курс для начинающих Android разработчиков, в котором вы создадите стильное клиентское приложение к социальной сети Twitter.

В данном курсе вы пройдёте полный цикл разработки Android приложения: от установки среды разработки до подключения к сервису Twitter.

В первой части вы познакомитесь с элементами UI и общими принципами вёрстки. А во втором модуле на практике изучите взаимодействие API Twitter-сервиса.

Для лучшего понимания излагаемого материала рекомендуем ознакомиться с базовым курсом по языку Java, а также разработкой под ОС Android.

Обучение по максимуму направлено на получение прикладных знаний, использующихся при написании реальных приложений.

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


Подготовка к работе

Урок 0. Установка необходимого ПО, создание пустого проекта

Создание пользовательского интерфейса

Урок 1. Создание Activity и работа с LinearLayout на примере UserInfoScreen

Урок 2. Работа с RelativeLayout на примере UserInfoScreen

Урок 3. Ресурсы папки res/values. Локализация. AndroidManifest

Урок 4. Файл styles.xml, знакомство с TextAppearance

Урок 5. Атрибут app:fontFamily. Использование Font-Awesome для отображения иконок

Урок 6. Библиотки для ImageView: Picasso, CircleImageView.

Урок 7. Практика. Создание элемента списка твитов

Урок 8. Практика. Создание элемента списка пользователей и тулбара поиска пользователей

Создание POJO объектов

Урок 9. Создание POJO объекта User. Работа с View из java кода

Урок 10. Практика. Создание POJO объекта Tweet

Работа со списками

Урок 11. Работа с RecyclerView на примере TweetsRecyclerView

Урок 12. Практика. UsersAdapter. Обработка клика по элементу списка

Создание Toolbar

Урок 13. Работа с Toolbar и menu на примере UserInfoActivity

Урок 14. Наполнение Toolbar вложенными элементами на экране SearchUsersActivity


  1. Учебник по разработке Android для Kotlin - приложение для настройки видео
  2. Учебник по разработке Android для Kotlin - Использование WebView
  3. Учебное пособие по разработке андроида Kotlin - Создание панели инструментов для навигации
  4. Учебник по разработке Android для Kotlin - Добавление кнопок вперед и назад
  5. Учебник по разработке Android для Kotlin - ArrayList для веб-передовой истории
  6. Учебник по разработке Android для Kotlin - Создание списка истории DialogFragment
  7. Учебник по разработке Android для Kotlin - Создание диалогового интерфейса
  8. Учебник по разработке Android от Kotlin - Добавление RecyclerView
  9. Учебник по разработке Android от Kotlin - RecyclerView onClick
  10. Учебник по разработке Android для Kotlin - полноэкранное видео
  11. Kotlin в приложениях для потоковой передачи видео в Android с помощью VideoView, MediaPlayer и Exoplayer.
  12. Учебник по разработке Android для Kotlin: потоковая передача видео с помощью VideoView
  13. Учебник по разработке Android для Kotlin: потоковая передача видео с использованием MediaPlayer с SurfaceView
  14. Учебник по разработке андроида Kotlin: потоковая передача видео с использованием ExoPlayer
  15. Использование API Google для Kotlin для Android Введение
  16. Kotlin на Android-проверке сервисов Google Play
  17. Кotlin по проверке разработки Android для подключения к сети устройства
  18. Kotlin на Android создает учетные данные идентификатора клиента OAuth 2.0
  19. Kotlin на Android с помощью EasyPermissions для разрешения GET_ACCOUNTS
  20. Kotlin в Android-библиотеках изображений HTTP: Введение
  21. Kotlin на Android HTTP Библиотеки изображений: Picasso
  22. Kotlin на Android HTTP Библиотеки изображений: Glide v4
  23. Kotlin по разработке Android: загрузка и отображение изображений с использованием Volley
  24. Фрагмент Kotlin: Введение
  25. Kotlin на Android Development: создание Android-фрагмента
  26. Kotlin по разработке Android: загрузка и отображение изображений с использованием OkHttp
  27. Kotlin в разработке Android: переключение фрагментов с помощью меню
  28. Kotlin по разработке Android: загрузка и отображение изображений с использованием HttpUrlConnection & Anko сопрограммы
  29. Kotlin по разработке Android: загрузка и отображение изображений с использованием HttpUrlConnection & Anko c
  30. Kotlin для разработки Android: API Camera2 для предварительного просмотра
  31. Kotlin на Android-разработке: Camera2 API TextureView
  32. Kotlin в Android Development: использование ToolBar с навигационным ящиком
  33. Kotlin Camera2 API EasyPermissions
  34. Kotlin в Android Development: выбор фрагментов с помощью ViewPager
  35. Kotlin Camera2 API получает идентификатор устройства для задней камеры
  36. Обмен данными фрагмента Kotlin: Введение
  37. Kotlin BottomNagivationView Учебник по разработке Android
  38. Kotlin по разработке Android: открытая камера Camera2 API
  39. Камера заднего обзора Kotlin Camera2
  40. Обмен данными фрагмента Kotlin: использование интерфейса фрагмента
  41. Обмен данными фрагмента Kotlin: использование аргументов фрагментов
  42. Введение в видео захват видеокамеры Kotlin
  43. Обмен данными фрагмента Kotlin: использование ViewModel
  44. Kotlin camera2 API-интерфейс, настраивающий иконки пользовательского интерфейса
  45. Kotlin camera2 API для настройки видео MediaRecorder
  46. Kotlin camera2 API захватывает видеозапись
  47. Kotlin androiddev development camera2 api video round thumb
  48. Kotlin camera2 API для обмена видео Uri между Android-фрагментами
  49. Воспроизведение видео в формате Kotlin camera2 с использованием ExoPlayer
  50. Видеоизображение Kotlin camera2 API в режиме изображения

 Legal Notice: Android is an open platform that's freely available to you as an app developer. You can immediately download the Android SDK develop apps, and distribute them to the world without any registration or fees. Android is developed by Google LLC and the Open Handset Alliance.