blob: 4c2155b3631438b91662c1fafb220b6450103dcd [file] [log] [blame]
Scott Main2d6faf92012-03-02 18:02:43 -08001page.title=Creating an Android Project
smain@google.com61139c82014-10-20 14:29:22 -07002
smain@google.com0da6b002014-10-31 10:45:23 -07003page.tags=project setup
smain@google.com61139c82014-10-20 14:29:22 -07004helpoutsWidget=true
Scott Main2d6faf92012-03-02 18:02:43 -08005
6trainingnavtop=true
7next.title=Running Your App
8next.link=running-app.html
9
10@jd:body
11
12
13<!-- This is the training bar -->
Ricardo Cervera8e5775d2014-04-01 10:46:16 -070014<div id="tb-wrapper">
15<div id="tb">
16
Scott Main2d6faf92012-03-02 18:02:43 -080017<h2>This lesson teaches you to</h2>
18
19<ol>
Scott Rowe8c068ae2014-05-19 16:50:47 -070020 <li><a href="#Studio">Create a Project with Android Studio</a></li>
Scott Main2d6faf92012-03-02 18:02:43 -080021</ol>
22
23<h2>You should also read</h2>
24
25<ul>
Scott Main50e990c2012-06-21 17:14:39 -070026 <li><a href="{@docRoot}tools/projects/index.html">Managing Projects</a></li>
Scott Main2d6faf92012-03-02 18:02:43 -080027</ul>
Ricardo Cervera8e5775d2014-04-01 10:46:16 -070028
29
30</div>
31</div>
Scott Main2d6faf92012-03-02 18:02:43 -080032
33<p>An Android project contains all the files that comprise the source code for your Android
David Friedmaneaabddf2015-08-17 18:15:50 -070034app.</p>
Scott Main2d6faf92012-03-02 18:02:43 -080035
36<p>This lesson
Scott Rowe8c068ae2014-05-19 16:50:47 -070037shows how to create a new project either using Android Studio or using the
Scott Main2d6faf92012-03-02 18:02:43 -080038SDK tools from a command line.</p>
39
smain@google.com89d11702016-05-14 19:20:00 -070040<p class="note"><strong>Note:</strong> You should already have Android Studio or the Android SDK
41command-line tools installed. If not, <a
42href="{@docRoot}studio/index.html">download them</a> before you start this
Scott Main0804b6d2012-07-24 15:51:27 -070043lesson.</p>
Scott Main2d6faf92012-03-02 18:02:43 -080044
45
Scott Rowe8c068ae2014-05-19 16:50:47 -070046<h2 id="Studio">Create a Project with Android Studio</h2>
Scott Main2d6faf92012-03-02 18:02:43 -080047
Scott Main39871b72012-07-19 21:11:49 -070048<ol>
Scott Rowe8c068ae2014-05-19 16:50:47 -070049 <li>In Android Studio, create a new project:
50 <ul>
51 <li>If you don't have a project opened, in the <strong>Welcome</strong> screen, click <strong>
52 New Project</strong>.</li>
53 <li>If you have a project opened, from the <strong>File</strong> menu, select <strong>New
David Friedman7c6b7f72015-12-08 15:13:30 -080054 Project</strong>. The <em>Create New Project</em> screen appears.</li>
Scott Rowe8c068ae2014-05-19 16:50:47 -070055 </ul>
56 </li>
David Friedman7c6b7f72015-12-08 15:13:30 -080057 <li>Fill out the fields on the screen, and click <strong>Next</strong>.
58 <p>It is easier to follow these lessons if you use the same values as shown.</p>
Scott Main2d6faf92012-03-02 18:02:43 -080059 <ul>
Scott Main82e1d972012-11-21 14:21:12 -080060 <li><strong>Application Name</strong> is the app name that appears to users.
Scott Rowe8c068ae2014-05-19 16:50:47 -070061 For this project, use "My First App."</li>
62 <li><strong>Company domain</strong> provides a qualifier that will be appended to the package
63 name; Android Studio will remember this qualifier for each new project you create.</li>
64 <li><strong>Package name</strong> is the fully qualified name for the project (following the
65 same rules as those for naming packages in the Java programming language). Your package name
66 must be unique across all packages installed on the Android system. You can <strong>
67 Edit</strong> this value independently from the application name or the company
68 domain.</li>
69 <li><strong>Project location</strong> is the directory on your system that holds the project
70 files.</li>
Scott Main2d6faf92012-03-02 18:02:43 -080071 </ul>
Scott Main2d6faf92012-03-02 18:02:43 -080072 </li>
Scott Rowe8c068ae2014-05-19 16:50:47 -070073 <li>Under <strong>Select the form factors your app will run on</strong>, check the box for <strong>
74 Phone and Tablet</strong>.</li>
75 <li>For <strong>Minimum SDK</strong>, select <strong>API 8: Android 2.2 (Froyo)</strong>.
76 <p>The Minimum Required SDK is the earliest version of Android that your app supports,
77 indicated using the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">
78 API level</a>. To support as many devices as possible, you should set this to the lowest
79 version available that allows your app to provide its core feature set. If any feature of your
80 app is possible only on newer versions of Android and it's not critical to the app's core
81 feature set, you can enable the feature only when running on the versions that support it (as
82 discussed in <a href="{@docRoot}training/basics/supporting-devices/platforms.html">
83 Supporting Different Platform Versions</a>).</p></li>
84 <li>Leave all of the other options (TV, Wear, and Glass) unchecked and click <strong>Next.</strong></li>
85 <div class="sidebox-wrapper">
86 <div class="sidebox">
87 <h3>Activities</h3>
88 <p>An activity is one of the distinguishing features of the Android framework. Activities
89 provide the user with access to your app, and there may be many activities. An application
90 will usually have a main activity for when the user launches the application, another
91 activity for when she selects some content to view, for example, and other activities for
92 when she performs other tasks within the app. See <a href="{@docRoot}guide/components/activities.html">
93 Activities</a> for more information.</p>
94 </div>
95 </div>
Hemal Patel8d25ddd2016-07-01 13:33:14 -070096 <li>Under <strong>Add an activity to &lt;<em>template</em>&gt;</strong>,
97 select <strong>Basic Activity</strong> and click <strong>Next</strong>.
98 </li>
99
David Friedman7c6b7f72015-12-08 15:13:30 -0800100 <li>Under <strong>Customize the Activity</strong>, change the
Hemal Patel8d25ddd2016-07-01 13:33:14 -0700101 <strong>Activity Name</strong> to <em>MyActivity</em>. The <strong>Layout
102 Name</strong> changes to <em>activity_my</em>, and the <strong>Title</strong>
103 to <em>MyActivity</em>. The <strong>Menu Resource Name</strong> is
104 <em>menu_my</em>.
105 </li>
106
107 <li>Click the <strong>Finish</strong> button to create the project.
108 </li>
Scott Main2d6faf92012-03-02 18:02:43 -0800109</ol>
110
Scott Rowe8c068ae2014-05-19 16:50:47 -0700111<p>Your Android project is now a basic "Hello World" app that contains some default files. Take a
112moment to review the most important of these:</p>
Scott Main2d6faf92012-03-02 18:02:43 -0800113
Scott Rowe8c068ae2014-05-19 16:50:47 -0700114<dl>
115 <dt><code>app/src/main/res/layout/activity_my.xml</code></dt>
David Friedman7c6b7f72015-12-08 15:13:30 -0800116 <dd>This XML layout file is for the activity you added when you created the project
117 with Android Studio. Following the New Project workflow, Android Studio presents this file
118 with both a text
119 view and a preview of the screen UI. The file contains some default interface elements
120 from the material design library, including the
121 <a href="{@docRoot}training/appbar/index.html">app bar</a> and a floating action button.
122 It also includes a separate layout file with the main content.</dd>
123
124 <dt><code>app/src/main/res/layout/content_my.xml</code></dt>
125 <dd>This XML layout file resides in {@code activity_my.xml}, and contains some settings and
126 a {@code TextView} element that displays the message, "Hello world!".</dd>
127
Scott Rowe8c068ae2014-05-19 16:50:47 -0700128 <dt><code>app/src/main/java/com.mycompany.myfirstapp/MyActivity.java</code></dt>
129 <dd>A tab for this file appears in Android Studio when the New Project workflow finishes. When you
130 select the file you see the class definition for the activity you created. When you build and
131 run the app, the {@link android.app.Activity} class starts the activity and loads the layout file
132 that says "Hello World!"</dd>
Rich Slogar453467a2014-12-15 12:33:03 -0800133 <dt><code>app/src/main/AndroidManifest.xml</code></dt>
Scott Rowe8c068ae2014-05-19 16:50:47 -0700134 <dd>The <a href="{@docRoot}guide/topics/manifest/manifest-intro.html">manifest file</a> describes
135 the fundamental characteristics of the app and defines each of its components. You'll revisit
136 this file as you follow these lessons and add more components to your app.</dd>
137 <dt><code>app/build.gradle</code></dt>
138 <dd>Android Studio uses Gradle to compile and build your app. There is a <code>build.gradle</code>
139 file for each module of your project, as well as a <code>build.gradle</code> file for the entire
140 project. Usually, you're only interested in the <code>build.gradle</code> file for the module,
141 in this case the <code>app</code> or application module. This is where your app's build dependencies
142 are set, including the <code>defaultConfig</code> settings:
143 <ul>
144 <li><code>compiledSdkVersion</code> is the platform version against which you will compile
145 your app. By default, this is set to the latest version of Android available in your SDK.
146 (It should be Android 4.1 or greater; if you don't have such a version available, you must
smain@google.com89d11702016-05-14 19:20:00 -0700147 install one using the <a href="{@docRoot}studio/intro/update.html">SDK Manager</a>.)
Scott Rowe8c068ae2014-05-19 16:50:47 -0700148 You can still build your app to support older versions, but setting this to the latest
149 version allows you to enable new features and optimize your app for a great user experience
150 on the latest devices.</li>
151 <li><code>applicationId</code> is the fully qualified package name for your application that
152 you specified during the New Project workflow.</li>
153 <li><code>minSdkVersion</code> is the Minimum SDK version you specified during the New Project
154 workflow. This is the earliest version of the Android SDK that your app supports.</li>
155 <li><code>targetSdkVersion</code> indicates the highest version of Android with which you have
156 tested your application. As new versions of Android become available, you should
157 test your app on the new version and update this value to match the latest API level and
158 thereby take advantage of new platform features. For more information, read
159 <a href="{@docRoot}training/basics/supporting-devices/platforms.html">Supporting Different
160 Platform Versions</a>.</li>
161 </ul>
smain@google.com89d11702016-05-14 19:20:00 -0700162 <p>See <a href="{@docRoot}studio/build/index.html">Building Your Project with Gradle</a>
Scott Rowe8c068ae2014-05-19 16:50:47 -0700163 for more information about Gradle.</p></dd>
164</dl>
Scott Main2d6faf92012-03-02 18:02:43 -0800165
Scott Rowe8c068ae2014-05-19 16:50:47 -0700166<p>Note also the <code>/res</code> subdirectories that contain the
167<a href="{@docRoot}guide/topics/resources/overview.html">resources</a> for your application:</p>
168<dl>
David Friedman7c6b7f72015-12-08 15:13:30 -0800169 <dt><code>drawable<em>-&lt;density&gt;</em>/</code></dt>
170 <dd>Directories for <a href="{@docRoot}guide/topics/resources/drawable-resource.html">
171 drawable resources</a>, other than launcher icons, designed
172 for various <a href="{@docRoot}training/multiscreen/screendensities.html">densities</a>.
173</dd>
Scott Rowe8c068ae2014-05-19 16:50:47 -0700174 <dt><code>layout/</code></dt>
David Friedman7c6b7f72015-12-08 15:13:30 -0800175 <dd>Directory for files that define your app's user interface like {@code activity_my.xml},
176 discussed above, which describes a basic layout for the {@code MyActivity}
177 class.</dd>
Rich Slogar453467a2014-12-15 12:33:03 -0800178 <dt><code>menu/</code></dt>
179 <dd>Directory for files that define your app's menu items.</dd>
David Friedman7c6b7f72015-12-08 15:13:30 -0800180 <dt><code>mipmap/</code></dt>
181 <dd>Launcher icons reside in the {@code mipmap/} folder rather than the
182 {@code drawable/} folders. This folder contains the {@code ic_launcher.png} image
183 that appears when you run the default app.</dd>
Scott Rowe8c068ae2014-05-19 16:50:47 -0700184 <dt><code>values/</code></dt>
185 <dd>Directory for other XML files that contain a collection of resources, such as
David Friedman7c6b7f72015-12-08 15:13:30 -0800186 string and color definitions.</dd>
Scott Rowe8c068ae2014-05-19 16:50:47 -0700187</dl>
188
Hemal Patel8d25ddd2016-07-01 13:33:14 -0700189<p>
190 To run the app, continue to the <a href="running-app.html">next lesson</a>.
191</p>