Está en la página 1de 11

HISTORY

On March 9, 2016, ahead of the Google I/O developer conference, Google released the first beta of
Android "N" as part of a new "Android Beta Program" intended for testing by developers and
enthusiasts before official release "this summer". The developer preview builds were compatible with
only current Google Nexus devices; the 5X, 6P, 6, 9, Pixel C, and Nexus Player. The "Android Beta
Program" that was introduced allows testers to opt-in for over-the-air updates to new beta versions
as they are released.[5]

On April 13, 2016, Android N Beta Preview 2 was released. [7] Google further discussed Android "N"
during the I/O keynote on May 18, 2016, and unveiled its new virtual reality platform Daydream. Beta
Preview 3, the first preview release deemed suitable for wider public beta testing, was released at
this time. Google also announced that it would hold a contest to determine the official release name
of the operating system.[8][9][10]

Beta Preview 4 was released on June 15, 2016. [11][12] On June 30, 2016, Google announced that N's
release name would be "Nougat"; it was also confirmed that Nougat would be version 7.0 of Android.
[13][14][15]

The final Beta Preview, 5, was released on July 18, 2016.[16]

Android 7.0 was officially released on August 22, 2016, with the Nexus 6, Nexus 5X, Nexus
6P, Nexus 9, Nexus Player, Pixel C and General Mobile 4G as the first devices to receive the
update.[6]

A post-release update known as Android 7.1 was pre-loaded onto Google's Pixel and Pixel XL
smartphones released in October 2016; the new version adds support for the Google Daydream VR
platform, image keyboards, expanded emoji support (including male and female versions of
gendered emoji), support for actions to be displayed in menus on home screen app shortcuts, and
other new features. A preview of 7.1 for existing Nexus devices was released via Android Beta
Program later in the month,[17] and officially released as Android 7.1.1 on December 5, 2016. [18][19][20]

ARCHITECTURE
The Linux Kernel
The foundation of the Android platform is the Linux kernel. For example, the Android Runtime
(ART) relies on the Linux kernel for underlying functionalities such as threading and low-level
memory management.

Using a Linux kernel allows Android to take advantage of key security features and allows device
manufacturers to develop hardware drivers for a well-known kernel.

Hardware Abstraction Layer (HAL)


The hardware abstraction layer (HAL) provides standard interfaces that expose device hardware
capabilities to the higher-level Java API framework. The HAL consists of multiple library modules,
each of which implements an interface for a specific type of hardware component, such as
the camera or bluetooth module. When a framework API makes a call to access device hardware,
the Android system loads the library module for that hardware component.

Android Runtime
For devices running Android version 5.0 (API level 21) or higher, each app runs in its own process
and with its own instance of the Android Runtime (ART). ART is written to run multiple virtual
machines on low-memory devices by executing DEX files, a bytecode format designed specially for
Android that's optimized for minimal memory footprint. Build toolchains, such as Jack, compile Java
sources into DEX bytecode, which can run on the Android platform.

Some of the major features of ART include the following:

Ahead-of-time (AOT) and just-in-time (JIT) compilation

Optimized garbage collection (GC)

Better debugging support, including a dedicated sampling profiler, detailed diagnostic


exceptions and crash reporting, and the ability to set watchpoints to monitor specific fields

Prior to Android version 5.0 (API level 21), Dalvik was the Android runtime. If your app runs well on
ART, then it should work on Dalvik as well, but the reverse may not be true.

Android also includes a set of core runtime libraries that provide most of the functionality of the Java
programming language, including some Java 8 language features, that the Java API framework
uses.

Native C/C++ Libraries


Many core Android system components and services, such as ART and HAL, are built from native
code that require native libraries written in C and C++. The Android platform provides Java
framework APIs to expose the functionality of some of these native libraries to apps. For example,
you can accessOpenGL ES through the Android frameworks Java OpenGL API to add support for
drawing and manipulating 2D and 3D graphics in your app.
If you are developing an app that requires C or C++ code, you can use the Android NDK to access
some of these native platform libraries directly from your native code.

Java API Framework


The entire feature-set of the Android OS is available to you through APIs written in the Java
language. These APIs form the building blocks you need to create Android apps by simplifying the
reuse of core, modular system components and services, which include the following:

A rich and extensible View System you can use to build an apps UI, including lists, grids,
text boxes, buttons, and even an embeddable web browser

A Resource Manager, providing access to non-code resources such as localized strings,


graphics, and layout files

A Notification Manager that enables all apps to display custom alerts in the status bar

An Activity Manager that manages the lifecycle of apps and provides a common navigation
back stack

Content Providers that enable apps to access data from other apps, such as the Contacts
app, or to share their own data

Developers have full access to the same framework APIs that Android system apps use.

System Apps
Android comes with a set of core apps for email, SMS messaging, calendars, internet browsing,
contacts, and more. Apps included with the platform have no special status among the apps the user
chooses to install. So a third-party app can become the user's default web browser, SMS
messenger, or even the default keyboard (some exceptions apply, such as the system's Settings
app).

