The world of Android development is changing rapidly: new versions Android 15, updated libraries and the growing demand for mobile applications make this area one of the most promising for programmers. But where to start if you just discovered Android development? Many beginners get lost among dozens of programming languages, development environments and conflicting advice on the Internet.

This article will not just list the tools - it will help you avoid common mistakes, save time on learning outdated technologies and immediately tune in to practical results. We'll sort it out three critical stages of starting: choosing a language (Kotlin vs Java), setting up the development environment and creating the first working application without โ€œhello, world!โ€. You will also find out why 80% of beginners quit learning at the learning stage AndroidManifest.xml โ€”and how to avoid it.

Spoiler: you donโ€™t need to be a programming guru to release your first application in Google Play. The right approach and a clear plan are enough - you will find it below.

1. Choosing a programming language: Kotlin or Java?

The first question that every beginner asks himself: what language should he write in? In 2026, the answer is clear - it has become the official and priority language for Android development. It has been recommended since 2019, and today more than 70% of professional projects are written in it. But why? Kotlin has become the official and priority language for Android development. Google has been recommending it since 2019, and today more than 70% of professional projects are written in it. But why?

Kotlin offers:

  • ๐Ÿ”น Concise syntax - Kotlin code is on average 40% shorter than the equivalent in Java. Less โ€œtemplateโ€ code, more logic.
  • ๐Ÿ”น Security โ€” built-in protection against NullPointerException (the main nightmare of Java developers).
  • ๐Ÿ”น 100% compatible with Java โ€”you can use Java libraries in Kotlin projects and vice versa.
  • ๐Ÿ”น Support for coroutines โ€”a modern way of working with multithreading that simplifies asynchronous operations.

But what if you already know Java? Don't abandon it - many legacy projects (especially in the banking and public sector) are still supported in Java. However, for new projects Google and the community definitely recommend Kotlin.

โš ๏ธ Attention: If you are learning Android development โ€œfor yourselfโ€ (hobby, startup), start with Kotlin. If the goal is to get a job at a large company with legacy code, study the job requirements: some still require Java.

For completeness, here's a quick comparison:

Criteria Kotlin Java
Syntax Concise, intuitive Cumbersome, a lot of "template" code
Security Null-safety built into the language Frequent NullPointerException
Compatibility Full with Java, the reverse is partial Works with Kotlin, but without its advantages
Demand (2026) 85% of new vacancies 15% (legacy, support)
Learning curve Faster for beginners Longer due to complex syntax

Conclusion: Kotlin โ€”the optimal choice for starting in 2026. But if you need to work with legacy systems, you will have to master Java.

๐Ÿ“Š What language are you planning to learn for Android development?
Kotlin
Java
Both languages
Other (specify in the comments)

2. Setting up the development environment: Android Studio and emulators

Without the right tools, even the simplest application turns into torture. The main (and free) Android developer tool is Android Studio. This is not just a code editor, but a full-fledged environment with emulators, a debugger and optimization tools.

What you need to do before starting:

  1. Download the latest version Android Studio Giraffe (or later) from official website. Avoid โ€œportableโ€ assemblies from third parties - they often contain outdated versions of the SDK.
  2. Install Java Development Kit (JDK) 17 - this is the minimum version for modern projects. Older versions (JDK 8) may not support the latest Kotlin features.
  3. Enable Hyper-V (for Windows) or KVM (for Linux) to speed up the emulator. Without this, the emulator will slow down even on powerful PCs.

The most common mistake of beginners is trying to save disk space by refusing to download Android SDK emulators. As a result, the first projects are not built due to the lack of necessary libraries. Minimum set to start: SDK Platform for the latest version of Android, Android Emulator and Google Play Services.

Advice on emulators:

  • ๐Ÿ“ฑ For testing, choose an emulator with x86_64 architecture - it works faster than ARM.
  • ๐Ÿ”„ Configure Snapshot (save state) to quickly launch the emulator.
  • ๐Ÿ› ๏ธ If the emulator lags, try reducing the screen resolution to 720p or disabling animations in the developer options.
โš ๏ธ Attention: On a Mac with an M1/M2 chip emulators x86_64 do not work - use ARMversions or a physical device. This is a limitation of Apple, not Android Studio.

Download and install the latest version of Android Studio|

Install JDK 17 or later|

Download SDK Platform for the latest version of Android|

