.APK
Android application package file. Each Android application is compiled and
packaged in a single file that includes all of the application’s code (.dex
file), resources, assets, and manifest file. The application package file can
have any name but must use the .apk extension. For example: myExampleAppname.apk.
For convenience, an application package file is often referred to as an “.apk”.
.DEX
Dalvik Executable. Compiled Android application code file. Android programs are
compiled into .dex files, which are in turn zipped into a single .apk file on
the device. .dex files can be created by automatically translating compiled
applications written in the Java programming language.
Action
An action is a description of something that an Intent sender wants done. An
action is a string value assigned to an Intent. Action strings can be defined
by Android or by a third-party developer. For example,
android.intent.action.VIEW for a Web URL, or com.example.rumbler.SHAKE_PHONE
for a custom application to vibrate the phone.
Activity
An activity is a single screen in an application, with supporting Java code,
derived from the Activity class. Most commonly, an activity is visibly
represented by a full screen window that can receive and handle UI events and
perform complex tasks, because of the Window it uses to render its window.
Though an Activity is typically full screen, it can also be floating or
transparent.
adb
Android Debug Bridge, a command-line debugging application included with the
SDK. It provides tools to browse the device, copy tools on the device, and
forward ports for debugging. If you are developing in Eclipse using the ADT
Plugin, adb is integrated into your development environment.
AndroidManifest.xml file
Every application must have an AndroidManifest.xml file (with precisely that
name) in its root directory of the source tree. The manifest presents essential
information about the application to the Android system, information the system
must have before it can run any of the application’s code.
Application
From a component perspective, an Android application consists of one or more
activities, services, listeners, and intent receivers. From a source file
perspective, an Android application consists of code, resources, assets, and a
single manifest. During compilation, these files are packaged in a single file
called an application package file (.apk).
Boot
In contrast to other Linux-based operating systems, Android has a boot
partition (containing the contents of a boot.img file), as opposed to a
direct-booting system. This partition contains a read-only ‘ramdisk’, and a
couple of other files. The ramdisk contains files critical to booting, such as
init.rc and default.prop. This ‘partition’ actually sets up the directory
structure of the device, having empty folders for /data, /dev, /proc, /sbin, /sys
and /system.
Bootloader
The bootloader, is firmware on the phone which runs on every startup. Sometimes
it may be desirable to change the version of the bootloader, or to load a
different bootloader entirely to enable different features or a completely
different OS. The current version of the bootloader can be viewed by entering
bootloader mode, the process of which is different for each and every device or
manufacturer.
Broadcast Receiver
An application class that listens for Intents that are broadcast, rather than
being sent to a single target application/activity. The system delivers a
broadcast Intent to all interested broadcast receivers, which handle the Intent
sequentially.
Canvas
A drawing surface that handles compositing of the actual bits against a Bitmap
or Surface object. It has methods for standard computer drawing of bitmaps,
lines, circles, rectangles, text, and so on, and is bound to a Bitmap or
Surface. Canvas is the simplest, easiest way to draw 2D objects on the screen.
However, it does not support hardware acceleration, as OpenGL ES does. The base
class is Canvas.
Content Provider
A data-abstraction layer that you can use to safely expose your application’s
data to other applications. A content provider is built on the ContentProvider
class, which handles content query strings of a specific format to return data
in a specific format.
Dalvik
The Android platform’s virtual machine. The Dalvik VM is an interpreter-only
virtual machine that executes files in the Dalvik Executable (.dex) format, a
format that is optimized for efficient storage and memory-mappable execution.
The virtual machine is register-based, and it can run classes compiled by a
Java language compiler that have been transformed into its native format using
the included “dx” tool. The VM runs on top of Posix-compliant operating
systems, which it relies on for underlying functionality (such as threading and
low level memory management). The Dalvik core class library is intended to
provide a familiar development base for those used to programming with Java
Standard Edition, but it is geared specifically to the needs of a small mobile
device.
Data
The data partition on the device contains the user-related data, such as
installed applications and settings for those apps, as well as your SQLite
database containing Android settings and messages. Normally, the directory
/data/app is off-limits through the ‘adb shell’ command, as well as other
terminal applications that can run on the device, since this directory contains
the apk files for apps. On a rooted phone, using the ‘su’ command will allow
full access to this partition. This partition can be flashed using Fastboot or
Nandroid.
DDMS
Dalvik Debug Monitor Service, a GUI debugging application included with the
SDK. It provides screen capture, log dump, and process examination
capabilities. If you are developing in Eclipse using the ADT Plugin, DDMS is
integrated into your development environment.
Deodex
Deodex is the process of combining the already optimized application elements
found in the .odex file and compressing them into the .apk file with the rest
of the application. The main reason for doing this allows for application and
ROM themers to edit the graphics and settings in the application, whereas they
would be unable to in the .odex file. There is really no reason to deodex an
application and/or ROM other than to allow theming or other modifications of an
application which you do not have access to the sources of.
Dialog
A floating window that that acts as a lightweight form. A dialog can have
button controls only and is intended to perform a simple action (such as button
choice) and perhaps return a value. A dialog is not intended to persist in the
history stack, contain complex layout, or perform complex actions. Android provides
a default simple dialog for you with optional buttons, though you can define
your own dialog layout. The base class for dialogs is Dialog.
Drawable
A compiled visual resource that can be used as a background, title, or other
part of the screen. A drawable is typically loaded into another UI element, for
example as a background image. A drawable is not able to receive events, but
does assign various other properties such as “state” and scheduling, to enable
subclasses such as animation objects or image libraries. Many drawable objects
are loaded from drawable resource files — xml or bitmap files that describe the
image. Drawable resources are compiled into subclasses of
android.graphics.drawable.
Fastboot
Fastboot is a means which allows the user to execute or Flash an img file to
their device. Some devices and/or bootloaders allow this access, while
others do not. All Nexus branded devices allow such access when unlocked.
Flash
Flashing is the process of writing data to the internal memory on your phone.
Normally, you would flash a ROM image to the phone, which would give you a
different version of system software on your phone. Flashing can also refer to
updating/writing to any of the other parts of the phone, such as the SPL, Radio
etc.
Flash Memory
Flash memory, also known as NAND memory, is nonvolatile – keeping information
even when the device is off. Flash memory in the device is equivalent to the
hard drive in a computer. This is where the device’s operating system
(sometimes called firmware) and applications are stored. Flash memory is slower
than RAM, but is (almost always) faster than SD cards.
Logcat
While in adb (see ADB), type in “adb logcat > logcat.txt”. This will help
you when resolving issues and bugs. There are also tools in the market you can
use for this, one of which is called aLogcat. It can show different categories
(severity of errors ect.) too, which is something adb logcat cannot do.
Market (also Play Store)
The market on Android is a place where you can purchase or download applications
for your phone. When you download through the market, the installation process
is transparent (as in you don’t have to deal with the APK files yourself), and
there is the facility to rate apps and post comments which are visible to other
users. Frequently, the developers of apps actually take onboard the feedback in
the comments (mainly the smaller apps with slightly less feedback to sift
through).
When an app is installed from the market, it is copied to
‘/data/app/apkname.apk’, as the act of ‘installing’. An app can store its data
in the folder ‘/data/data/apkname’. It is possible to clear the data stored by
an application by using the Manage Applications feature in Settings |
Applications | Manage Applications.
Intent
A message object that you can use to launch or communicate with other
applications/activities asynchronously. An Intent object is an instance of
Intent. It includes several criteria fields that you can supply, to determine
what application/activity receives the Intent and what the receiver does when
handling the Intent. Available criteria include the desired action, a category,
a data string, the MIME type of the data, a handling class, and others. An
application sends an Intent to the Android system, rather than sending it
directly to another application/activity. The application can send the Intent
to a single target application or it can send it as a broadcast, which can in
turn be handled by multiple applications sequentially. The Android system is
responsible for resolving the best-available receiver for each Intent, based on
the criteria supplied in the Intent and the Intent Filters defined by other
applications.
Intent Filter
A filter object that an application declares in its manifest file, to tell the
system what types of Intents each of its components is willing to accept and
with what criteria. Through an intent filter, an application can express
interest in specific data types, Intent actions, URI formats, and so on. When
resolving an Intent, the system evaluates all of the available intent filters
in all applications and passes the Intent to the application/activity that best
matches the Intent and criteria.
Layout Resource
An XML file that describes the layout of an Activity screen.
Manifest File
An XML file that each application must define, to describe the application’s
package name, version, components (activities, intent filters, services),
imported libraries, and describes the various activities, and so on.
Nandroid
Nandroid is used to backup or restore backups from Recovery. You can chose to
either do a regular backup (Phone only) or a backup + sd-ext (Phone + Apps2sd
ext.)Both will backup your whole system, the second will include apps saved on
your sdcard’s sd-ext.
Nine-patch / 9-patch / Ninepatch image
A resizeable bitmap resource that can be used for backgrounds or other images
on the device.
Odex
Odex stands for “Optimized Dalvik Executable” file. The Android system, as
identified above, utilizes compressed data stored in the .apk file at runtime.
To speed up this process, the most critical elements of application will be
placed uncompressed in an .odex file, thus enabling the Android OS to quickly
interpret that important information before it continues to parse the rest of
the application. Stock ROMs will come from the manufacturer as “odexed”,
meaning that the application(s) will have a .apk file and an .odex file, i.e.
Calendar.apk and Calendar.odex.
OpenGL ES
Android provides OpenGL ES libraries that you can use for fast, complex 3D
images. It is harder to use than a Canvas object, but better for 3D objects.
The android.opengl and javax.microedition.khronos.opengles packages expose
OpenGL ES functionality.
Radio
The Radio on a mobile phone is the part of the phone that deals with mobile
connections. It handles talking to the CDMA/GSM/LTE/3G/4G network, Bluetooth,
WiFi and GPS. The radio contains software that controls how it operates, and
newer versions of radio firmware are made available from time to time via
system updates. These updates are transparent to the user, although users who
elect to install custom software can update their radio using an update.zip
file made available by members of the modding community.
Flashing the radio is
potentially risky, and you should NEVER pull the battery out of a phone that is
flashing the radio. If you do so, it is possible your phone will be bricked.
Nevertheless, it can give improved battery life, signal strength and data
performance, so is often done by users moving to later versions of ROMs. Care
should be taken to only flash the correct type of radio to a phone. NEVER
attempt to flash a CDMA phone with a GSM radio or vice-versa. It is likely you
will brick the phone if you attempt to do so.
Recovery
The recovery partition is a boot-mode for your phone that allows you to wipe
your settings from the Data partition of the phone (a hard wipe), or perform an
update using an update.zip file on the root of the microSD card. It is common
(although not necessary) to flash a patched Recovery image, such as TWRP or
ClockworkMod Recovery. This allows you to run Nandroid backup from the device,
and flash modifications, such as files to the device, essentially becoming a
means to install software to the device. Recovery mode is separate from
‘normal’ mode, and can be entered by holding down home whilst turning the phone
on.
Resources
Nonprogrammatic application components that are external to the compiled
application code, but which can be loaded from application code using a
well-known reference format. Android supports a variety of resource types, but
a typical application’s resources would consist of UI strings, UI layout
components, graphics or other media files, and so on. An application uses
resources to efficiently support localization and varied device profiles and
states. For example, an application would include a separate set of resources
for each supported local or device type, and it could include layout resources
that are specific to the current screen orientation (landscape or portrait).
The resources of an application are always stored in the res/* subfolders of
the project.
ROM
ROM is literally “read-only memory” but its usage has changed over time. Today
ROM can refer to the non-volatile area of a device’s flash memory on which
read-only data resides or the packed image to be written to that flash area.
Root
Root is the name of the highest level superuser (su) on Unix-like systems such
as Android. The root user, and applications run by the root user, have
administrative access to protected files and services which makes it dangerous
for normal daily use.
A ‘rooted’ device is
one which has been hacked to provide privilege escalation from a standard user
to superuser. Rooting a device is usually the first step in installing cooked
ROMs.
S-OFF/S-ON
This refers to an unlocked/locked NAND drive. HTC locks the NAND on their
phones to prevent writing to the system partition. S-OFF can generally be
obtained by an exploit, by flashing an engineering SPL, or by using a process
put in place by HTC.
Service
An object of class Service that runs in the background (without any UI
presence) to perform various persistent actions, such as playing music or
monitoring network activity.
SPL
The Secondary Program Loader is a piece of bootcode that initiates the startup
of the phone, displaying the initial splash screen for the device, and loading
the initial files from ROM.
It checks to see if a
button combination is pressed on bootup (such as that to enter Recovery Mode or
the bootloader), and loads the relevant system software. If no special
instruction is given by holding keys, the bootloader loads the normal system
software by initializing the boot process from the boot partition.
Flashing your SPL is
risky, as the process failing will probably result in a broken, or bricked
phone, since the SPL is executed very early on in the boot process, and any
error here will prevent access to the recovery or bootloader features.
If you do flash the
SPL though, it unlocks the Carrier-ID CID from the device, essentially allowing
any RUU to be installed to the device, and allows flashing alternative or
custom bootscreens.
Stock
The term stock is often used to refer to a file or part of the software which
is unmodified or untouched by developers. For example, a stock ROM would be one
which was produced by HTC or Samsung and which has not been modified or rooted
by someone. The term is often used when comparing performance of different
ROMs, as a way to refer to the phone as it came out the box.
SU
su (substitute user) is a Linux command which, when run without a username
parameter, gives the user full ‘root’ permissions. By default, this command
binary (ie. Linux equivalent of an executable file) is not included on Android
systems, but the process of “rooting” a phone copies this file to the
‘/system/bin/’ directory thereby enabling the command. Since root privileges
can be abused by malicious applications it’s highly recommended to install an
app to grant and manage access to su, similar to UAC on Windows. Many ROMs
include the app called “SuperSU” for this.
Surface
An object of type Surface representing a block of memory that gets composited
to the screen. A Surface holds a Canvas object for drawing, and provides
various helper methods to draw layers and resize the surface. You should not
use this class directly; use SurfaceView instead.
SurfaceView
A View object that wraps a Surface for drawing, and exposes methods to specify
its size and format dynamically. A SurfaceView provides a way to draw
independently of the UI thread for resource-intensive operations (such as games
or camera previews), but it uses extra memory as a result. SurfaceView supports
both Canvas and OpenGL ES graphics. The base class is SurfaceView.
System
The /system directory on your device is where the main operational software for
the Android OS is stored. It has a number of sub-directories of which
/system/apps (where application apk’s are stored) is probably the only one
users would have need to access. The /system folder is read-only by default and
needs remounted via ‘adb’ to allow write access.
Theme
A set of properties (text size, background color, and so on) bundled together
to define various default display settings. Android provides a few standard
themes, listed in R.style (starting with “Theme_”).
Update.zip
An update.zip (does not have to actually be called update.zip if you have a
patched Recovery image) is a file containing some files which will be copied to
the phone’s internal memory. Normally, a new system update or ROM is stored in
the file, but update.zip files are commonly used to install modifications such
as themes or applications that are installed on the System partition to prevent
uninstallation.
To flash one of these
files, which commonly would contain a custom ROM for your phone, you would boot
your phone to a patched recovery image (whether using Fastboot, or the
home+power method if you have a patched Recovery image flashed on your phone)
Update.zip files are
cryptographically signed, and more information on how to sign your own files
can be found online.
URIs in Android
Android uses URI strings as the basis for requesting data in a content provider
(such as to retrieve a list of contacts) and for requesting actions in an
Intent (such as opening a Web page in a browser). The URI scheme and format is
specialized according to the type of use, and an application can handle
specific URI schemes and strings in any way it wants. Some URI schemes are
reserved by system components. For example, requests for data from a content
provider must use the content://. In an Intent, a URI using an http:// scheme
will be handled by the browser.
View
An object that draws to a rectangular area on the screen and handles click,
keystroke, and other interaction events. A View is a base class for most layout
components of an Activity or Dialog screen (text boxes, windows, and so on). It
receives calls from its parent object (see viewgroup, below)to draw itself, and
informs its parent object about where and how big it would like to be (which
may or may not be respected by the parent).
Viewgroup
A container object that groups a set of child Views. The viewgroup is
responsible for deciding where child views are positioned and how large they
can be, as well as for calling each to draw itself when appropriate. Some
viewgroups are invisible and are for layout only, while others have an
intrinsic UI (for instance, a scrolling list box). Viewgroups are all in the
widget package, but extend ViewGroup.
Widget
One of a set of fully implemented View subclasses that render form elements and
other UI components, such as a text box or popup menu. Because a widget is
fully implemented, it handles measuring and drawing itself and responding to
screen events. Widgets are all in the android.widget package.
Window
In an Android application, an object derived from the abstract class Window
that specifies the elements of a generic window, such as the look and feel
(title bar text, location and content of menus, and so on). Dialog and Activity
use an implementation of this class to render a window. You do not need to
implement this class or use windows in your application.
Zipalign
zipalign is an archive alignment tool that provides important optimization to
Android application (.apk) files. The purpose is to ensure that all
uncompressed data starts with a particular alignment relative to the start of
the file. Specifically, it causes all uncompressed data within the .apk, such
as images or raw files, to be aligned on 4-byte boundaries. The benefit is a
reduction in the amount of RAM consumed when running the application.