The system apps function both as apps for users and to provide key capabilities that developers can
access from their own app. For example, if your app would like to deliver an SMS message, you
don't need to build that functionality yourselfyou can instead invoke whichever SMS app is already
installed to deliver a message to the recipient you specify.

VERSIONS

What's in Android 7.1.1?


Android 7.1.1 is an incremental release that builds on the features already available on Pixel
and Pixel XL devices, adding a handful of new features for consumers as well as
optimizations and bug fixes on top of the base Android 7.1 platform (API level 25).

If you haven't explored the developer features, you'll want to take a look at app
shortcuts, round icon resources, and image keyboard support, among others -- you can see
the full list of developer features here. For details on API Level 25, check out the API diffs and
the API reference.

VERSION 7.1.2

You can find an overview of all of the Android Nougat developer resources here, including
details on the core Android 7.0 Nougat behavior changes and developer features.c

The next maintenance release for Android Nougat -- 7.1.2 -- is just around the corner! To get
the recipe just right, starting today, we're rolling out a public beta to eligible devices that are
enrolled in the Android Beta Program, including Pixel and Pixel XL, Nexus 5X, Nexus Player,
and Pixel C devices. We're also preparing an update for Nexus 6P that we expect to release
soon.

Android 7.1.2 is an incremental maintenance release focused on refinements, so it includes


a number of bugfixes and optimizations, along with a small number of enhancements for
carriers and users.

If you'd like to try the public beta for Android 7.1.2, the easiest way is through the Android
Beta Program. If you have an eligible device that's already enrolled, you're all set -- your
device will get the public beta update in the next few days and no action is needed on your
part. If your device isn't enrolled, it only takes a moment to visit android.com/beta and opt-in
your eligible Android phone or tablet -- you'll soon receive the public beta update over-the-
air. As always, you can also download and flash this update manually.

We're expecting to launch the final release of the Android 7.1.2 in just a couple of months,
Like the beta, it will be available for Pixel, Pixel XL, Nexus 5X, Nexus 6P, Nexus Player, and
Pixel C devices. Meanwhile we welcome your feedback or requests in the Android Beta
community as we work towards the final over-the-air update. Thanks for being part of the
public beta!

Scheduling algorithms

Scheduling in Android

Upfront read the post from Dianne Hackborn about scheduling

Normal scheduling

Android is based on Linux and uses the Linux kernels scheduling


mechanisms for determining scheduling policies. This is also true for Java
code and threads.
The Linuxs time sliced scheduling policy combines static and dynamic
priorities. Processes can be given an initial priority from 19 to -20 (very low
to very high priority). This priority will assure that higher priority processes
will get more CPU time when when needed. These level are however
dynamic, low level priority tasks that do not consume their CPU time will fine
their dynamic priority increased. This dynamic behaviour results is an overall
better responsiveness.

In terms of dynamic priorities it is ensured that lower priority processes will


always have a lower dynamic priority than processes with real-time priorities.

Android uses two different mechanisms when scheduling the Linux kernel to
perform process level scheduling

real-time scheduling

The standard Linux kernel provides two real-time scheduling policies,


SCHED_FIFO and SCHED_RR. The main real-time policy is SCHED_FIFO. It
implements a first-in, first-out scheduling algorithm. When a SCHED_FIFO
task starts running, it continues to run until it voluntarily yields the
processor, blocks or is preempted by a higher-priority real-time task. It has
no timeslices. All other tasks of lower priority will not be scheduled until it
relinquishes the CPU. Two equal-priority SCHED_FIFO tasks do not preempt
each other. SCHED_RR is similar to SCHED_FIFO, except that such tasks are
allotted timeslices based on their priority and run until they exhaust their
timeslice. Non-real-time tasks use the SCHED_NORMAL scheduling policy
(older kernels had a policy named SCHED_OTHER).

see Documentation/cgroups/cgroups.txt

http://www.kernel.org/doc/Documentation/scheduler/sched-rt-group.txt

The default Android kernel is configured to allow group scheduling of real


time processes and the file system to control this is mounted under
/dev/cpuctl.

Android uses two different scheduling classes (using linux cgroups)


bg_non_interactive and default (foreground). The configuration is that
bg_non_interactive is low priority and can maximum
utilize ~5% of the cpu (including all background tasks) and foreground
~95%. Forground means either an Activity or a service that is started
foregound.
At startup Services are running in bg_non_interactive unless they have been
elevated to foreground scheduling group using startForeground (HMI
applications are always set to foreground).

Binder and priorities

The binder mechanism also propagates priorities. That is the binder process
called will run with the same priority as the caller.

JVM thread and process scheduling

An Android system will have a set of unix processes running . Some are
native processes but many will be processes that run a Java virtual machine.
These processes usually will be multi threaded, All android threads are native
pthreads (no green threads). There are two ways to change the priority
handling one by
Calling Thread.setPriority that is part of the standard Java API and contains a
value from MIN_PRIORITY(1) to MAX_PRIORITY(10).As all threads are pthreads
these priorities will be mapped to unix process priorities (MIN_PRIORITY being
19 and MAX_PRIORITY -8).