Set up an emulator with x86_64 architecture (or ARM for Mac M1/M2)|

Enable Hyper-V/KVM to speed up the emulator-->

3. Application One: What to Create Instead of "Hello World?"

"Hello World" is good for testing your development environment, but it doesn't teach anything practical. Instead, create an application that:

  • ๐Ÿ“ฑ Solve a real problem (even a small one).
  • ๐Ÿ”„ Interacts with the user (buttons, input fields).
  • ๐Ÿ“Š Uses at least one system component (camera, geolocation, notifications).

5 ideas for the first project (sorted by complexity):

  1. Currency converter โ€” the user enters the amount in rubles, the application shows the equivalent in dollars/euros. Use a fixed rate or a simple API (for example, ExchangeRate-API).
  2. Shopping list - adding/removing products, saving to SharedPreferences. Ideal for learning how to work with RecyclerView.
  3. Password generator - random passwords with setting the length and including special characters. Practice working with strings and Random.
  4. Habit tracker โ€”the user notes whether he performed a habit today (for example, โ€œdrink waterโ€) Saving data in Room Database.
  5. Mini-game "Guess the number" โ€”the computer guesses the number, the user guesses. Use ViewModel to save the game state when you rotate the screen.

Why these projects are better than "Hello World":

  • ๐ŸŽฏ They teach you how to work with UI components (Button, EditText, RecyclerView).
  • ๐Ÿ’พ They require saving data (albeit simple), which is close to real tasks.
  • ๐Ÿ”„ You can gradually complicate it: add animations, a dark theme, multi-threading.

Example code for a currency converter (main logic):

// In the file MainActivity.kt

fun convertCurrency(amount: Double, rate: Double): Double {

return amount * rate

}

// Call when the button is pressed

binding.convertButton.setOnClickListener {

val amount = binding.amountEditText.text.toString().toDouble()

val result = convertCurrency(amount, 0.011) // Rate 1 RUB = 0.011 USD

binding.resultTextView.text = "$.{%.2f}".format(result)

}

๐Ÿ’ก

Do not copy project code from GitHub โ€œas isโ€ - better understand how it works and rewrite it in your own words. This will help avoid problems during modification.

4. Application architecture: why MVVM is better than โ€œeverything in MainActivityโ€

90% of beginners write all the code in MainActivity.kt โ€”and after a month they themselves cannot figure out their project. This is called "Spaghetti code", and it leads to:

  • โŒ Inability to scale the application.
  • โŒ Difficulties in testing.
  • โŒ Frequent crashes when changing the configuration (for example, rotating the screen).

The solution is to use an architectural pattern. In 2026, the de facto standard for Android is MVVM (Model-View-ViewModel). Its advantages:

  • ๐Ÿ”น Separation of responsibility: UI (View) does not know about the business logic (Model), and ViewModel links them.
  • ๐Ÿ”น Saving state when rotating the screen (thanks to ViewModel).
  • ๐Ÿ”น Ease of testing โ€”each component can be tested separately.

Comparison of architectures:

Pattern Pros Cons Suitable for beginners?
Everything in Activity Quick to write Does not scale, difficult to maintain โŒ No
MVC Easier than MVVM Activity becomes a controller, grows โš ๏ธ Only for small projects
MVP Better than MVC Lots of boilerplate code, difficult to save state โš ๏ธ You can try
MVVM Modern, recommended by Google Moderate to understand for a beginner โœ… Yes, with gradual learning
Clean Architecture Maximum flexibility Too complicated for first projects โŒ No

How to start with MVVM:

  1. Create a class ViewModelinherited from AndroidViewModel.
  2. Move all logic from Activity to ViewModel.
  3. Use LiveData or StateFlow to exchange data between the ViewModel and the UI.
  4. In Activity/Fragment leave only the display-related code.

Example of MVVM project structure:


myapp/

โ”œโ”€โ”€ data/ # Data models, repositories

โ”œโ”€โ”€ di/ # Dependency Injection (later)

โ”œโ”€โ”€ ui/ # Everything related to UI

โ”‚ โ”œโ”€โ”€ MainActivity.kt

โ”‚ โ””โ”€โ”€ MainFragment.kt

โ””โ”€โ”€ viewmodel/ # ViewModel for each screen

โ””โ”€โ”€ MainViewModel.kt

๐Ÿ’ก

MVVM seems complicated only at first. After 2-3 projects, you will understand how it saves time on maintaining and adding new features.

