| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 1 | page.title=Using Hardware Devices | 
 | 2 | @jd:body | 
 | 3 |  | 
 | 4 | <div id="qv-wrapper"> | 
 | 5 | <div id="qv"> | 
 | 6 |   <h2>In this document</h2> | 
 | 7 |   <ol> | 
| smain@google.com | 78219f0 | 2014-06-13 11:39:35 -0700 | [diff] [blame] | 8 |     <li><a href="#device-developer-options">Enabling On-device Developer Options</a></li> | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 9 |     <li><a href="#setting-up">Setting up a Device for Development</a> | 
 | 10 |       <ol> | 
 | 11 |         <li><a href="#VendorIds">USB Vendor IDs</a></li> | 
 | 12 |       </ol> | 
 | 13 |     </li> | 
 | 14 |   </ol> | 
 | 15 |   <h2>See also</h2> | 
 | 16 |   <ol> | 
 | 17 |     <li><a href="{@docRoot}sdk/win-usb.html">Google USB Driver</a></li> | 
 | 18 |     <li><a href="{@docRoot}tools/extras/oem-usb.html">OEM USB Drivers</a></li> | 
 | 19 |   </ol> | 
 | 20 | </div> | 
 | 21 | </div> | 
 | 22 |  | 
 | 23 | <p>When building a mobile application, it's important that you always test your application on a | 
 | 24 | real device before releasing it to users. This page describes how to set up your development | 
 | 25 | environment and Android-powered device for testing and debugging on the device.</p> | 
 | 26 |  | 
 | 27 | <p>You can use any Android-powered device as an environment for running, | 
 | 28 | debugging, and testing your applications. The tools included in the SDK make it easy to install and | 
 | 29 | run your application on the device each time you compile. You can install your application on the | 
| Rich Slogar | daaa164 | 2014-11-07 13:26:17 -0800 | [diff] [blame] | 30 | device directly from Android Studio or from the command line with ADB. If | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 31 | you don't yet have a device, check with the service providers in your area to determine which | 
 | 32 | Android-powered devices are available.</p> | 
 | 33 |  | 
| Ricardo Cervera | 7abf5cd | 2014-03-28 10:15:24 -0700 | [diff] [blame] | 34 | <p>If you want a SIM-unlocked phone, then you might consider a Nexus phone. To purchase a | 
 | 35 | Nexus phone, visit the <a href="https://play.google.com/store/devices">Google Play</a> store.</p> | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 36 |  | 
 | 37 | <p class="note"><strong>Note:</strong> When developing on a device, keep in mind that you should | 
 | 38 | still use the <a | 
 | 39 | href="{@docRoot}tools/devices/emulator.html">Android emulator</a> to test your | 
 | 40 | application | 
 | 41 | on configurations that are not equivalent to those of your real device. Although the emulator | 
 | 42 | does not allow you to test every device feature (such as the accelerometer), it does | 
 | 43 | allow you to verify that your application functions properly on different versions of the Android | 
 | 44 | platform, in different screen sizes and orientations, and more.</p> | 
 | 45 |  | 
 | 46 |  | 