-Combined dalvik/vm/Thread.c and -frameworks/base/include/utils/threads.h


Thread.priority , Java name , Android property name , Unix priority
1 MIN_PRIORITY ANDROID_PRIORITY_LOWEST, 19
2 ANDROID_PRIORITY_BACKGROUND + 6 16
3 ANDROID_PRIORITY_BACKGROUND + 3 13
4 ANDROID_PRIORITY_BACKGROUND 10
5 NORM_PRIORITY ANDROID_PRIORITY_NORMAL 0
6 ANDROID_PRIORITY_NORMAL - 2 -2
7 ANDROID_PRIORITY_NORMAL - 4 -4
8 ANDROID_PRIORITY_URGENT_DISPLAY + 3 -5
9 ANDROID_PRIORITY_URGENT_DISPLAY + 2 -6
10 MAX_PRIORITY ANDROID_PRIORITY_URGENT_DISPLAY -8

The second way to set priorities is to call


android.os.Process.setThreadPriority(). This allows to set the pririty to higer
priorities for that
Declare: in your AndroidManifest and call
Process.setThreadPriority(Process.myTid(),
Process.THREAD_PRIORITY_URGENT_DISPLAY )

frameworks/base/include/utils/threads.h
ANDROID_PRIORITY_LOWEST = 19,

/* use for background tasks */


ANDROID_PRIORITY_BACKGROUND = 10,

/* most threads run at normal priority */


ANDROID_PRIORITY_NORMAL = 0,

/* threads currently running a UI that the user is interacting with */


ANDROID_PRIORITY_FOREGROUND = -2,

/* the main UI thread has a slightly more favorable priority */


ANDROID_PRIORITY_DISPLAY = -4,
/* ui service treads might want to run at a urgent display (uncommon) */
ANDROID_PRIORITY_URGENT_DISPLAY = -8,

/* all normal audio threads */


ANDROID_PRIORITY_AUDIO = -16,

/* service audio threads (uncommon) */


ANDROID_PRIORITY_URGENT_AUDIO = -19,

/* should never be used in practice. regular process might not


* be allowed to use this level */
ANDROID_PRIORITY_HIGHEST = -20,

ANDROID_PRIORITY_DEFAULT = ANDROID_PRIORITY_NORMAL,
ANDROID_PRIORITY_MORE_FAVORABLE = -1,
ANDROID_PRIORITY_LESS_FAVORABLE = +1,

Advantages

Android Google Developer

The biggest advantage of the Android is Google. Android operating system is owned by Google.
Google is one of the most trusted and reputed product on the internet. The name Google provide
lots of trust for the users to buy Android device.

Android Users Billion of USERS


Android is the most used mobile operating system. It is used by over billion people. Android is
also the fastest growing operating system on the earth. Android has billions of users. A number of
users increase the number of applications and software under the name of Android.

Android Multitasking

Most of us love this feature of the android. Users can do lots of tasks at once. Users can open
several applications at once and manage them all too. Android has great UI which makes easy for
users to do multitasking.

Google Play Store App free Download for Android Millions of Apps

The best part of the Android is the availability of millions of applications. Google Play store is
reported as worlds largest mobile store. It has almost everything from movies to games and
much more. These things can be easily downloaded and accessed through Android phone.

Read more: How to Get Paid Apps for Free on Android Without Root Download latest
Version [2016]

Android Notification Easy Access

One can easily get access to their notification of any kind of SMS, emails or calls on their home
screen or the notification panel of the android phone. Its UI makes easy for the user to view more
than 5 Android notification at once. The user can view all the notification on the top bar.

Android Widget Several Widgets

Android operating system has plenty of widgets. This widget makes the user experience much
better and helps in doing multitasking. You can add any widget depending upon the feature you
want on your home screen. You can see notifications, messages, and much more use without
even opening applications.

Disadvantages of Android Operating System1

If Android operating system has a lot of advantages. Then, It surely has several disadvantages.
We have done research and found few factor which shows several disadvantages of Android.

Android Advertisement pop-ups

Applications are freely available in the Google play store. But still, these applications start
showing tons of advertisements on the notification bar and over the application. This
advertisement is very irritating and creates the huge problem in managing your Android phone.

Android require Gmail ID


You cant access Android device. If you have forgotten your email ID or password. As I told you
above, that Android is Google property. So, you need to have Gmail ID to access Android.
Google ID is very useful in unlocking Android phone lock too.

Android Battery Drain

Android handset is considered as one of the most battery consuming operating systems. In the
android operating system, there are plenty of process running in the background which results in
the quick draining of the battery. It is hard to stop these applications as the majority of them are
system applications.

Android Malware/Virus/Security

Android device is not considered safe as compared to other applications. It is easy to target
any Android phone and every day millions of attempt are done on Android phone. Hackers keep
on trying to steal your personal information.

También podría gustarte