Android
lastmod 2026-03-03created 2013-12-29168 edits
|
Android is a software stack and mobile operating system for portable devices including mobile phones, containing an operating system, middleware, a user interface, and standard applications (web browser, email client, Short Message Service (SMS), Multimedia Messaging Service (MMS), etc.). Android lets developers write applications in the java language and provides runtime libraries that can run the compiled bytecode. It also provides, through the Android Software Development Kit (SDK), the various tools and application programming interfaces (API) needed to develop applications.
Android runs on top of the Linux kernel and includes C/C++ libraries used by various Android system components. Android is structured to run applications written in java in separate processes through the Dalvik virtual machine, a virtual machine different from the existing Java virtual machine.
After Google acquired Android Inc. in 2005, it announced in November 2007 that the Android platform would be released free as an operating system for portable devices, and since then it has been developed toward open standards by the Open Handset Alliance (Open Handset Aliance, OHA), formed by 48 hardware, software, and telecommunications companies. Google distributes all of Android's source code under the Apache v2 license, an open-source license, so companies and users can each independently develop and ship their own Android programs. Google also provides Google Play, where applications can be bought and sold, and application markets run by each manufacturer or carrier operate alongside it. The markets offer both paid and free applications.
Version Information
| Version | Codename | Release date | API Level | Share (January 8, 2014) |
| 4.4.x | KitKat | October 31, 2013 | 19 | 1.4% |
| 4.3.x | Jelly Bean | July 24, 2013 | 18 | 7.8% |
| 4.2.x | Jelly Bean | November 13, 2012 | 17 | 15.4% |
| 4.1.x | Jelly Bean | July 9, 2012 | 16 | 35.9% |
| 4.0.3 ~ 4.0.4 | Ice Cream Sandwich | December 16, 2011 | 15 | 16.9% |
| 3.2 | Honeycomb | July 15, 2011 | 13 | 0.1% |
| 2.3.1 ~ 2.3.7 | Gingerbread | February 9, 2011 | 10 | 21.2% |
| 2.2 | Froyo | May 20, 2010 | 8 | 1.3% |
How to enable developer options
Reference: http://chobbang.com/85
Starting with Jelly Bean 4.2, developer options are not visible unless you enable them. They are enabled as follows.
- Nexus7: Applications > Settings > About tablet > Build number
- Ordinary Android phones: Applications > Settings > About phone > Build number
Click the build number box 3 times and a Toast box shows whether developer options are enabled.
How to install drivers
- How to install the Nexus 4 driver
- How to connect ADB for development on the Google Nexus series
- Installing the Nexus 7 USB driver
Describes how to install Android drivers.
MTP mode
These days, when Android phones are connected to a PC over USB, they connect using MTP mode.
MTP mode stands for "Media Transfer Protocol".
Perhaps for that reason, Windows 7 and Windows 8 come with a recent Media Player installed, so you can use MTP mode without installing a separate driver, but on Windows XP you must install Media Player version 11 or later to use MTP mode.
ADB driver
For the Nexus series, after installing the Android SDK, check /extras/google/usb_driver in the SDK folder. If the driver does not install using this directory, use Let me pick from a list of device drivers on my computer and select Android Composite ADB Interface.
How to root (Rooting)
- How to root Nexus Android 4.4.4 (via adb sideload)
- HOW TO ROOT OR UPDATE A NEXUS ANDROID USING ONLY OPEN SOURCE TOOLS (IN LINUX) 1
Android System architecture
Android-system-architecture.jpg
The following diagram shows the major components of the Android operating system. Each section is described in more detail below.
- Linux Kernel
- Android uses Linux for internal memory management, process management, networking, operating system services, and so on.
- Libraries
- The layer directly above the kernel holds Android's built-in libraries. These libraries are all written in C or C++, compiled for specific hardware, and preinstalled on the device. Their functionality is exposed to developers through the application framework above, and the important libraries are as follows.
- Serface manager: A library that combines Surfaces. A Surface can be understood as a single screen; it combines multiple program screens to provide various interesting graphic effects such as translucent windows and fancy transitions.
- Media Framework: Media codec support for video playback and for audio recording and playback.
- SQLite: A lightweight database engine.
- WebKit: A browser engine for displaying HTML content quickly.
- Since Android is Java-based, it uses JNI (Java Native Interface) to use programs written in C/C++
- Android Runtime
- The layer that contains the Dalvik VM (Virtual Machine) and the core Java libraries. Dalvik is Google's counterpart to Java, optimized and implemented for mobile devices, and it differs from typical Java as follows. The Dalvik VM runs .dex files, which are standard .class and .jar files converted at compile time. These files are smaller and more efficient than class files, so they suit environments that run on little memory and battery. The core Java libraries differ from the Java Standard Edition (Java SE) and Java Mobile Edition (Java ME) libraries, but overlap with them considerably.
- Application Framework
- Provides the building blocks (Building Block) used when making applications. Applications cannot call the lower kernel or system libraries directly; they request functionality through this layer. The important parts of the framework are the Activity manager, Content provider, Resource manager, and Notification manager. See #Android Application Component for details.
- Application
- The top layer of the Android architecture: the programs you can see. Diligently made in the Java programming language. This is where the programs you need to make live.
Android Application Component
Describes the four basic components that make up an Android application.
- Activity
- The visual UI. An application has one or more activities (activity), which work together for a combined UI, but each activity (activity) is independent.
- Each activity (activity) is given one default window it can draw (draw) in, and can also use additional windows.
- Service
- Runs in the background (background) without a UI (music playback, data processing, etc.). For example, a music player has one or more activities (activity) for selecting/playing/rewinding/skipping to the next track, but so that music keeps playing after the user leaves the player screen, playback must not be controlled by the activity (activity); the activity (activity) should start a service (service).
- It is also possible to connect to a running service (service); in the case of a music player, this interface lets the user stop/play/skip to the next track even during playback.
- Broadcast receiver
- An application has any number of broadcast receivers so it can receive broadcast announcements (low battery, time zone change, language change, etc.) and respond when needed.
- Content provider
- The center of any action that wants to get some information from an application. It exposes ways for external applications to fetch or update various data stored on the device, such as contacts, media, bookmarks, and call logs. You use a Content Provider or implement one yourself.
- During development, you specify which Content Provider to use with a URI, send queries with SQL statements, and browse the results with a Cursor. Content Providers are easy to make and easy to use, and they do what they are supposed to do without caring about the rest.
Installing the Android SDK
- Android SDK Download: http://developer.android.com/sdk/index.html
- Android SDK Install: http://developer.android.com/sdk/installing/index.html
| Android API Guides | |||||
(AndroidMenifest.xml) |
|
|
|
| |
Other topics
- Android Studio
- Android:Process
- Android:Debugging
- Android:Debugging:Wireless - How to debug wirelessly
- Android debug bridge (adb)
- Android:Decompile
- Android:Email
- Android:Filesystem
- Android:FFmpeg: FFmpeg on Android.
- Android:HttpClient
Java topics
- Encryption (MD5): Java.security.MessageDigest
Commandline Tools
Emulators
- Genymotion
- Andro VM
- Anbox
- Android-x86
- Shashlik
- ARChon
- Andy OS
- BlissOS
Gradle Build
Examples
- Android:Example: Simple Android examples.
- Java:Example: Simple Java examples.
- Java:Example:GlobalSetting: Manages setting (Setting) variables used globally.
- Android.opengl.GLSurfaceView#Example: Android GLSurfaceView Sample.
- Android:Example:DipCalc: Converts between Android dip and pixel units.
- Android:Example:DisplayInfo: Gets Android display device information.
- Android.content.SharedPreferences:Example: Save/Load Android user information (Preference).
- Android:Example:SpinnerDialog: How to display an Android SPINNER-TYPE dialog.
- Android:Example:Png2Mp4: Sample program that converts png images to mp4.
- Android:Example:MusicInfo: Sample class for getting music information on Android.
- Android:Example:DirectoryManager: Helps get the list of predefined directories available on Android.
- Android:Example:SocketServer: Sample example of making a Socket Server and Socket Client on Android.
- Java.lang.String:InitialConsonant: Example class for Hangul initial consonant search (InitialConsonant)
- Android:Example:ImageAdapter: (Geosoft Roadie Android) Image + string selectable (items can be selected) list box class.
- Android:Example:SpinnerBox: (Geosoft Roadie Android) Class that displays a spinner (Spinner) progress icon dialog box.
- Android:Example:NdkOpenGLESGeometry: (Geosoft Roadie Android) Geometry rendering using OpenGLES on the NDK side.
- SMS-Forward: Forwards incoming text messages to another phone, Telegram, or a webhook.
Design
- Icon#Android icon design - Android icon design.
Tutorials
- Android:SuperdroidTutorials: Superdroid basic Android tutorials.
Libraries
- AndroidAnnotations: AndroidAnnotations is an Open Source framework that speeds up Android development.
- GlowPadView: The GlowPadView library is basically Android’s Lock Ring.
- NewQuickAction3D: Create QuickAction dialog with Gallery3D app style.
- HttpClientAndroidLib: Apache's HttpClient 4.3 repackaged for Android.
- android-aac-enc: Encode AAC files in Android.
- ActionBarSherlock: ActionBarSherlock is an extension of the support library designed to facilitate the use of the action bar design pattern across all versions of Android with a single API.
- MagicTextView: Bringing the magic of Word Art to Android.
- Android-Scripting: Scripting Layer for Android brings scripting languages to Android.
- Android Asynchronous Http Client: A Callback-Based Http Client Library for Android
- SlidingMenu: An Android library that allows you to easily create applications with slide-in menus.
- Android Query (AQuery)
- Boost for Android: Android port of Boost C++ Libraries
- DragSortListView: Android ListView with drag and drop reordering.
- FadingActionBar
- Stetho: Inspect various information (Network, SQLite, SharedPreference, UI) using the Chrome browser's inspect UI
- KeakCanary
- HoloCircleSeekBar
- IndexableListView
Android:ViewPager
- AndroidViewPagerIndicator: Paging indicator widgets that are compatible with the
ViewPagerfrom the Android Support Library to improve discoverability of content. - DirectionalViewPager
- JazzyViewPager
Testing
- Robolectric: Test-Drive Your Android Code.
Multimedia
- ITEC-MediaPlayer: Android video player library with exact seek, DASH and GLES support.
- ExoPlayer: https://github.com/google/ExoPlayer
- MultimediaForAndroidLibrary: https://github.com/sonyxperiadev/MultimediaForAndroidLibrary
- Vitamio
Scripting
Favorite
- 7 best Android libraries that Java developer should know about
- Dagger: Dagger is a really lightweight dependency injection with no extra bells and whistles.
- LeakCanary: A memory leak detection library for Android and Java.
- ZXing: Using Barcodes and QR codes has become a standard already in the machine-readable data world.
- Retrofit: A type-safe HTTP client for Android and Java
- Libphonenumber: Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.
- Tape: A lightning fast, transactional, file-based FIFO for Android and Java.
- Jitpack.io: Easy to use package repository for Git
- Android-PullToRefresh: Creates Views with refresh functionality, such as ListView, ScrollView, ViewPager, and WebView.
- ActionBarSherlock: Lets you use the action bar, introduced in Honeycomb, on earlier versions too.
- AQuery: An Android version of jQuery.
- AndroidAnnotations: Annotations for fast development and shorter code on Android.
- Android-SmartImageView: An ImageView for asynchronous image loading.
- IndexableListView: Alphabet index feature for list views.
- QuickScroll: Alphabet index feature for list views (same as IndexableListView).
- StickyListHeaders: Lets you add Section Header information to a ListView.
- MenuDrawer: Lets you build a slide menu on the left or right.
- SlidingMenu: Lets you build a slide menu on the left or right (same as MenuDrawer).
- FadingActionBar: The action bar's alpha value changes with the header content when a list view is scrolled.
- DragSortListView: ListView Sorting.
- ListViewAnimations: Animations when scrolling a ListView (Ex. Google+).
- ViewPagerIndicator: ViewPager Indicator.
- PagerSlidingTabStrip: ViewPager Indicator (same as ViewPagerIndicator).
- JazzyViewPager: Applies animation effects when scrolling a ViewPager.
- ViewPager3D: Applies 3D effects when scrolling a ViewPager.
- DirectionalViewPager: Left-right and up-down scrolling for ViewPager.
- VerticalSeekBarAndroid: Vertical SeekBar.
- HoloCircleSeekBar: A circular SeekBar.
- MultiChoiceAdapter: Makes multiple selection easy in ListView and GridView.
- TwoWayGridView: Makes a GridView scroll horizontally and vertically.
- ScrollBarPanel: Creates a View next to the scroll bar (a feature seen in Path 2.0).
- ScaleImageView: An ImageView that can Zoom in/out with a Pinch action.
- Mp3VoiceRecorderSampleForAndroid: Sample project that saves recorded voice as MP3 on Android using AudioRecord and LAME.
Device
- Nexus7
- Nexus 5X
- Samsung S20 Ultra
Tools
Building an Android app in 2025
- Building an Android app in 2025 - DEV Community
- Build - gradle
- Build configuration- convention plugin
- Dependency management - version catalog
- Adopting build cache
- Build performance analysis - build-scan
- Module structure - split by feature
- Networking - retrofit
- json mapping - kotlinx serialization
- Persistent data storage - jetpack datastore, room
- DI - koin
- Image loader - coil
- UI - compose
- Communication between View and ViewModel - flow
- Code quality management - ktlint , konsist
- Unit testing - junit 4
Documentations
- 131014 Android Design Guideline
- An Android design guide Word file I made when I worked at Zekitalk
-
131014-Android_Design_Guideline.zip
See also
- Android Development Tools (ADT)
- Android application package (APK)
- Apktool (hacking & decompile)
Favorite site
- Android web site
- Android developer site
- Android developers blog
- Android GIT Source repository
- Wikipedia (en) brief description of Android
- Wikipedia (en) description of Android Software Development
- KAndroid (ko)
APK
- [Recommended] APKMirror - Free APK Downloads - Free and safe Android APK downloads
Tutorials
- Android Study table of contents
- [Recommended] Kunny's Android
- [Recommended] Korea Android: SDK Old (Korean)
Tools
Guide
- @Inject, @Test on Android
- Blindly following Android MVP - Google Architecture Model (video included)
- Android - Optimizing build time (70% reduction in build time)
- Android's 2D Canvas Rendering Pipeline
- Android game development tutorial - #5. Graceful termination of a Thread
- PAAD Chapter 11 - Advanced Android development
- Position of layout views
- [Recommended] Android: Signing a native application in debug mode in Eclipse
- Creating an application Keystore and signing in Eclipse
- Android: Screen Densities, Sizes, Configurations, and Icon Sizes
- [Recommended] Android: Summary of Device Screen terminology
- [Recommended] Resolution and dpi of Android devices, and source code to check them
- Designing for Android performance by Lee Dong-hun 9
- Attaching the Android SDK source in Eclipse 10
Related to Korean: 역공학 (Reverse engineering)
- Extracting AI models from mobile apps | GeekNews
- [Original] You wouldn't download an AI - by Altay Akkus - Altay's Blog
- Frida is a dynamic instrumentation tool that runs on almost any operating system; it can attach to a running process and change its behavior
App distribution
Articles
References
-
How_to_root_or_update_a_Nexus_Android_using_only_open_source_tools_-_Aaron_Horler.pdf ↩
-
AndroidDesignPreview-0.3.2.tar.gz ↩
-
DPI_Calculator-PPI_Calculator_html.zip ↩
-
Pro_Android_Cpp_with_the_NDK.pdf ↩
-
Wikiware-textcube.blogspot_-_Android_Application_Basic.pdf ↩
-
Android_Design_Downloads_20131106.zip ↩
-
Consideration-of-android-performance.pdf ↩
-
Android_sdk_connect_source.pdf ↩
- /e/OS
- Anbox
- AndEngine
- Android Development Tools
- Android Interface Definition Language
- Android KeyStore System
- Android Open Source Project
- Android Studio
- Android.app.DownloadManager
- Android.app.ProgressDialog
- Android.content.ContentResolver
- Android.content.SharedPreferences
- Android.content.SharedPreferences:Example
- Android.location.LocationManager
- Android.media.AudioManager
- Android.media.midi
- Android.media.ThumbnailUtils
- Android.os.Environment
- Android.os.PatternMatcher
- Android.os.PowerManager
- Android.os.StatFs
- Android.util.Log
- Android.view.GestureDetector
- Android.view.KeyEvent
- Android.view.WindowManager
- Android.widget.CheckBox
- Android.widget.EditText
- Android.widget.FrameLayout
- Android.widget.LinearLayout
- Android.widget.ListView
- Android.widget.ProgressBar
- Android.widget.RadioButton
- Android.widget.RelativeLayout
- Android.widget.TableLayout
- Android:9patch
- Android:ActivityLifeCycle
- Android:ActivityStackTrace
- Android:ArchLinux
- Android:Debugging
- Android:Debugging:Wireless
- Android:Decompile
- Android:Design
- Android:DevicePolicies
- Android:Email
- Android:Example
- Android:Example:DipCalc
- Android:Example:DirectoryManager
- Android:Example:DisplayInfo
- Android:Example:ImageAdapter
- Android:Example:MusicInfo
- Android:Example:NdkOpenGLESGeometry
- Android:Example:Png2Mp4
- Android:Example:SocketServer
- Android:Example:SpinnerBox
- Android:Example:SpinnerDialog
- Android:Filesystem
- Android:Gradle
- Android:HttpClient
- Android:JUnit
- Android:Locale
and 88 more