5. Working with API and network requests: Retrofit + Coroutines

The vast majority of applications interact with the server: weather, exchange rates, social networks - everything requires network requests. In Android, for this they use the library Retrofit (for requests) + Kotlin Coroutines (for asynchrony).

Why not AsyncTask or RxJava?

  • ๐Ÿ”น AsyncTask outdated and removed from the latest versions of Android.
  • ๐Ÿ”น RxJava Powerful, but difficult for beginners (many operators, complex debugging).
  • ๐Ÿ”น Coroutines + Retrofit โ€”a modern duo recommended by Google.

Steps to add Retrofit to a project:

  1. Add dependencies to build.gradle (Module: app):
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    

    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'

  2. Create an interface for API:
    interface CurrencyApi {
    

    @GET("latest")

    suspend fun getRates(@Query("base") base: String): Response

    }

  3. Configure the Retrofit client:
    object RetrofitClient {
    

    private const val BASE_URL = "https://api.exchangerate-api.com/v4/"

    val api: CurrencyApi by lazy {

    Retrofit.Builder()

    .baseUrl(BASE_URL)

    .addConverterFactory(GsonConverterFactory.create())

    .build()

    .create(CurrencyApi::class.java)

    }

    }

  4. Execute a request from ViewModel using coroutines:
    viewModelScope.launch {
    

    try {

    val response = RetrofitClient.api.getRates("USD")

    if (response.isSuccessful) {

    _rates.value = response.body()?.rates

    }

    } catch (e: Exception) {

    _error.value = "Error: ${e.message}"

    }

    }

Typical errors when working with network:

  • ๐Ÿšซ They forget to add <uses-permission android:name="android.permission.INTERNET" /> to AndroidManifest.xml.
  • ๐Ÿšซ They make network requests to MainThread (leads to NetworkOnMainThreadException).
  • ๐Ÿšซ They do not handle errors (for example, the absence Internet).
โš ๏ธ Attention: C Android 9 (API 28) HTTP requests are blocked by default (HTTPS only). If your API does not support HTTPS, add android:usesCleartextTraffic="true" to AndroidManifest.xml (but this is not safe for production applications!).
How to test an API without a server?

Use MockWebServer from Square to simulate server-side responses. This will allow you to test application logic without depending on the real API.

  1. Add. dependency: testImplementation 'com.squareup.okhttp3:mockwebserver:4.10.0'
  2. Create a test server in unit tests:
    val server = MockWebServer()
    

    server.enqueue(MockResponse().setBody("{\"rate\": 75.5}"))

    server.start()

  3. Configure Retrofit to use the URL of this server.

6. Publishing on Google Play: requirements and pitfalls

When your application is ready, it's time to share it with the world But! publication in Google Play is not just an APK download. Here's what you need to know:

Developer account requirements:

  • ๐Ÿ’ฐ Registration fee - $25 (one-time). Payment is accepted by cards or through Google Pay.
  • ๐Ÿ“ Developer data โ€”identity confirmation (passport or company data) will be required.
  • ๐Ÿ“ง Email โ€”must be linked to a Google account that is not subject to restrictions (for example, work/school accounts can block publication).

Technical requirements for the application:

  • ๐Ÿ“ฑ Target API level - not lower targetSdkVersion 33 (for Android 13). Applications with targetSdkVersion below 23 (Android 6.0) are not accepted.
  • ๐Ÿ”’ Privacy Policy โ€”required even for applications without data collection. Can be generated on privacypolicytemplate.net.
  • ๐ŸŽจ Icon and screenshots - the icon should be 512ร—512 in PNG format, screenshots - for different resolutions (minimum for 1080p and 720p).
  • ๐Ÿ“„ Description โ€”minimum 80 characters in the primary language, support for at least one additional language (English recommended).

Publishing process:

  1. Create signed release APK/AAB in Android Studio (Build โ†’ Generate Signed Bundle / APK).
  2. Fill in application listing in Google Play Console: title (up to 50 characters), description, category, keywords.
  3. Indicate target audience and content rating (questions about violence, drugs, etc.).
  4. Download a binary file (.aab preferable than .apk).
  5. Configure price and distribution (free or paid, countries of distribution).
  6. Submit for review. The verification period is from 1 to 3 days (sometimes longer under high load).