| smain@google.com | 78219f0 | 2014-06-13 11:39:35 -0700 | [diff] [blame] | 47 | <h2 id="developer-device-options" style="margin-bottom: 0px;">Enabling On-device Developer Options</h2> | 
 | 48 |  | 
 | 49 | <img src="/images/tools/dev-options-inmilk.png" alt="" style="float:right;margin-left:30px"> | 
 | 50 |  | 
 | 51 | <p>Android-powered devices have a host of developer options that you can | 
 | 52 | access on the phone, which let you:</p> | 
 | 53 | <ul> | 
 | 54 |   <li>Enable debugging over USB.</li> | 
 | 55 |   <li>Quickly capture bug reports onto the device.</li> | 
 | 56 |   <li>Show CPU usage on screen.</li> | 
 | 57 |   <li>Draw debugging information on screen such as layout bounds, | 
 | 58 |     updates on GPU views and hardware layers, and other information.</li> | 
 | 59 |   <li>Plus many more options to simulate app stresses or enable debugging options.</li> | 
 | 60 | </ul> | 
 | 61 | <p>To access these settings, open the <em>Developer options</em> in the | 
 | 62 | system Settings. On Android 4.2 and higher, the Developer options screen is | 
 | 63 | hidden by default. To make it visible, go to | 
 | 64 | <b>Settings > About phone</b> and tap <b>Build number</b> seven times. Return to the previous | 
 | 65 | screen to find Developer options at the bottom.</p> | 
 | 66 |  | 
 | 67 |  | 
 | 68 |  | 
 | 69 |  | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 70 | <h2 id="setting-up">Setting up a Device for Development</h2> | 
 | 71 |  | 
 | 72 | <p>With an Android-powered device, you can develop and debug your Android applications just as you | 
 | 73 | would on the emulator. Before you can start, there are just a few things to do:</p> | 
 | 74 |  | 
 | 75 | <ol> | 
