On this page · 14 sections
- What you need before you start
- Step 1: Install Android Studio and the SDK
- Step 2: Create a Kotlin and Jetpack Compose project
- Step 3: Learn the project structure
- Step 4: Build the UI with Jetpack Compose
- Step 5: Use Google's recommended architecture
- Step 6: Test on the emulator and on real devices
- Step 7: Set the target API level for Android 17 and Play
- Step 8: Sign the release and build an Android App Bundle
- Step 9: Publish on Google Play
- Common problems and fixes
- For IT teams and businesses
- How eCorpIT can help
- References
Summary. To develop an app for Android, install Android Studio, create a Kotlin project from the Empty Activity template, build the screens in Jetpack Compose, test on the Android Emulator and a real phone, then sign a release and upload an Android App Bundle (AAB) to Google Play. On 11 November 2026 the stable IDE is Android Studio Rabbit 2 (2026.2.2 Patch 1), a download of about 1.5 GB for Windows and Mac. Google lists 8 GB of RAM as the minimum for the IDE alone, 16 GB with the emulator, and 32 GB as recommended. Android 17 (API level 37) was released on 16 June 2026, and Google now calls Android development Compose-first: View-based widgets, Fragments and RecyclerView get critical fixes only. Since 31 August 2026, new apps and updates must target API 36, and Google's blog says API 37 becomes the requirement in August 2027, with no day published yet. New apps must publish as AABs, the upload key should be valid for at least 25 years, and versionCode cannot exceed 2,100,000,000. Publishing costs a one-time US$25, and new personal accounts must run a closed test with at least 12 testers for 14 days before production.
About this article. For developers building a first native Android app, and for IT teams planning one. We checked every step, menu path, limit and date against developer.android.com, the Android Developers Blog and Play Console Help on 11 November 2026, using Android Studio Rabbit 2 and the Android 17 (API level 37) documentation. Menu labels can differ between Studio versions and phone makers, and Play rules change every year. No vendor paid for inclusion. Researched with AI assistance and reviewed by our editorial team.
What you need before you start
Google's toolchain is free until you publish. Sizes come from Google's download page, hardware figures from its install page and the virtualisation rule from its emulator guide.
| Item | Requirement on 11 November 2026 |
|---|---|
| IDE | Android Studio Rabbit 2, 2026.2.2 Patch 1: about 1.5 GB for Windows and Mac, 1.6 GB for Linux, 1.3 GB for ChromeOS |
| Operating system | 64-bit Windows 10 or later, macOS 12 or later, 64-bit Linux with glibc 2.31 or later, or ChromeOS; Windows and Linux on ARM processors are not supported |
| Memory and disk | 8 GB RAM and 8 GB free disk for Studio; 16 GB RAM and 16 GB disk with the emulator; 32 GB RAM recommended |
| Emulator | Intel VT-x or AMD-V enabled in BIOS, or Apple silicon |
| Language | Kotlin, which Google recommends and which Jetpack Compose requires |
| UI toolkit | Jetpack Compose |
| Test phone | Any Android phone with Developer options; wireless debugging needs Android 11 or later |
| Publishing | Play Console account, US$25 once; target API 36 now, API 37 from August 2027 |
Gemini in Android Studio, Firebase Crashlytics and other cloud integrations work only on the latest stable release and major versions from the previous 10 months. Google names Panda 2 as the oldest supported version, so update if you are older.
Step 1: Install Android Studio and the SDK
Download Android Studio from Google's Android Developers site and accept the SDK licence agreement. Then install it for your platform:
- Windows: run the recommended
.exeinstaller. A.zipis also offered: unpack it and launchstudio64.exefrom thebinfolder. For phone testing over USB you may need your manufacturer's USB driver.
- macOS: choose the ARM build for Apple silicon or the standard Mac build for Intel, open the
.dmgand drag Android Studio into Applications. Google says it is phasing out support for Intel Macs.
- Linux: unpack the
.tar.gzto a folder such as/usr/localor/opt, then runstudiofromandroid-studio/bin. On 64-bit Ubuntu, Google lists some 32-bit libraries to install first.
- ChromeOS: turn on Linux, move the
.debinto Linux files and install it with apt. Studio on ChromeOS deploys only to a connected phone, not to the emulator.
On first launch the setup wizard downloads the SDK components it needs; accept the defaults and add SDK platforms later from the SDK Manager. Each extra virtual device can take up to 6 GB more disk.
Step 2: Create a Kotlin and Jetpack Compose project
Google's create-a-project guide names Empty Activity as the recommended starting point for all new Compose projects. It includes the Compose dependencies and Material Design setup; the other templates are for legacy codebases.
- On the Welcome screen click New Project (or File > New > New Project if a project is open).
- In the phone and tablet templates, choose Empty Activity and click Next.
- Enter the Name.
- Enter the Package name, for example
com.yourcompany.notes. By default it becomes both the namespace and the application ID used to publish. Choose carefully: Play Console says package names are unique and permanent, and cannot be deleted or reused.
- Choose the Save location. On macOS, use the AndroidStudioProjects folder in your home directory: macOS privacy controls protect Desktop, Documents and Downloads, so project files may not show up correctly there.
- Keep Kotlin as the language. Google recommends it, Compose requires it, and Java is supported but not recommended for new projects.
- Pick the Minimum API level. Help me choose shows the cumulative share of devices each level reaches. A lower minimum reaches more phones but rules out newer APIs.
- Click Finish.
Google has called Android Kotlin-first since 2019. From a terminal or an AI coding agent, Google's Android CLI creates the same project with android create empty-activity --name=MyApp.
Step 3: Learn the project structure
Only a handful of files matter on day one. In Google's layout, main holds the app, test holds local tests that run on your computer, and androidTest holds tests that run on a device.
| File or folder | What it does | When you touch it |
|---|---|---|
| app/src/main/AndroidManifest.xml | Declares activities, permissions and app metadata | Adding permissions, deep links, new entry points |
| app/src/main/java/(package)/MainActivity.kt | Entry point that calls setContent to show Compose UI | Every day |
| app/src/main/res/ | Strings, icons, themes and other resources | Text, translations, launcher icon |
| app/build.gradle.kts | Module build file: application ID, minSdk, targetSdk, versionCode, dependencies | Version bumps, libraries, signing |
| gradle/libs.versions.toml | Version catalogue that pins library versions | Upgrading libraries |
Gradle looks for the version catalogue in gradle/libs.versions.toml by default. Play rules land in the module build file. The exact DSL differs between Android Gradle Plugin versions, and minSdk = 24 is only an example:
android {
namespace = "com.yourcompany.notes"
compileSdk = 37
defaultConfig {
applicationId = "com.yourcompany.notes"
minSdk = 24
targetSdk = 36 // Play's floor since 31 August 2026; plan for 37 by August 2027
versionCode = 1 // must rise with every upload; Play's maximum is 2100000000
versionName = "1.0"
}
}
Each release must use a higher versionCode than the last, and Play refuses an upload that reuses one.
Step 4: Build the UI with Jetpack Compose
Compose builds screens from Kotlin functions marked @Composable. When state changes, Compose calls the affected functions again with the new data, a process Google calls recomposition. A trimmed version of the template's MainActivity looks like this:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
Greeting(name = "Android")
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(text = "Hello $name!", modifier = modifier)
}
Three changes from 2026 should shape a new app:
- Compose first, Views frozen. Google's 16 June 2026 Android 17 post says all new Android APIs, libraries, tools and guidance will be built only for Compose, while android.widget Views and View-based libraries such as Fragments, RecyclerView and ViewPager get critical bug fixes only. New XML layouts mean migrating later.
- No orientation lock on large screens once you target API 37. On large screens (smallest width above 600 dp), Android 17 ignores
screenOrientation,setRequestedOrientation(),resizeableActivity=falseand aspect-ratio limits for apps targeting API 37. Games, going by their Play category, are exempt.
- Simple guards prevent the common breakages. Google's February 2026 guidance suggests
Modifier.widthIn(max = ...)so buttons and fields do not stretch across a tablet, andverticalScrollso a Save button cannot end up off-screen on a foldable or tablet in landscape.
Step 5: Use Google's recommended architecture
Anything you intend to maintain should follow Google's guide to app architecture, which asks for at least two layers:
- UI layer: composables plus state holders, usually a
ViewModel, that expose screen state.
- Data layer: repositories and data sources (network, Room database, DataStore) that hold the business logic and app data.
- Domain layer (optional): use cases that simplify or reuse logic between the two. Google says to add it only when needed.
The guide also recommends unidirectional data flow, Kotlin coroutines and flows, dependency injection (Google documents Hilt), and R8 plus Baseline Profiles, measured with Macrobenchmark. R8 matters more on Android 17, which enforces app memory limits based on a device's total RAM and terminates processes that exceed them; Google points to R8 as one way to cut the memory footprint.
Step 6: Test on the emulator and on real devices
Test on both: the emulator covers many Android versions and screen sizes, while a real phone shows true performance, camera behaviour and manufacturer quirks.
Emulator. Open Device Manager (More Actions > Virtual Device Manager on the Welcome screen, or View > Tool Windows > Device Manager in a project), click +, then Create Virtual Device, and pick a phone or tablet profile and a system image. Use an Android 17 (API 37) image to test the new behaviour, then click Run. If it will not start on a PC, check that VT-x or AMD-V is enabled in BIOS, where Google notes it may be off by default.
Physical phone over USB.
- Enable Developer options: find Build number (Settings > About phone on a Pixel; the path differs by manufacturer) and tap it seven times.
- In Settings > Developer options, turn on USB debugging.
- Set up the computer. macOS and ChromeOS need nothing extra. Windows may need the OEM USB driver. On Ubuntu, add yourself to the plugdev group with
sudo usermod -aG plugdev $LOGNAME, log out and back in, and install udev rules withapt-get install android-sdk-platform-tools-common.
- Plug in, accept the RSA key prompt on the phone, and click Run in Android Studio.
Wireless debugging. Android 11 and later can deploy over Wi-Fi. Put the computer and phone on the same network, update SDK Platform Tools, turn on Wireless debugging on the phone, choose Pair Devices Using Wi-Fi from the run configurations menu, then pair with a QR code or a six-digit code. Google says Android 17 with adb 37.0.0 brings adb Wi-Fi 2.0, which reconnects automatically on a trusted network. Device mirroring then shows the phone in Studio's Running Devices window. Apps installed through ADB do not need developer verification.
Automated tests. Put logic tests in src/test and UI or integration tests in src/androidTest. Compose has its own test rules, created with createComposeRule, for checking UI state. For wider coverage, Google points to Firebase Test Lab for cloud-hosted real devices, although Firebase has deprecated Test Lab and plans to shut it down fully on 30 September 2027.
Step 7: Set the target API level for Android 17 and Play
Your targetSdk tells Android which behaviour rules your app was tested against, and Google Play sets a floor. The current rule is from Play Console Help; the 2027 month is from Google's February 2026 blog post.
| Date | New apps and updates must target | Existing apps stay visible to new users on newer Android only if they target | Notes |
|---|---|---|---|
| 31 August 2026 | API 36 (Android 16); Wear OS and Automotive 35; TV and XR 34 | API 35 | Extension requests ran to 1 November 2026 |
| August 2027 | API 37 (Android 17) | Not yet published | Month only; day, extensions and other form-factor floors not yet on Play Help |
Our guide to the Android 17 (API 37) behaviour changes covers each targeted change, and our August 2027 API 37 checklist the calendar.
Changes that apply at targetSdk = 37, per Google's Android 17 post:
- No opt-out from resizing and orientation on large screens (games exempt).
- A lock-free
MessageQueue, which breaks code that reflects on its private fields.
static finalfields can no longer be changed through reflection or JNI.
- Access to standard SMS one-time passwords is delayed by three hours; Google recommends the SMS Retriever or SMS User Consent APIs.
- Local network access needs the new
ACCESS_LOCAL_NETWORKpermission or a system picker.
- Native libraries loaded with
System.loadmust be read-only.
- Direct NPU access needs a
FEATURE_NEURAL_PROCESSING_UNITmanifest declaration.
The same post says Certificate Transparency is on by default in Android 17, so test any custom certificate pinning or private certificate authorities. If you use CameraX, Google says to move to version 1.5.2 or 1.6.0 and later to avoid a crash on Android 17 devices.
Step 8: Sign the release and build an Android App Bundle
Android installs only signed apps, and Play has required AABs for new apps since August 2021.
- In Android Studio choose Build > Generate Signed Bundle/APK.
- Select Android App Bundle and click Next.
- Below Key store path, click Create new. Set the keystore location and password, a key alias and key password, and Validity (years) of at least 25, as Google recommends. Because of a known issue, Google asks you to use the keystore password for the key too.
- Pick the release build variant and finish.
From the command line, ./gradlew bundleRelease builds the release bundle; Gradle signs it only if the release build type has a signing configuration.
The first time you publish an app on Google Play, you must set up Play App Signing. Google then keeps the app signing key, and you sign uploads with a separate upload key, which must be an RSA key of at least 2048 bits. If the upload key is lost or compromised, you can request a reset in Play Console. Apps created before August 2021 may still self-sign; for them, a lost signing key means no more updates.
Play measures compressed download size: 500 MB for the base module, 4 GB for all modules and install-time asset packs together, and 34 GB in total including on-demand assets. Apps still publishing APKs are held to the legacy 100 MB limit, and users on mobile data see a non-blocking size warning for apps above 200 MB. Turn on R8 shrinking for the release build to cut size and memory.
Step 9: Publish on Google Play
Register a Play Console account (you must be 18 or older; US$25 once, by credit or debit card, as prepaid cards are not accepted), verify your identity, create the app, upload the AAB to a testing track, complete the store listing and App content declarations such as the privacy policy, Data safety form and content rating, then roll out. At the European Central Bank's 10 November 2026 reference rates, a dollar was worth about ₹93.93 (105.3315 rupees per euro divided by 1.1214 dollars per euro), so the fee is about ₹2,348 (25 x 93.93) before any bank markup. Two rules catch first-time developers:
- Personal accounts created after 13 November 2023 must run a closed test with at least 12 testers who stay opted in for 14 days in a row, then apply for production access. Google says that review usually takes seven days or less but can take longer.
- Device verification: new personal account owners must confirm access to a real, non-rooted phone running Android 10 or later through the Play Console mobile app.
Organisation accounts need a D-U-N-S number, which Dun & Bradstreet issues free. Our companion guide on how to upload an app on the Play Store walks through each screen.
Common problems and fixes
These fixes come from Google's pages cited in the steps above.
| Problem | Likely cause | Fix |
|---|---|---|
| Emulator will not start or is very slow | Virtualisation off, too little RAM | Enable VT-x or AMD-V in BIOS; Google lists 16 GB RAM for Studio plus emulator |
| Phone not listed in Studio | USB debugging off, missing Windows driver, Linux plugdev group, RSA prompt not accepted | Run Tools > Troubleshoot Device Connections, which can also restart the ADB server |
| Project files missing on macOS | Project saved in Desktop, Documents or Downloads | Move it to the AndroidStudioProjects folder in your home directory |
| Play Console rejects the bundle | targetSdk below API 36 | Raise targetSdk and retest |
| Layout breaks on tablets after targeting 37 | Orientation lock now ignored on large screens | Build adaptive layouts; test on tablet and foldable emulator profiles |
| Gemini features missing in Studio | Studio older than Panda 2 | Update through Help > Check for Updates (Android Studio > Check for Updates on macOS) |
For IT teams and businesses
- Choose the account type early. Company apps belong in an organisation account, not an employee's personal one. Google requires an organisation account for financial, health, government and approved VPN apps.
- Treat signing keys as production secrets. Keep the upload keystore and passwords in a secrets manager and sign in CI; with Play App Signing, a lost upload key can be reset.
- Plan for developer verification on staff phones. Google says verification will extend to all apps on certified Android devices in 2027. Its FAQ exempts only apps delivered through your organisation's store to managed devices, and still recommends registering them in case they are installed from another source or on an unmanaged phone. Our developer verification plan for apps outside Play covers registration.
- Know the target API exemption. Play's target API rules do not apply to permanently private apps restricted to one organisation for internal use.
- Plan the Data safety answers early. Google says you alone are responsible for accurate declarations, including data collected by third-party SDKs, so build a data inventory before launch.
- Budget for the annual target API bump. Play raised the floor in August 2025 and August 2026 and has named August 2027 next. Put a target SDK upgrade, a regression run and library updates into every year's roadmap.
How eCorpIT can help
eCorpIT is a Gurugram-based technology organisation, founded in 2021, assessed at CMMI Level 5 and MSME certified, with senior-led engineering teams working across AWS, Microsoft and Google platforms. Our Android engineers build native apps in Kotlin and Jetpack Compose, set up release signing and CI, and plan the yearly target API upgrade; see our page to hire Android developers. Talk to us at /contact-us/.
Last updated: 11 November 2026.