โš ๏ธ Attention: Google Play blocks applications that violate the privacy policy (for example, collecting data without the user's consent) or using prohibited libraries (for example, to bypass advertising). Before publishing, check the application for compliance rules.

What to do if the application is rejected?

  • ๐Ÿ” Carefully read the letter with the reason for rejection - it states what exactly violates the rules.
  • ๐Ÿ“ Fix the problem and download a new version. Do not argue with moderators without arguments.
  • ๐Ÿค If you do not understand the reason, contact support Google Play via the developer console.
๐Ÿ’ก

Publish first in closed testing (Open/Closed Testing). This will allow you to test the application on real users before the full release.

7. Training and development: Android developer roadmap

Android development is not only about writing code, but also about constant learning. Technologies change quickly: those who do not keep up with new products risk being left with outdated skills. Here road map for development from scratch to the level of a middle developer:

Stage 1: Basics (1-3 months)

  • ๐Ÿ“š Learn Kotlin (syntax, collections, lambdas, coroutines).
  • ๐Ÿ› ๏ธ Master Android Studio and basic components: Activity, Fragment, RecyclerView.
  • ๐Ÿ“ฑ Create 3-5 small projects (see section 3).

Stage 2: Advanced topics (3-6 months)

  • ๐Ÿ—๏ธ Learn MVVM + LiveData/StateFlow.
  • ๐ŸŒ Master work with Retrofit i Room Database.
  • ๐Ÿ” Understand Jetpack Compose (a modern alternative to XML for UI).
  • ๐Ÿ“ฆ Learn to use Dependency Injection (Dagger Hilt or Koin).

Stage 3: Professional level (6-12 months)

  • ๐Ÿงช Write unit tests (JUnit, Mockito) and UI tests (Espresso).
  • ๐Ÿ“Š Explore Firebase (authentication, cloud functions, analytics).
  • ๐Ÿ›ก๏ธ Understand security: encryption, secure data storage, protection from reverse engineering.
  • ๐Ÿš€ Publish at least one application to Google Play.

Recommended resources for learning:

Resource type Name For whom Cost
Course Android Basics in Kotlin (Google) Beginners Free
Book "Android Programming: The Big Nerd Ranch Guide" Beginners who love books ~$40
YouTube Channel Philipp Lackner Visuals, practice Free
Practice Codewars (tasks on Kotlin) Reinforcement syntax Free
Community Kotlin Slack Communication, help Free

Learning tip: donโ€™t try to learn everything at once. Focus on practice - it is better to do 10 small projects than to read 10 books on theory.

8. Typical mistakes of beginners and how to avoid them

Even with a good theoretical basis, beginners make the same mistakes. Here are the top 5 problems and how to prevent them:

๐Ÿ”ฅ Error 1: Ignoring AndroidManifest.xml

Many beginners believe that this file is not important and copy it โ€œas isโ€ from tutorials. In fact, the following are indicated here:

  • Permissions (<uses-permission>).
  • Application theme and support for different screens.
  • SDK versions (minSdkVersion, targetSdkVersion).

Consequences: the application may not run on some devices or may not request the necessary permissions.

๐Ÿ”ฅ Error 2: Storing data in SharedPreferences for everything

SharedPreferences is convenient for small data (for example, theme settings), but not suitable for:

  • Large amounts of data (slows down).
  • Complex objects (needs to be serialized in JSON).
  • Data to search/filter.

Solution: use Room Database for structured data.

๐Ÿ”ฅ Error 3: Lack of screen rotation processing

When rotated screen Activity is recreated and all unsaved data is lost. This annoys users.

Solution:

  • Use ViewModel to store data.
  • For temporary data (for example, text in an input field) use onSaveInstanceState.

๐Ÿ”ฅ Error 4: Forgetting about multithreading

Network requests, working with a database or heavy calculations in MainThread lead to ANR (Application Not Responding) - the application freezes.

Solution:

  • Use viewModelScope.launch for coroutines.
  • For database operations - Room automatically executes queries in the background.

๐Ÿ”ฅ Error 5: Copying code without understanding

Many beginners copy code from Stack Overflow or GitHub without understanding how it works. This leads to:

  • The inability to modify the code to suit their needs.
  • Use of outdated libraries or unsafe practices.

Solution: Always understand what the copied code does. Ask questions: "Why is it used here lifecycleScopeand not viewModelScope?".

โš ๏ธ Attention: If your application uses advertising (for example, AdMob), make sure that you do not violate the rules Google Play