| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 1 | page.title=Creating an Android Project |
| smain@google.com | 61139c8 | 2014-10-20 14:29:22 -0700 | [diff] [blame] | 2 | |
| smain@google.com | 0da6b00 | 2014-10-31 10:45:23 -0700 | [diff] [blame] | 3 | page.tags=project setup |
| smain@google.com | 61139c8 | 2014-10-20 14:29:22 -0700 | [diff] [blame] | 4 | helpoutsWidget=true |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 5 | |
| 6 | trainingnavtop=true |
| 7 | next.title=Running Your App |
| 8 | next.link=running-app.html |
| 9 | |
| 10 | @jd:body |
| 11 | |
| 12 | |
| 13 | <!-- This is the training bar --> |
| Ricardo Cervera | 8e5775d | 2014-04-01 10:46:16 -0700 | [diff] [blame] | 14 | <div id="tb-wrapper"> |
| 15 | <div id="tb"> |
| 16 | |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 17 | <h2>This lesson teaches you to</h2> |
| 18 | |
| 19 | <ol> |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 20 | <li><a href="#Studio">Create a Project with Android Studio</a></li> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 21 | </ol> |
| 22 | |
| 23 | <h2>You should also read</h2> |
| 24 | |
| 25 | <ul> |
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 26 | <li><a href="{@docRoot}tools/projects/index.html">Managing Projects</a></li> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 27 | </ul> |
| Ricardo Cervera | 8e5775d | 2014-04-01 10:46:16 -0700 | [diff] [blame] | 28 | |
| 29 | |
| 30 | </div> |
| 31 | </div> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 32 | |
| 33 | <p>An Android project contains all the files that comprise the source code for your Android |
| David Friedman | eaabddf | 2015-08-17 18:15:50 -0700 | [diff] [blame] | 34 | app.</p> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 35 | |
| 36 | <p>This lesson |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 37 | shows how to create a new project either using Android Studio or using the |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 38 | SDK tools from a command line.</p> |
| 39 | |
| smain@google.com | 89d1170 | 2016-05-14 19:20:00 -0700 | [diff] [blame] | 40 | <p class="note"><strong>Note:</strong> You should already have Android Studio or the Android SDK |
| 41 | command-line tools installed. If not, <a |
| 42 | href="{@docRoot}studio/index.html">download them</a> before you start this |
| Scott Main | 0804b6d | 2012-07-24 15:51:27 -0700 | [diff] [blame] | 43 | lesson.</p> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 44 | |
| 45 | |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 46 | <h2 id="Studio">Create a Project with Android Studio</h2> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 47 | |
| Scott Main | 39871b7 | 2012-07-19 21:11:49 -0700 | [diff] [blame] | 48 | <ol> |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 49 | <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 Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 54 | Project</strong>. The <em>Create New Project</em> screen appears.</li> |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 55 | </ul> |
| 56 | </li> |
| David Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 57 | <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 Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 59 | <ul> |
| Scott Main | 82e1d97 | 2012-11-21 14:21:12 -0800 | [diff] [blame] | 60 | <li><strong>Application Name</strong> is the app name that appears to users. |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 61 | 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 Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 71 | </ul> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 72 | </li> |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 73 | <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 Patel | 8d25ddd | 2016-07-01 13:33:14 -0700 | [diff] [blame] | 96 | <li>Under <strong>Add an activity to <<em>template</em>></strong>, |
| 97 | select <strong>Basic Activity</strong> and click <strong>Next</strong>. |
| 98 | </li> |
| 99 | |
| David Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 100 | <li>Under <strong>Customize the Activity</strong>, change the |
| Hemal Patel | 8d25ddd | 2016-07-01 13:33:14 -0700 | [diff] [blame] | 101 | <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 Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 109 | </ol> |
| 110 | |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 111 | <p>Your Android project is now a basic "Hello World" app that contains some default files. Take a |
| 112 | moment to review the most important of these:</p> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 113 | |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 114 | <dl> |
| 115 | <dt><code>app/src/main/res/layout/activity_my.xml</code></dt> |
| David Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 116 | <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 Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 128 | <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 Slogar | 453467a | 2014-12-15 12:33:03 -0800 | [diff] [blame] | 133 | <dt><code>app/src/main/AndroidManifest.xml</code></dt> |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 134 | <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.com | 89d1170 | 2016-05-14 19:20:00 -0700 | [diff] [blame] | 147 | install one using the <a href="{@docRoot}studio/intro/update.html">SDK Manager</a>.) |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 148 | 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.com | 89d1170 | 2016-05-14 19:20:00 -0700 | [diff] [blame] | 162 | <p>See <a href="{@docRoot}studio/build/index.html">Building Your Project with Gradle</a> |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 163 | for more information about Gradle.</p></dd> |
| 164 | </dl> |
| Scott Main | 2d6faf9 | 2012-03-02 18:02:43 -0800 | [diff] [blame] | 165 | |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 166 | <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 Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 169 | <dt><code>drawable<em>-<density></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 Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 174 | <dt><code>layout/</code></dt> |
| David Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 175 | <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 Slogar | 453467a | 2014-12-15 12:33:03 -0800 | [diff] [blame] | 178 | <dt><code>menu/</code></dt> |
| 179 | <dd>Directory for files that define your app's menu items.</dd> |
| David Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 180 | <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 Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 184 | <dt><code>values/</code></dt> |
| 185 | <dd>Directory for other XML files that contain a collection of resources, such as |
| David Friedman | 7c6b7f7 | 2015-12-08 15:13:30 -0800 | [diff] [blame] | 186 | string and color definitions.</dd> |
| Scott Rowe | 8c068ae | 2014-05-19 16:50:47 -0700 | [diff] [blame] | 187 | </dl> |
| 188 | |
| Hemal Patel | 8d25ddd | 2016-07-01 13:33:14 -0700 | [diff] [blame] | 189 | <p> |
| 190 | To run the app, continue to the <a href="running-app.html">next lesson</a>. |
| 191 | </p> |