Development Environment
Before start building an Android app, it’s important to select an IDE for programming.
The official IDE for Android development is Android Studio. Android Studio is the best overall IDE for getting started. The IDE download includes Google’s Android SDK, NDK, Java, and Kotlin support along with all the necessary Android SDK tools and emulators. Native Android applications can be written in either Java or Kotlin and Android Studio provides support for both languages.
Other IDEs to consider are Intellij IDEA or Eclipse.
Android Project/File Layout
Once you download, install, and configure your environment, you can create your first Android project. It’s important to understand the project structure of an Android app. The 'src' folder contains all the source files. The assets folder contains raw images, strings, and xml layouts that get compiled into an .apk file. The res folder also contains similar objects as the assets folder but includes alternatives or subclasses of those resources to support screen orientations, different languages, or OS version. Each file in a res directory is a pre-compiled ID for quick access to these resources.
build.gradle is also another important project file. You'll typically see two build.gradle files in your Android project. One is for the project (Project: <project-name>), and the other one is your app module (Module: app). You'll mostly work with the app module's build.gradle file to configure how the Gradle tools behave and build your app
AndroidManifest.xml – The manifest file describes the fundamentals of the app and defines its components.
Android Visual Layout
Android UI elements are defined in XML and can be designed programmatically or setup visually using the Android Studio Layout Editor.
Build/Run/Test
Once you code and build your Android app, you can interact with the app through an Android Emulator or a physical Android device attached to your computer via USB. An Android emulator simulates an Android phone, tablet, or TV device on your computer. An emulator provides almost all the capabilities of a real Android device, and you can configure them to emulate a specific manufacturer, OS, and tools to fit your needs. An Android emulator is no substitute for real devices, and you should always test on real devices before shipping to testers and app store marketplace.
Cloud Testing
Testing your Android app on real devices is critically important since the performance of the real device, different operating system versions, modifications made by manufacturer and carriers firmware may lead to unexpected issues with your app. Testing on real device gives you a more accurate understanding of how your users interact with your app.
On the other hand, obtaining physical devices for testing is a logistical challenge. This is where cloud testing comes into play. With cloud testing, you can test your application on real devices that are accessible on the cloud. You can perform a manual test or run automated tests to ensure the quality of your application.
Distribute
As an open platform, Android developers have a few choices for distributing their apps to users, customers, developers, and business associates. The most common and official Android app marketplace is the Google Play Store, which enables publishing apps to a marketplace with the broadest audience. In addition to the Google Play Store, another popular app marketplace for Android apps is the Amazon App Store. For beta testing and getting your pre-marketplace Android app published, you can utilize the Google Play Console to get your app in the hands of testers, or specific groups to provide valuable feedback.
Before submitting your app to the Google Play Store, you should understand a little about the Google Play Services and why it’s important when developing an android app. Google Play Services first appeared in 2012 and is a platform (provided by Google) that provides a way for developers to access the Google APIs such as Google Play Game Services, Google Maps, Location, Mobile Ads, and Google Wallet.
Learn more about developing Android native applications.