{"id":185501,"date":"2014-05-20T23:26:52","date_gmt":"2014-05-21T06:26:52","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=185501"},"modified":"2018-12-18T10:47:01","modified_gmt":"2018-12-18T18:47:01","slug":"using-the-arcgis-android-sdk-with-android-studio-part-1","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1","title":{"rendered":"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1"},"author":3721,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23261],"tags":[23441,23451,23471,24551],"industry":[],"product":[36881,36601],"class_list":["post-185501","blog","type-blog","status-publish","format-standard","hentry","category-field-mobility","tag-android","tag-arcgis-runtime","tag-java","tag-mobile-gis","product-api-for-android","product-developers"],"acf":{"short_description":"Google\u2019s Android Studio is a developer IDE based on IntelliJ IDEA platform.  The platform is still in early access preview.","flexible_content":[{"acf_fc_layout":"content","content":"<p>Google\u2019s Android Studio is a developer IDE based on IntelliJ IDEA platform.\u00a0 The platform is still in\u00a0<strong>early access preview<\/strong>. If you are not comfortable using an unfinished product, you may want to continue to use the Eclipse Plugin bundled with the ArcGIS Android SDK.<\/p>\n<h1>Android Studio Basics<\/h1>\n<p>In Eclipse you have the concept of a workspace which can consist of multiple projects linked or unlinked.\u00a0 In Android Studio, projects are replaced by App Modules and Libary Modules.\u00a0 Modules are a discrete unit of functionality that can be run, tested, and debugged independently.\u00a0 Modules are somewhat similar to an Eclipse project with a few key differences:<span id=\"more-38083\"><\/span><\/p>\n<ul>\n<li>Each module has it\u2019s own Gradle build file<\/li>\n<li>Some modules can be Library Modules which are conceptually the same as Libary Projects in Eclipse.<\/li>\n<\/ul>\n<p><strong>Including Jar lib dependencies<\/strong><br \/>\nLocal jar files go in the\u00a0<strong>libs<\/strong>\u00a0folder at the root of your module directory.\u00a0 In Android Studio you need to add the jars as a gradle dependency.\u00a0 This should be added to your gradle build file as follows:<\/p>\n<div>\n<div id=\"highlighter_772144\" class=\"syntaxhighlighter python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"python plain\">dependencies {<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"python functions\">compile<\/code> <code class=\"python plain\">fileTree(<\/code><code class=\"python functions\">dir<\/code><code class=\"python plain\">: <\/code><code class=\"python string\">'libs'<\/code><code class=\"python plain\">, include: [<\/code><code class=\"python string\">'*.jar'<\/code><code class=\"python plain\">])<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"python plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The code above adds all the\u00a0<strong>*.jar<\/strong>\u00a0files from the modules\u00a0<strong>libs<\/strong>\u00a0directory as dependencies.<\/p>\n<p><strong>Including pre-built Native .so libs<\/strong><br \/>\nLocal pre-built native libs go in the\u00a0<strong>jniLibs<\/strong>\u00a0folder in your modules\u00a0<em>\/src\/main\/<\/em>\u00a0folder.\u00a0 There is no need to add a gradle dependency when using this folder.\u00a0 Native libs outside this folder would require a gradle dependency.<\/p>\n<p><strong>Manifest changes<\/strong><br \/>\nSeveral common items and settings which in Eclipse are in the Android Manifest have either automatically added, e.g:\u00a0<em>allowBackup=true<\/em>\u00a0or have been moved to build.gradle such as version codes and\u00a0<em>minSdkVersion<\/em>,\u00a0<em>targetSdkVersion<\/em>, etc.\u00a0 Feature and permission requirements are still declared in the manifest.<\/p>\n<h1>Integrate ArcGIS Android SDK<\/h1>\n<p>In this section we will step through the process of creating a new Android Studio project and integrate the ArcGIS Android SDK in the app module.<\/p>\n<p><strong>Create a new Android Studio Project<\/strong><\/p>\n<ul>\n<li>Open up Android Studio and choose\u00a0<strong>New Project<\/strong>\u00a0under Quick Start<\/li>\n<li>Choose and\u00a0<strong>Application name<\/strong>\u00a0and\u00a0<strong>Module name<\/strong>.\u00a0 These can be the same in this example.\u00a0 We will use\u00a0<strong>Hello World<\/strong>\u00a0for both.<\/li>\n<li>Choose a Package name, e.g.\u00a0<em>com.arcgis.android.sample.maps.helloworld<\/em>.<\/li>\n<li>Set the\u00a0<strong>Minimum required SDK<\/strong>\u00a0to\u00a0<em>API 15: Android 4.0.3 (IceCreamSandwich)<\/em><\/li>\n<li>Keep the defaults for the rest and click\u00a0<strong>Next<\/strong>.<\/li>\n<li>Continue to accept the defaults in the remaining windows by clicking\u00a0<strong>Next<\/strong>\u00a0and complete the wizard.<\/li>\n<li>Your project should open up.<\/li>\n<\/ul>\n<p><strong>Update the Projects Gradle build<\/strong><\/p>\n<p>As we stated earlier, each module has it\u2019s own gradle build file.\u00a0 This include the project as well.\u00a0 In this step we want to ensure that your project is using the latest Gradle plugin. Gradle plugins are on a different release cycle then Android Studio so you may have to manually update until Android Studio directly supports the latest version of Gradle plugin.<\/p>\n<ul>\n<li>Double click on your projects\u00a0<em>build.gradle<\/em>\u00a0file to open it in the editor. This will be the one at the project root directory, not in your app module directory.<\/li>\n<li>Ensure that under\u00a0<strong>dependencies<\/strong>\u00a0you have the following\u00a0<em>classpath<\/em><\/li>\n<\/ul>\n<div>\n<div id=\"highlighter_661943\" class=\"syntaxhighlighter python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number7 index0 alt2\">7<\/div>\n<div class=\"line number8 index1 alt1\">8<\/div>\n<div class=\"line number9 index2 alt2\">9<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number7 index0 alt2\"><code class=\"python plain\">dependencies {<\/code><\/div>\n<div class=\"line number8 index1 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">classpath <\/code><code class=\"python string\">'com.android.tools.build:gradle:0.10.+'<\/code><\/div>\n<div class=\"line number9 index2 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>Click the\u00a0<strong>Sync Project with Gradle Files<\/strong>\u00a0button from the toolbar.<\/li>\n<\/ul>\n<p>Gradle Plugin v0.10.0 is the latest version of the Gradle Plugin at the time of the writing so the version will change as more releases come out.<\/p>\n<p><strong>Update App Module Manifest<\/strong><\/p>\n<p>The\u00a0<em>Android.manifest<\/em>\u00a0file is now located in the\u00a0<em>\/src\/main\/<\/em>\u00a0directory of your app module.<\/p>\n<ul>\n<li>Double click the manifest file to open it.<\/li>\n<li>Add the following to your manifest above the\u00a0<strong>&lt;application&gt;<\/strong>\u00a0element:<\/li>\n<\/ul>\n<div>\n<div id=\"highlighter_262970\" class=\"syntaxhighlighter xml\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number5 index0 alt2\">5<\/div>\n<div class=\"line number6 index1 alt1\">6<\/div>\n<div class=\"line number7 index2 alt2\">7<\/div>\n<div class=\"line number8 index3 alt1\">8<\/div>\n<div class=\"line number9 index4 alt2\">9<\/div>\n<div class=\"line number10 index5 alt1\">10<\/div>\n<div class=\"line number11 index6 alt2\">11<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number5 index0 alt2\"><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">uses-permission<\/code> <code class=\"xml color1\">android:name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"android.permission.INTERNET\"<\/code> <code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number6 index1 alt1\"><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">uses-permission<\/code> <code class=\"xml color1\">android:name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"android.permission.WRITE_EXTERNAL_STORAGE\"<\/code> <code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number7 index2 alt2\"><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">uses-permission<\/code> <code class=\"xml color1\">android:name<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"android.permission.ACCESS_FINE_LOCATION\"<\/code> <code class=\"xml plain\">\/&gt;<\/code><\/div>\n<div class=\"line number8 index3 alt1\"><\/div>\n<div class=\"line number9 index4 alt2\"><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">uses-feature<\/code><\/div>\n<div class=\"line number10 index5 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">android:glEsVersion<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"0x00020000\"<\/code><\/div>\n<div class=\"line number11 index6 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">android:required<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"true\"<\/code> <code class=\"xml plain\">\/&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>Add ArcGIS Android dependent libraries<\/strong><\/p>\n<p>The ArcGIS Android dependent libraries are available in the ArcGIS Runtime SDK for Android\u00a0<em>libs<\/em>\u00a0folder.\u00a0 You will be coping files from this directory into your app module directory in your project.<\/p>\n<ul>\n<li>Copy all the jar files from your\u00a0<em>[sdk-install-dir]\/libs<\/em>\u00a0folder into your projects\u00a0<em>HelloWorld\/HelloWorld\/libs<\/em>\u00a0directory.<\/li>\n<li>Create a\u00a0<em>HelloWorld\/HelloWorld\/src\/main\/<strong>jniLibs<\/strong><\/em>\u00a0folder in your project.<\/li>\n<li>Copy the native processor directory containing the\u00a0<em>libruntimecore_java.so<\/em>\u00a0pre-built native library to the\u00a0<strong>jniLibs<\/strong>\u00a0folder created in the previous step.<\/li>\n<\/ul>\n<p>Below is a image representing an Android Studio project with module including android sdk jars and native libs.\u00a0 Note we are only including on native processor directory into jniLibs.<\/p>\n<div id=\"attachment_38090\" class=\"wp-caption aligncenter\">\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2014\/05\/gradle-project-structure.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-38090\" src=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2014\/05\/gradle-project-structure.png\" alt=\"\" width=\"462\" height=\"675\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">Gradle project structure in Android Studio<\/p>\n<\/div>\n<p>Update the App Module Gradle Build<\/p>\n<ul>\n<li>Double click on your applications\u00a0<em>build.gradle<\/em>\u00a0file to open it in the editor. This will be the file at the root of your app modules directory.<\/li>\n<li>Add the following exclusions above\u00a0<strong>buildTypes<\/strong><\/li>\n<\/ul>\n<div>\n<div id=\"highlighter_428110\" class=\"syntaxhighlighter python\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number14 index0 alt1\">14<\/div>\n<div class=\"line number15 index1 alt2\">15<\/div>\n<div class=\"line number16 index2 alt1\">16<\/div>\n<div class=\"line number17 index3 alt2\">17<\/div>\n<div class=\"line number18 index4 alt1\">18<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number14 index0 alt1\"><code class=\"python plain\">packagingOptions{<\/code><\/div>\n<div class=\"line number15 index1 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">exclude <\/code><code class=\"python string\">'META-INF\/LGPL2.1'<\/code><\/div>\n<div class=\"line number16 index2 alt1\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">exclude <\/code><code class=\"python string\">'META-INF\/LICENSE'<\/code><\/div>\n<div class=\"line number17 index3 alt2\"><code class=\"python spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"python plain\">exclude <\/code><code class=\"python string\">'META-INF\/NOTICE'<\/code><\/div>\n<div class=\"line number18 index4 alt1\"><code class=\"python plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>Click the\u00a0<strong>Sync Project with Gradle Files<\/strong>\u00a0button from the toolbar.<\/li>\n<\/ul>\n<h1>Create Hello World App<\/h1>\n<p>Our project is now ready to start coding against the ArcGIS Android API.\u00a0 We will create a Hello World app to ensure everything is working as expected.<\/p>\n<p><strong>Add MapView to the layout<\/strong><\/p>\n<p>The layout resource file is now located in the\u00a0<em>\/src\/res\/layout<\/em>\u00a0directory of your app module.<\/p>\n<ul>\n<li>Double click the\u00a0<em>activity_main.xml<\/em>\u00a0file from the resource layout directory.<\/li>\n<li>Remove the\u00a0<strong>&lt;TextView&gt;<\/strong>\u00a0element and all it\u2019s attributes.<\/li>\n<li>Add the\u00a0<strong>MapView<\/strong>\u00a0XML layout with some\u00a0<strong>mapoptions<\/strong>\u00a0defined by adding the following code snippet where you removed the\u00a0<strong>&lt;TextView&gt;<\/strong>element:<\/li>\n<\/ul>\n<div>\n<div id=\"highlighter_971023\" class=\"syntaxhighlighter xml\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number11 index0 alt2\">11<\/div>\n<div class=\"line number12 index1 alt1\">12<\/div>\n<div class=\"line number13 index2 alt2\">13<\/div>\n<div class=\"line number14 index3 alt1\">14<\/div>\n<div class=\"line number15 index4 alt2\">15<\/div>\n<div class=\"line number16 index5 alt1\">16<\/div>\n<div class=\"line number17 index6 alt2\">17<\/div>\n<div class=\"line number18 index7 alt1\">18<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number11 index0 alt2\"><code class=\"xml comments\">&lt;!-- MapView --&gt;<\/code><\/div>\n<div class=\"line number12 index1 alt1\"><code class=\"xml plain\">&lt;<\/code><code class=\"xml keyword\">com.esri.android.map.MapView<\/code><\/div>\n<div class=\"line number13 index2 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">android:id<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"@+id\/map\"<\/code><\/div>\n<div class=\"line number14 index3 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">android:layout_width<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"fill_parent\"<\/code><\/div>\n<div class=\"line number15 index4 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">android:layout_height<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"fill_parent\"<\/code><\/div>\n<div class=\"line number16 index5 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">mapoptions.MapType<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"Topo\"<\/code><\/div>\n<div class=\"line number17 index6 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">mapoptions.center<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"34.056215, -117.195668\"<\/code><\/div>\n<div class=\"line number18 index7 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">mapoptions.ZoomLevel<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">\"16\"<\/code><code class=\"xml plain\">\/&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>Create MapView in source<\/strong><\/p>\n<p>Now we need to create a\u00a0<strong>MapView<\/strong>\u00a0object and access the map from the layout<\/p>\n<ul>\n<li>Instatiate a MapView variable by adding the following:<\/li>\n<\/ul>\n<div>\n<div id=\"highlighter_241577\" class=\"syntaxhighlighter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number13 index0 alt2\">13<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number13 index0 alt2\"><code class=\"java plain\">MapView mMapView;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>Add the following code to the\u00a0<strong>onCreate<\/strong>\u00a0method after\u00a0<strong>setContentView()<\/strong>:<\/li>\n<\/ul>\n<div>\n<div id=\"highlighter_808265\" class=\"syntaxhighlighter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number20 index0 alt1\">20<\/div>\n<div class=\"line number21 index1 alt2\">21<\/div>\n<div class=\"line number22 index2 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number20 index0 alt1\"><code class=\"java comments\">\/\/ after the content of this activity is set<\/code><\/div>\n<div class=\"line number21 index1 alt2\"><code class=\"java comments\">\/\/ the map can be accessed from the layout<\/code><\/div>\n<div class=\"line number22 index2 alt1\"><code class=\"java plain\">mMapView = (MapView)findViewById(R.id.map);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ul>\n<li>Run the app!<\/li>\n<\/ul>\n<div id=\"attachment_38111\" class=\"wp-caption aligncenter\">\n<p><a href=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2014\/05\/Hello-World.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-38111\" src=\"http:\/\/blogs.esri.com\/esri\/arcgis\/files\/2014\/05\/Hello-World.png\" alt=\"\" width=\"382\" height=\"600\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">Hello World \u2013 Map in your App<\/p>\n<\/div>\n<h1>Summary<\/h1>\n<p>In this post we directly integrated the ArcGIS Runtime SDK for Android into Android Studio and created the Hello World sample app.\u00a0 I will re-state that Android Studio and the Gradle plugin are still in an\u00a0<strong>early access preview<\/strong>\u00a0release state.\u00a0 Several features are either incomplete or not yet implemented so there may be breaking changes when releases are updated.<\/p>\n<p>In part 2 of this series we will introduce a library module to allow multiple app modules the ability to re-use the ArcGIS Android API libraries.<\/p>\n"}],"authors":[{"ID":3721,"user_firstname":"Dan","user_lastname":"O'Neill","nickname":"dano","user_nicename":"dano","display_name":"Dan O'Neill","user_email":"doneill@esri.com","user_url":"","user_registered":"2018-03-02 00:15:19","user_description":"","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}],"related_articles":"","card_image":false,"wide_image":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using the ArcGIS Android SDK with Android Studio \u2013 Part 1<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2018-12-18T18:47:01+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1\"},\"author\":{\"name\":\"Dan O'Neill\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6\"},\"headline\":\"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1\",\"datePublished\":\"2014-05-21T06:26:52+00:00\",\"dateModified\":\"2018-12-18T18:47:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"Android\",\"ArcGIS Runtime\",\"Java\",\"Mobile GIS\"],\"articleSection\":[\"Field Operations\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1\",\"name\":\"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2014-05-21T06:26:52+00:00\",\"dateModified\":\"2018-12-18T18:47:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6\",\"name\":\"Dan O'Neill\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g\",\"caption\":\"Dan O'Neill\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1","og_locale":"en_US","og_type":"article","og_title":"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-12-18T18:47:01+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1"},"author":{"name":"Dan O'Neill","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6"},"headline":"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1","datePublished":"2014-05-21T06:26:52+00:00","dateModified":"2018-12-18T18:47:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1"},"wordCount":9,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["Android","ArcGIS Runtime","Java","Mobile GIS"],"articleSection":["Field Operations"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1","name":"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2014-05-21T06:26:52+00:00","dateModified":"2018-12-18T18:47:01+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/field-mobility\/using-the-arcgis-android-sdk-with-android-studio-part-1#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Using the ArcGIS Android SDK with Android Studio \u2013 Part 1"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6","name":"Dan O'Neill","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g","caption":"Dan O'Neill"},"url":""}]}},"text_date":"May 20, 2014","author_name":"Dan O'Neill","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"Developers","tag_data":[{"term_id":23441,"name":"Android","slug":"android","term_group":0,"term_taxonomy_id":23441,"taxonomy":"post_tag","description":"","parent":0,"count":85,"filter":"raw"},{"term_id":23451,"name":"ArcGIS Runtime","slug":"arcgis-runtime","term_group":0,"term_taxonomy_id":23451,"taxonomy":"post_tag","description":"","parent":0,"count":91,"filter":"raw"},{"term_id":23471,"name":"Java","slug":"java","term_group":0,"term_taxonomy_id":23471,"taxonomy":"post_tag","description":"","parent":0,"count":19,"filter":"raw"},{"term_id":24551,"name":"Mobile GIS","slug":"mobile-gis","term_group":0,"term_taxonomy_id":24551,"taxonomy":"post_tag","description":"","parent":0,"count":24,"filter":"raw"}],"category_data":[{"term_id":23261,"name":"Field Operations","slug":"field-mobility","term_group":0,"term_taxonomy_id":23261,"taxonomy":"category","description":"","parent":0,"count":617,"filter":"raw"}],"product_data":[{"term_id":36881,"name":"ArcGIS Runtime SDK for Android","slug":"api-for-android","term_group":0,"term_taxonomy_id":36881,"taxonomy":"product","description":"","parent":36601,"count":65,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":763,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=developers","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/185501","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/3721"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=185501"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/185501\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=185501"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=185501"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=185501"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=185501"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=185501"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}