blob: 11c1c74249ed892f26738689dfc3a6fc61070f1e [file] [log] [blame]
page.title=Android Studio Overview
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>In this document</h2>
<ol>
<li><a href="#project-structure">Project and File Structure</a></li>
<li><a href="#build-system">Android Build System</a></li>
<li><a href="#debug-perf">Debug and Performance</a></li>
<li><a href="#install-updates">Installation, Setup, and Update Management</a></li>
<li><a href="#proxy">HTTP Proxy Settings</a></li>
<li><a href="#other">Other Highlights</a></li>
</ol>
<h2>See also</h2>
<ol>
<li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA">IntelliJ FAQ on migrating to IntelliJ IDEA</a></li>
</ol>
</div>
</div>
<p>Android Studio is the official IDE for Android application development,
based on <a href="https://www.jetbrains.com/idea/" class="external-link"
target="_blank">IntelliJ IDEA</a>.
On top of the capabilities you expect from IntelliJ,
Android Studio offers:</p>
<ul>
<li>Flexible Gradle-based build system</li>
<li>Build variants and multiple <code>apk</code> file generation</li>
<li>Code templates to help you build common app features</li>
<li>Rich layout editor with support for drag and drop theme editing</li>
<li>Lint tools to catch performance, usability, version compatibility, and other problems</li>
<li>ProGuard and app-signing capabilities</li>
<li>Built-in support for <a
href="http://developers.google.com/cloud/devtools/android_studio_templates/"
class="external-link">Google Cloud Platform</a>, making it easy to integrate Google Cloud
Messaging and App Engine</li>
<li>And much more</li>
</ul>
<p><b><a href="{@docRoot}sdk/index.html">Download Android Studio now</a></b>. </p>
<p>If you're new to Android Studio or the IntelliJ IDEA interface, this
page provides an introduction to some key Android
Studio features.</p>
<p>For specific Android Studio how-to documentation, see the pages in the <a href=
"{@docRoot}tools/workflow/index.html">Workflow</a> section, such as <a href=
"{@docRoot}tools/projects/projects-studio.html">Managing Projects from Android Studio</a> and
<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android
Studio</a>.</p>
<h2 id="project-structure">Project and File Structure</h2>
<h3 id="project-view"><em>Android</em> Project View</h3>
<p>By default, Android Studio displays your profile files in the <em>Android</em> project view. This
view shows a flattened version of your project's structure that provides quick access to the key
source files of Android projects and helps you work with the
<a href="{@docRoot}sdk/installing/studio-build.html">Gradle-based build system</a>.
The Android project view:</p>
<ul>
<li>Groups the build files for all modules at the top level of the project hierarchy.</li>
<li>Shows the most important source directories at the top level of the module hierarchy.</li>
<li>Groups all the manifest files for each module.</li>
<li>Shows resource files from all Gradle source sets.</li>
<li>Groups resource files for different locales, orientations, and screen types in a single
group per resource type.</li>
</ul>
<img src="{@docRoot}images/tools/projectview01.png" />
<p class="img-caption"><strong>Figure 1.</strong> Show the Android project view.</p>
<img src="{@docRoot}images/tools/studio-projectview_scripts.png" />
<p class="img-caption"><strong>Figure 2.</strong> Project Build Files.</p>
<p>The <em>Android</em> project view shows all the build files at the top level of the project
hierarchy under <strong>Gradle Scripts</strong>. Each project module appears as a folder at the
top level of the project hierarchy and contains these three elements at the top level:</p>
<ul>
<li><code>java/</code> - Source files for the module.</li>
<li><code>manifests/</code> - Manifest files for the module.</li>
<li><code>res/</code> - Resource files for the module.</li>
</ul>
<p>For example, <em>Android</em> project view groups all the instances of the
<code>ic_launcher.png</code> resource for different screen densities under the same element.</p>
<p class="note"><strong>Note:</strong> The project structure on disk differs from this flattened
representation. To switch to back the segregated project view, select <strong>Project</strong> from
the <strong>Project</strong drop-down. </p>
<h3>Android Studio Project and Directory Structure</h3>
<p>When you use the <em>Project</em> view of a new project in Android Studio, you
should notice that the project structure appears different than you may be used to in Eclipse. Each
instance of Android Studio contains a project with one or more application modules. Each
application module folder contains the complete source sets for that module, including
{@code src/main} and {@code src/androidTest} directories, resources, build
file and the Android manifest. For the most part, you will need to modify the files under each
module's {@code src/main} directory for source code updates, the gradle.build file for build
specification and the files under {@code src/androidTest} directory for test case creation.
<p> <img src="{@docRoot}images/tools/studio-project-layout.png" alt="" /></p>
<p> <class="img-caption"><strong>Figure 3.</strong> Android Studio project structure</p>
<p>For more information, see
<a href="http://confluence.jetbrains.com/display/IntelliJIDEA/Project+Organization"class="external-link">IntelliJ project organization</a> and
<a href="{@docRoot}tools/projects/index.html">Managing Projects</a>.</p>
<h3>Creating new files</h3>
<p>You can quickly add new code and resource files by clicking the appropriate directory in the
<strong>Project</strong> pane and pressing <code>ALT + INSERT</code> on Windows and Linux or
<code>COMMAND + N</code> on Mac. Based on the type of directory selected, Android Studio
offers to create the appropriate file type.</p>
<p>For example, if you select a layout directory, press <code>ALT + INSERT</code> on Windows,
and select <strong>Layout resource file</strong>, a dialog opens so you can name the file
(you can exclude the {@code .xml} suffix) and choose a root view element. The editor then
switches to the layout design editor so you can begin designing your layout.</p>
<h2 id="build-system">Android Build System</h2>
<h3>Android Build System</h3>
<p>The Android build system is the toolkit you use to build, test, run and package
your apps. This build system replaces the Ant system used with Eclipse ADT. It can run as an
integrated tool from the Android Studio menu and independently from the command line. You can use
the features of the build system to:</p>
<ul>
<li>Customize, configure, and extend the build process.</li>
<li>Create multiple APKs for your app with different features using the same project and
modules.</li>
<li>Reuse code and resources across source sets.</li>
</ul>
<p>The flexibility of the Android build system enables you to achieve all of this without
modifying your app's core source files. To build an Android Studio project, see
<a href="{@docRoot}tools/building/building-studio.html">Building and Running from Android Studio</a>.
To configure custom build settings in an Android Studio project, see
<a href="{@docRoot}tools/building/configuring-gradle.html">Configuring Gradle Builds</a>.</p>
<h3>Application ID for Package Identification </h3>
<p>With the Android build system, the <em>applicationId</em> attribute is used to
uniquely identify application packages for publishing. The application ID is set in the
<em>android</em> section of the <code>build.gradle</code> file.
</p>
<pre>
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "19.1"
defaultConfig {
<strong>applicationId "com.example.my.app"</strong>
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
...
</pre>
<p class="note"><strong>Note:</strong> The <em>applicationId</em> is specified only in your
build.gradle file, and not in the AndroidManifest.xml file.</p>
<p>When using build variants, the build system enables you to to uniquely identify different
packages for each product flavors and build types. The application ID in the build type is added as
a suffix to those specified for the product flavors. </p>
<pre>
productFlavors {
pro {
applicationId = "com.example.my.pkg.pro"
}
free {
applicationId = "com.example.my.pkg.free"
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
....
</pre>
<p>The package name must still be specified in the manifest file. It is used in your source code
to refer to your R class and to resolve any relative activity/service registrations. </p>
<pre>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<strong>package="com.example.app"</strong>>
</pre>
<p class="note"><strong>Note:</strong> If you have multiple manifests (for example, a product
flavor specific manifest and a build type manifest), the package name is optional in those manifests.
If it is specified in those manifests, the package name must be identical to the package name
specified in the manifest in the <code>src/main/</code> folder. </p>
<p>For more information about the build files and process, see
<a href="{@docRoot}sdk/installing/studio-build.html">Build System Overview</a>.</p>
<h2 id="debug-perf">Debug and Performance</h2>
<h3>Android Virtual Device (AVD) Manager</h3>
<p>AVD Manager has updated screens with links to help you select the most popular device
configurations, screen sizes and resolutions for your app previews.</p>
Click the <strong>Android Virtual Device Manager</strong>
<img src="{@docRoot}images/tools/avd-manager-studio.png"
style="vertical-align:bottom;margin:0;height:19px" /> in the toolbar to open it and create
new virtual devices for running your app in the emulator.</p>
<p>The AVD Manager comes with emulators for Nexus 6 and Nexus 9 devices and also supports
creating custom Android device skins based on specific emulator properties and assigning those
skins to hardware profiles. Android Studio installs the Intel&#174; x86 Hardware Accelerated Execution
Manager (HAXM) emulator accelerator and creates a default emulator for quick app prototyping.</p>
<p>For more information, see <a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs</a>.</p>
<h3> Memory Monitor</h3>
<p>Android Studio provides a memory monitor view so you can more easily monitor your
app's memory usage to find deallocated objects, locate memory leaks and track the amount of
memory the connected device is using. With your app running on a device or emulator, click the
<strong>Memory Monitor</strong> tab in the lower right corner to launch the memory monitor. </p>
<img src="{@docRoot}images/tools/studio-memory-monitor.png" />
<p class="img-caption"><strong>Figure 5.</strong> Memory Monitor</p>
<h3> Lint inspections</h3>
<p>The Android {@code lint} tool is a static code analysis tool that checks your Android project
source files for potential bugs and optimization improvements. Choose the <strong>Analyze &gt;
Inspect Code</strong> to manually run the inspections. The {@code lint} settings icon in the
Inspection display provides a complete list of the current inspections.</p>
<p>Hovering over a Lint error displays the full issue explanation inline for easy error
resolution. There is also a helpful hyperlink at the end of the error message for additional
error information.</p>
<p>With Android Studio, you can run Lint for a specific build variant, or for all build variants.
You can configure Lint by adding a <em>lintOptions</em> property to the Android settings in the
build.gradle file. </p>
<pre>
android {
lintOptions {
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
</pre>
<p>For more information, see
<a href="{@docRoot}tools/debugging/improving-w-lint.html">Improving Your Code with Lint</a>.</p>
<h3>Dynamic layout preview</h3>
<p>Android Studio allows you to work with layouts in both a <em>Design View</em> </p>
<p><img src="{@docRoot}images/tools/studio-helloworld-design.png" alt="" />
</p>
<p class="img-caption"><strong>Figure 6.</strong> Hello World App with Design View</p>
<p>and a <em>Text View</em>. </p>
<p><img src="{@docRoot}images/tools/studio-helloworld-text.png" alt="" />
<pclass="img-caption"><strong>Figure 7.</strong> Hello World App with Text View</p>
<p>Easily select and preview layout changes for different device images, display
densities, UI modes, locales, and Android versions (multi-API version rendering).
<p><img src="{@docRoot}images/tools/studio-api-version-rendering.png" /></p>
<p class="img-caption"><strong>Figure 8.</strong> API Version Rendering</p>
<p>From the Design View, you can drag and drop elements from the Palette to the Preview or
Component Tree. The Text View allows you to directly edit the XML settings, while previewing
the device display. </p>
<h3>Log messages</h3>
<p>When you build and run your app with Android Studio, you can view adb and device log messages
(logcat) in the DDMS pane by clicking <strong>Android</strong> at the bottom of the window.</p>
<p>If you want to debug your app with the
<a href="{@docRoot}tools/help/monitor.html">Android Debug Monitor</a>, you can launch it by
clicking <strong>Monitor</strong>
<img src="{@docRoot}images/tools/monitor-studio.png" style="vertical-align:bottom;margin:0;height:19px"/>
in the toolbar. The Debug Monitor is where you can find the complete set of
<a href="{@docRoot}tools/debugging/ddms.html">DDMS</a> tools for profiling your app,
controlling device behaviors, and more. It also includes the Hierarchy Viewer tools to help
<a href="{@docRoot}tools/debugging/debugging-ui.html"> optimize your layouts</a>.</p>
<h2 id="install-updates">Installation, Setup, and Update Management</h2>
<h3>Android Studio installation and setup wizards</h3>
<p>An updated installation and setup wizards walk you through a step-by-step installation
and setup process as the wizard checks for system requirements, such as the Java Development
Kit (JDK) and available RAM, and then prompts for optional installation options, such as the
Intel&#174; HAXM emulator accelerator.</p>
<p>An updated setup wizard walks you through the setup processes as
the wizard updates your system image and emulation requirements, such GPU, and then creates
an optimized default Android Virtual Device (AVD) based on Android 5 (Lollipop) for speedy and
reliable emulation. </p>
<p><img src="{@docRoot}images/tools/studio-setup-wizard.png" /></p>
<p class="img-caption"><strong>Figure 9.</strong> Setup Wizard</p>
<h3>Expanded template and form factor support</h3>
<p>Android Studio supports templates for Google Services and expands the available device
types. </p>
<h4> Android Wear and TV support</h4>
<p>For easy cross-platform development, the Project Wizard provides new templates for
creating your apps for Android Wear and TV. </p>
<p><img src="{@docRoot}images/tools/studio-tvwearsupport.png" />
<p class="img-caption"><strong>Figure 10.</strong> Supported Form Factors</p>
<p>During app creation, the Project Wizard also displays an API Level dialog to help you choose
the best <em>minSdkVersion</em> for your project.</p>
<h4> Google App Engine integration (Google Cloud Platform/Messaging)</h4>
<p>Quick cloud integration. Using Google App Engine to connect to the Google cloud
and create a cloud end-point is as easy as selecting <em>File > New Module > App Engine Java
Servlet Module</em> and specifying the module, package, and client names. </p>
<p><img src="{@docRoot}images/tools/studio-cloudmodule.png" /></p>
<p class="img-caption"><strong>Figure 11.</strong> Setup Wizard</p>
<h3>Update channels</h3>
<p>Android Studio provides four update channels to keep Android Studio up-to-date based on your
code-level preference:
<ul>
<li><strong>Canary channel</strong>: Canary builds provide bleeding edge releases, updated
about weekly. While these builds do get tested, they are still subject to bugs, as we want
people to see what's new as soon as possible. This is not recommended for production.</li>
<li><strong>Dev channel</strong>: Dev builds are hand-picked older canary builds that survived
the test of time. They are updated roughly bi-weekly or monthly.</li>
<li><strong>Beta channel</strong>: Beta builds are used for beta-quality releases before a
production release.</li>
<li><strong>Stable channel</strong>: Used for stable, production-ready versions.</li>
</ul>
</p>
<p>By default, Android Studio uses the <em>Stable</em> channel. Use
<strong>File > Settings > Updates</strong> to change your channel setting. </p>
<h2 id="proxy">Proxy Settings</h2>
<p>Proxies serve as intermediary connection points between HTTP clients and web servers that add
security and privacy to internet connections.</p>
<p>To support running Android Studio behind a firewall, set the proxy settings for the
Android Studio IDE and the SDK Manager. Use the Android Studio IDE HTTP Proxy settings page to set
the HTTP proxy settings for Android Studio. The SDK Manager has a separate HTTP Proxy settings
page.</p>
<p>When running the Android Plugin for Gradle from the command line or on machines where
Android Studio is not installed, such as continuous integration servers, set the proxy settings
in the Gradle build file.</p>
<p class="note"><strong>Note:</strong> After the initial installation of the Android Studio bundle,
Android Studio can run with internet access or off-line. However, Android Studio requires an
internet connection for Setup Wizard synchronization, 3rd-party library access, access to remote
repositories, Gradle initialization and synchronization, and Android Studio version updates.</p>
<h3>Setting up the Android Studio Proxy</h3>
<p>Android Studio supports HTTP proxy settings so you can run Android Studio behind a firewall or
secure network. To set the HTTP proxy settings in Android Studio:</p>
<ol>
<li>From the main menu choose <strong>File &gt; Settings &gt; IDE Setting -- HTTP Proxy</strong>.
<li>In Android Studio, open the IDE Settings dialog.
<ul>
<li>On Windows and Linux, choose
<strong>File &gt; Settings &gt; IDE Setting -- HTTP Proxy</strong>. </li>
<li>On Mac, choose
<strong>Android Studio &gt; Preferences &gt; IDE Setting -- HTTP Proxy</strong>. </li>
</ul>
The HTTP Proxy page appears.</li>
<li>Select <strong>auto-detection</strong> to use an auto-configuration URL to configure the
proxy settings or <strong>manual</strong> to enter each of the settings. For a detailed explanation
of these settings, see
<a href="https://www.jetbrains.com/idea/help/http-proxy.html">HTTP Proxy</a>. </li>
<li>Click <strong>Apply</strong> to enable the proxy settings. </li>
</ol>
<h3>Android Plugin for Gradle HTTP proxy settings</h3>
When running the Android Plugin from the command line or on machines where Android Studio is not
installed, set the Android Plugin for Gradle proxy settings in the Gradle build file.</p>
<p>For application-specific HTTP proxy settings, set the proxy settings in the
<strong>build.gradle</strong> file as required for each application module.</p>
<pre>
apply plugin: 'com.android.application'
android {
...
defaultConfig {
...
systemProp.http.proxyHost=proxy.company.com
systemProp.http.proxyPort=443
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
systemProp.http.auth.ntlm.domain=domain
}
...
}
</pre>
<p>For project-wide HTTP proxy settings, set the proxy settings in the
<code>gradle/gradle.properties</code> file. </p>
<pre>
# Project-wide Gradle settings.
...
systemProp.http.proxyHost=proxy.company.com
systemProp.http.proxyPort=443
systemProp.http.proxyUser=username
systemProp.http.proxyPassword=password
systemProp.http.auth.ntlm.domain=domain
systemProp.https.proxyHost=proxy.company.com
systemProp.https.proxyPort=443
systemProp.https.proxyUser=username
systemProp.https.proxyPassword=password
systemProp.https.auth.ntlm.domain=domain
...
</pre>
<p>For information about using Gradle properties for proxy settings, see the
<a href="http://www.gradle.org/docs/current/userguide/build_environment.html">Gradle User Guide</a>.</p>
<p class="note"><strong>Note:</strong> When using Android Studio, the settings in the Android
Studio IDE HTTP proxy settings page override the HTTP proxy settings in the
<strong>gradle.properties</strong> file.</p>
<h3>SDK Manager HTTP Proxy Settings </h3>
<p>SDK Manager proxy settings enable proxy internet access for Android package and library
updates from SDK Manager packages. </p>
<p>To set the SDK Manager settings for proxy internet access, start the SDK Manager and open the
SDK Manager page. </p>
<ul>
<li>On Windows, select <strong>Tools &gt; Options</strong> from the menu bar. </li>
<li>On Mac and Linux, choose <strong>Tools &gt; Options</strong> from the system menu bar. </li>
</ul>
<p>The Android SDK Manager page appears. Enter the settings and click <strong>Apply</strong>. </p>
<h2 id="other">Other Highlights</h2>
<h3> Translation Editor</h3>
<p>Multi-language support is enhanced with the Translation Editor plugin so you can easily add
locales to the app's translation file. Color codes indicate whether a locale is complete or
still missing string translations. Also, you can use the plugin to export your strings to the
Google Play Developer Console for translation, then download and import your translations back
into your project. </p>
<p>To access the Translation Editor, open a <code>strings.xml</code> file and click the
<strong>Open Editor</strong> link. </p>
<img src="{@docRoot}images/tools/studio-translationeditoropen.png" />
<p class="img-caption"><strong>Figure 12.</strong> Translation Editor</p>
<h3> Editor support for the latest Android APIs</h3>
<p>Android Studio supports the
<a href="{@docRoot}design/material/index.html">Material Design</a></li> themes, widgets, and
graphics, such as shadow layers and API version rendering (showing the layout across different
UI versions). Also, the drawable XML tags and attributes, such as &lt;ripple&gt;
and &lt;animated-selector&gt;, are supported.</p>
<h3 id="git-samples"> Easy access to Android code samples on GitHub</h3>
<p>Clicking <strong>Import Samples</strong> from the <strong>File</strong> menu or Welcome page
provides seamless access to Google code samples on GitHub.</p>
<p><img src="{@docRoot}images/tools/studio-samples-githubaccess.png" /></p>
<p class="img-caption"><strong>Figure 13.</strong> Code Sample Access</p>
<p><img src="{@docRoot}images/tools/studio-sample-in-editor.png" /></p>
<p class="img-caption"><strong>Figure 14.</strong> Imported Code Sample</p>