| Rich Slogar | daaa164 | 2014-11-07 13:26:17 -0800 | [diff] [blame] | 76 |   <li>Verify that your application is "debuggable" in your manifest or <em>build.gradle</em> file. | 
 | 77 |     <p>In the build file, make sure the <em>debuggable</em> property in the <em>debug</em> build | 
 | 78 |     type is set to true. The build type property overrides the manifest setting. </p> | 
 | 79 | <pre> | 
 | 80 | android { | 
 | 81 |     buildTypes { | 
 | 82 |         debug { | 
 | 83 |             debuggable true | 
 | 84 |         } | 
 | 85 | </pre> | 
 | 86 |  | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 87 |     <p>In the <code>AndroidManifest.xml</code> file, add <code>android:debuggable="true"</code> to | 
 | 88 | the <code><application></code> element.</p> | 
 | 89 |     <p class="note"><strong>Note:</strong> If you manually enable debugging in the manifest | 
| Rich Slogar | daaa164 | 2014-11-07 13:26:17 -0800 | [diff] [blame] | 90 |  file, be sure to disable it in your release build (your published application | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 91 | should usually <em>not</em> be debuggable).</p></li> | 
| Scott Main | da02c64 | 2012-10-11 14:37:59 -0700 | [diff] [blame] | 92 |   <li>Enable <strong>USB debugging</strong> on your device. | 
 | 93 |     <ul> | 
 | 94 |       <li>On most devices running Android 3.2 or older, you can find the option under | 
 | 95 |         <strong>Settings > Applications > Development</strong>.</li> | 
 | 96 |       <li>On Android 4.0 and newer, it's in <strong>Settings > Developer options</strong>. | 
 | 97 |         <p class="note"><strong>Note:</strong> On Android 4.2 and newer, <strong>Developer | 
 | 98 |         options</strong> is hidden by default. To make it available, go | 
 | 99 |         to <strong>Settings > About phone</strong> and tap <strong>Build number</strong> | 
 | 100 |         seven times. Return to the previous screen to find <strong>Developer options</strong>.</p> | 
 | 101 |       </li> | 
 | 102 |     </ul> | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 103 |   </li> | 
 | 104 |   <li>Set up your system to detect your device. | 
 | 105 |     <ul> | 
 | 106 |       <li>If you're developing on Windows, you need to install a USB driver for adb. For an | 
 | 107 | installation guide and links to OEM drivers, see the <a href="{@docRoot}tools/extras/oem-usb.html">OEM USB | 
 | 108 | Drivers</a> document.</li> | 
 | 109 |       <li>If you're developing on Mac OS X, it just works. Skip this step.</li> | 
 | 110 |       <li>If you're developing on Ubuntu Linux, you need to add a | 
 | 111 | <code>udev</code> rules file that contains a USB configuration for each type of device | 
 | 112 | you want to use for development. In the rules file, each device manufacturer | 
 | 113 | is identified by a unique vendor ID, as specified by the | 
 | 114 | <code>ATTR{idVendor}</code> property. For a list of vendor IDs, see  <a | 
 | 115 | href="#VendorIds">USB Vendor IDs</a>, below. To set up device detection on | 
 | 116 | Ubuntu Linux: | 
 | 117 |  | 
 | 118 |         <ol type="a"> | 
 | 119 |           <li>Log in as root and create this file: | 
 | 120 |             <code>/etc/udev/rules.d/51-android.rules</code></span>. | 
 | 121 |             <p>Use this format to add each vendor to the file:<br/> | 
 | 122 |               <code>SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"</code> | 
 | 123 |               <br /><br /> | 
| Ricardo Cervera | 7abf5cd | 2014-03-28 10:15:24 -0700 | [diff] [blame] | 124 |  | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 125 |               In this example, the vendor ID is for HTC. The <code>MODE</code> | 
 | 126 | assignment specifies read/write permissions, and <code>GROUP</code> defines | 
 | 127 | which Unix group  owns the device node. </p> | 
| Ricardo Cervera | 7abf5cd | 2014-03-28 10:15:24 -0700 | [diff] [blame] | 128 |  | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 129 |             <p class="note"><strong>Note:</strong> The rule syntax | 
 | 130 | may vary slightly depending on your  environment. Consult the <code>udev</code> | 
 | 131 | documentation for your system as needed. For an overview of rule syntax, see | 
 | 132 | this guide to <a | 
 | 133 | href="http://www.reactivated.net/writing_udev_rules.html">writing udev | 
 | 134 | rules</a>.</p> | 
 | 135 |           </li> | 
 | 136 |           <li>Now execute:<br/> | 
 | 137 |             <code>chmod a+r /etc/udev/rules.d/51-android.rules</code> | 
 | 138 |           </li> | 
 | 139 |         </ol> | 
 | 140 |       </li> | 
 | 141 |     </ul> | 
 | 142 |   </li> | 
 | 143 | </ol> | 
 | 144 |  | 
| Scott Main | 03c54e7 | 2013-02-05 14:05:36 -0800 | [diff] [blame] | 145 |  | 
 | 146 | <p class="note"><strong>Note:</strong> When you connect a device running Android 4.2.2 or higher | 
 | 147 | to your computer, the system shows a dialog asking whether to accept an RSA key that allows | 
 | 148 | debugging through this computer. This security mechanism protects user devices because it ensures | 
 | 149 | that USB debugging and other adb commands cannot be executed unless you're able to unlock the | 
 | 150 | device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with | 
 | 151 | SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or | 
 | 152 | higher.</p> | 
 | 153 |  | 
 | 154 |  | 
 | 155 | <p>When plugged in over USB, you can verify that your device is connected by executing <code>adb | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 156 | devices</code> from your SDK {@code platform-tools/} directory. If connected, | 
 | 157 | you'll see the device name listed as a "device."</p> | 
 | 158 |  | 
| Rich Slogar | daaa164 | 2014-11-07 13:26:17 -0800 | [diff] [blame] | 159 | <p>If using Android Studio, run or debug your application as usual. You will be | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 160 | presented with a <b>Device Chooser</b> dialog that lists the available | 
 | 161 | emulator(s) and connected device(s). Select the device upon which you want to | 
 | 162 | install and run the application.</p> | 
 | 163 |  | 
 | 164 | <p>If using the <a href="{@docRoot}tools/help/adb.html">Android | 
 | 165 | Debug Bridge</a> (adb), you can issue commands with the <code>-d</code> flag to | 
 | 166 | target your connected device.</p> | 
 | 167 |  | 
 | 168 | <h3 id="VendorIds">USB Vendor IDs</h3> | 
 | 169 |  | 
 | 170 | <p>This table provides a reference to the vendor IDs needed in order to add USB | 
 | 171 | device support on Linux. The USB Vendor ID is the value given to the | 
| Ricardo Cervera | 7abf5cd | 2014-03-28 10:15:24 -0700 | [diff] [blame] | 172 | <code>ATTR{idVendor}</code> property in the rules file, as described | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 173 | above.</p> | 
 | 174 |  | 
 | 175 | <table> | 
 | 176 |   <tr> | 
 | 177 |     <th>Company</th><th>USB Vendor ID</th></tr> | 
 | 178 |   <tr> | 
 | 179 |     <td>Acer</td> | 
 | 180 |     <td><code>0502</code></td> | 
 | 181 |   </tr> | 
 | 182 |   <tr> | 
 | 183 |     <td>ASUS</td> | 
 | 184 |     <td><code>0b05</code></td> | 
 | 185 |   </tr> | 
 | 186 |   <tr> | 
 | 187 |     <td>Dell</td> | 
 | 188 |     <td><code>413c</code></td> | 
 | 189 |   </tr> | 
 | 190 |   <tr> | 
 | 191 |     <td>Foxconn</td> | 
 | 192 |     <td><code>0489</code></td> | 
 | 193 |   </tr> | 
 | 194 |   <tr> | 
 | 195 |     <td>Fujitsu</td> | 
 | 196 |     <td><code>04c5</code></td> | 
 | 197 |   </tr> | 
 | 198 |   <tr> | 
 | 199 |     <td>Fujitsu Toshiba</td> | 
 | 200 |     <td><code>04c5</code></td> | 
 | 201 |   </tr> | 
 | 202 |   <tr> | 
 | 203 |     <td>Garmin-Asus</td> | 
 | 204 |     <td><code>091e</code></td> | 
 | 205 |   </tr> | 
 | 206 |   <tr> | 
 | 207 |     <td>Google</td> | 
 | 208 |     <td><code>18d1</code></td> | 
 | 209 |   </tr> | 
 | 210 |   <tr> | 
| Scott Main | 2cc84c6 | 2013-05-22 08:34:49 -0700 | [diff] [blame] | 211 |     <td>Haier</td> | 
 | 212 |     <td><code>201E</code></td> | 
 | 213 |   </tr> | 
 | 214 |   <tr> | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 215 |     <td>Hisense</td> | 
 | 216 |     <td><code>109b</code></td> | 
 | 217 |   </tr> | 
 | 218 |   <tr> | 
 | 219 |     <td>HTC</td> | 
 | 220 |     <td><code>0bb4</code></td> | 
 | 221 |   </tr> | 
 | 222 |   <tr> | 
 | 223 |     <td>Huawei</td> | 
 | 224 |     <td><code>12d1</code></td> | 
 | 225 |   </tr> | 
 | 226 |   <tr> | 
| Scott Main | 5584601 | 2014-05-02 10:50:50 -0700 | [diff] [blame] | 227 |     <td>Intel</td> | 
 | 228 |     <td><code>8087</code></td> | 
 | 229 |   </tr> | 
 | 230 |   <tr> | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 231 |     <td>K-Touch</td> | 
 | 232 |     <td><code>24e3</code></td> | 
 | 233 |   </tr> | 
 | 234 |   <tr> | 
 | 235 |     <td>KT Tech</td> | 
 | 236 |     <td><code>2116</code></td> | 
 | 237 |   </tr> | 
 | 238 |   <tr> | 
 | 239 |     <td>Kyocera</td> | 
 | 240 |     <td><code>0482</code></td> | 
 | 241 |   </tr> | 
 | 242 |   <tr> | 
 | 243 |     <td>Lenovo</td> | 
 | 244 |     <td><code>17ef</code></td> | 
 | 245 |   </tr> | 
 | 246 |   <tr> | 
 | 247 |     <td>LG</td> | 
 | 248 |     <td><code>1004</code></td> | 
 | 249 |   </tr> | 
 | 250 |   <tr> | 
 | 251 |     <td>Motorola</td> | 
 | 252 |     <td><code>22b8</code></td> | 
 | 253 |   </tr> | 
 | 254 |   <tr> | 
| Scott Main | 1649f81 | 2013-02-26 09:45:13 -0800 | [diff] [blame] | 255 |     <td>MTK</td> | 
 | 256 |     <td><code>0e8d</code></td> | 
 | 257 |   </tr> | 
 | 258 |   <tr> | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 259 |     <td>NEC</td> | 
 | 260 |     <td><code>0409</code></td> | 
 | 261 |   </tr> | 
 | 262 |   <tr> | 
 | 263 |     <td>Nook</td> | 
 | 264 |     <td><code>2080</code></td> | 
 | 265 |   </tr> | 
 | 266 |   <tr> | 
 | 267 |     <td>Nvidia</td> | 
 | 268 |     <td><code>0955</code></td> | 
 | 269 |   </tr> | 
 | 270 |   <tr> | 
 | 271 |     <td>OTGV</td> | 
 | 272 |     <td><code>2257</code></td> | 
 | 273 |   </tr> | 
 | 274 |   <tr> | 
 | 275 |     <td>Pantech</td> | 
 | 276 |     <td><code>10a9</code></td> | 
 | 277 |   </tr> | 
 | 278 |   <tr> | 
 | 279 |     <td>Pegatron</td> | 
 | 280 |     <td><code>1d4d</code></td> | 
 | 281 |   </tr> | 
 | 282 |   <tr> | 
 | 283 |     <td>Philips</td> | 
 | 284 |     <td><code>0471</code></td> | 
 | 285 |   </tr> | 
 | 286 |   <tr> | 
 | 287 |     <td>PMC-Sierra</td> | 
 | 288 |     <td><code>04da</code></td> | 
 | 289 |   </tr> | 
 | 290 |   <tr> | 
 | 291 |     <td>Qualcomm</td> | 
 | 292 |     <td><code>05c6</code></td> | 
 | 293 |   </tr> | 
 | 294 |   <tr> | 
 | 295 |     <td>SK Telesys</td> | 
 | 296 |     <td><code>1f53</code></td> | 
 | 297 |   </tr> | 
 | 298 |   <tr> | 
 | 299 |     <td>Samsung</td> | 
 | 300 |     <td><code>04e8</code></td> | 
 | 301 |   </tr> | 
 | 302 |   <tr> | 
 | 303 |     <td>Sharp</td> | 
 | 304 |     <td><code>04dd</code></td> | 
 | 305 |   </tr> | 
 | 306 |   <tr> | 
 | 307 |     <td>Sony</td> | 
 | 308 |     <td><code>054c</code></td> | 
 | 309 |   </tr> | 
 | 310 |   <tr> | 
 | 311 |     <td>Sony Ericsson</td> | 
 | 312 |     <td><code>0fce</code></td> | 
 | 313 |   </tr> | 
 | 314 |   <tr> | 
| Andrew Solovay | be39d67 | 2014-05-30 15:15:49 -0700 | [diff] [blame] | 315 |     <td>Sony Mobile Communications</td> | 
 | 316 |     <td><code>0fce</code></td> | 
 | 317 |   </tr> | 
 | 318 |   <tr> | 
| Scott Main | 50e990c | 2012-06-21 17:14:39 -0700 | [diff] [blame] | 319 |     <td>Teleepoch</td> | 
 | 320 |     <td><code>2340</code></td> | 
 | 321 |   </tr> | 
 | 322 |   <tr> | 
 | 323 |     <td>Toshiba</td> | 
 | 324 |     <td><code>0930</code></td> | 
 | 325 |   </tr> | 
 | 326 |   <tr> | 
 | 327 |     <td>ZTE</td> | 
 | 328 |     <td><code>19d2</code></td> | 
 | 329 |   </tr> | 
 | 330 | </table> |