Docs: Migrating platform docs to /guide/platform/ with new landing page

Bug:29575457
Change-Id: I6d576e9dd28132fcf7e6e017187f30702066c2af
This commit is contained in:
Adarsh Fernando
2016-06-28 19:32:43 -07:00
parent 32e428e78e
commit cf150dd245
22 changed files with 380 additions and 241 deletions

View File

@@ -260,27 +260,6 @@ toc:
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Funciones del lenguaje Java 8
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Actualizaciones para Android for Work
path: /preview/features/afw.html
- title: Acceso a directorios determinados

View File

@@ -260,27 +260,6 @@ toc:
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Fitur Bahasa Java 8
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Pembaruan Android for Work
path: /preview/features/afw.html
- title: Scoped Directory Access

View File

@@ -260,27 +260,6 @@ toc:
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Java 8 の言語機能
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Android for Work のアップデート
path: /preview/features/afw.html
- title: 特定のディレクトリへのアクセス

View File

@@ -260,27 +260,6 @@ toc:
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Java 8 언어 기능
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Android for Work 업데이트
path: /preview/features/afw.html
- title: 범위가 지정된 디렉터리 액세스

View File

@@ -260,27 +260,6 @@ toc:
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Recursos de linguagem do Java 8
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Atualizações no Android for Work
path: /preview/features/afw.html
- title: Acesso a diretórios com escopo

View File

@@ -260,27 +260,6 @@ toc:
value: ICU4J Android フレームワーク API
- name: zh-tw-lang
value: ICU4J Android フレームワーク API
- title: Java 8 语言功能
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 の機能
- name: zh-tw-lang
value: Java 8 の機能
- title: Android for Work Updates
path: /preview/features/afw.html
- title: 作用域目录访问

View File

@@ -1220,4 +1220,5 @@ redirects:
to: /guide/topics/ui/notifiers/notifications.html
- from: /preview/features/multilingual-support.html
to: /guide/topics/resources/multilingual-support.html
- from: /preview/j8-jack.html
to: /guide/platform/j8-jack.html

View File

@@ -9,6 +9,33 @@ toc:
- title: System Permissions
path: /guide/topics/security/permissions.html
- title: Platform Architecture
path: /guide/platform/index.html
section:
- title: Use Java 8 Language Features
path: /guide/platform/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Verifying App Behavior on the Android Runtime (ART)
path: /guide/practices/verifying-apps-art.html
- title: App Components
path: /guide/components/index.html
section:
@@ -422,5 +449,3 @@ toc:
path: /guide/practices/screen-compat-mode.html
- title: Supporting Tablets and Handsets
path: /guide/practices/tablets-and-handsets.html
- title: Verifying App Behavior on ART
path: /guide/practices/verifying-apps-art.html

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

View File

@@ -0,0 +1,217 @@
page.title=Platform Architecture
page.keywords=platform,architecture,framework
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>
In this document
</h2>
<ol>
<li>
<a href="#linux-kernel">The Linux Kernel</a>
</li>
<li>
<a href="#hal">Hardware Abstraction Layer (HAL)</a>
</li>
<li>
<a href="#art">Android Runtime</a>
</li>
<li>
<a href="#native-libs">Native C/C++ Libraries</a>
</li>
<li>
<a href="#api-framework">Java API Framework</a>
</li>
<li>
<a href="#system-apps">System Apps</a>
</li>
</ol>
</div>
</div>
<p>
Android is an open source, Linux-based software stack created for a wide
array of devices and form factors. The following diagram shows the major
components of the Android platform.
</p>
<img src="/guide/platform/images/android-stack_2x.png" alt="" width=
"519">
<p class="img-caption">
<strong>Figure 1.</strong> The Android software stack.
</p>
<h2 id="linux-kernel">
The Linux Kernel
</h2>
<p>
The foundation of the Android platform is the Linux kernel. For example,
<a href="#art">the Android Runtime (ART)</a> relies on the Linux kernel for
underlying functionalities such as threading and low-level memory management.
</p>
<p>
Using a Linux kernel allows Android to take advantage of <a href=
"https://source.android.com/security/overview/kernel-security.html">key
security features</a> and allows device manufacturers to develop hardware
drivers for a well-known kernel.
</p>
<h2 id="hal">
Hardware Abstraction Layer (HAL)
</h2>
<p>
The <a href=
"https://source.android.com/devices/index.html#Hardware%20Abstraction%20Layer">
hardware abstraction layer (HAL)</a> provides standard interfaces that expose
device hardware capabilities to the higher-level <a href=
"#api-framework">Java API framework</a>. The HAL consists of multiple library
modules, each of which implements an interface for a specific type of hardware
component, such as the <a href=
"https://source.android.com/devices/camera/index.html">camera</a> or <a href=
"https://source.android.com/devices/bluetooth.html">bluetooth</a> module.
When a framework API makes a call to access device hardware, the Android
system loads the library module for that hardware component.
</p>
<h2 id="art">
Android Runtime
</h2>
<p>
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 <a href=
"http://source.android.com/devices/tech/dalvik/index.html">Android Runtime
(ART)</a>. 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 <a href="https://source.android.com/source/jack.html">Jack</a>, compile
Java sources into DEX bytecode, which can run on the Android platform.
</p>
<p>
Some of the major features of ART include the following:
</p>
<ul>
<li>Ahead-of-time (AOT) and just-in-time (JIT) compilation
</li>
<li>Optimized garbage collection (GC)
</li>
<li>Better debugging support, including a dedicated sampling profiler,
detailed diagnostic exceptions and crash reporting, and the ability to set
watchpoints to monitor specific fields
</li>
</ul>
<p>
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
<a href="/guide/platform/verifying-apps-art.html">the reverse may not be
true</a>.
</p>
<p>
Android also includes a set of core runtime libraries that provide most of
the functionality of the Java programming language, including some <a href=
"/guide/platform/j8-jack.html">Java 8 language features</a>, that the Java
API framework uses.
</p>
<h2 id="native-libs">
Native C/C++ Libraries
</h2>
<p>
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 access
<a href="/guide/topics/graphics/opengl.html">OpenGL ES</a> through the
Android frameworks <a href=
"/reference/android/opengl/package-summary.html">Java OpenGL API</a> to add
support for drawing and manipulating 2D and 3D graphics in your app.
</p>
<p>
If you are developing an app that requires C or C++ code, you can use the
<a href="/ndk/index.html">Android NDK</a> to access some of these <a href=
"/ndk/guides/stable_apis.html">native platform libraries</a> directly from
your native code.
</p>
<h2 id="api-framework">
Java API Framework
</h2>
<p>
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:
</p>
<ul>
<li>A rich and extensible <a href="/guide/topics/ui/overview.html">View
System</a> you can use to build an apps UI, including lists, grids, text
boxes, buttons, and even an embeddable web browser
</li>
<li>A <a href="/guide/topics/resources/overview.html">Resource Manager</a>,
providing access to non-code resources such as localized strings, graphics,
and layout files
</li>
<li>A <a href="/guide/topics/ui/notifiers/notifications.html">Notification
Manager</a> that enables all apps to display custom alerts in the status bar
</li>
<li>An <a href="/guide/components/activities.html">Activity Manager</a> that
manages the lifecycle of apps and provides a common <a href=
"/guide/components/tasks-and-back-stack.html">navigation back stack</a>
</li>
<li>
<a href="/guide/topics/providers/content-providers.html">Content
Providers</a> that enable apps to access data from other apps, such as
the Contacts app, or to share their own data
</li>
</ul>
<p>
Developers have full access to the same <a href=
"/reference/packages.html">framework APIs</a> that Android system apps use.
</p>
<h2 id="system-apps">
System Apps
</h2>
<p>
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).
</p>
<p>
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 yourself—you can instead invoke whichever SMS app is already
installed to deliver a message to the recipient you specify.
</p>

View File

@@ -1,41 +1,63 @@
page.title=Java 8 Language Features
page.title=Use Java 8 Language Features
page.keywords="android N", "Java 8", "Jack"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2 id="Contents">
In this document:
</h2>
<ol>
<li>
<a href="#supported-features">Supported Java 8 Language Features and APIs</a>
<a href="#supported-features">Supported Java 8 Language Features and
APIs</a>
</li>
<li>
<a href="#configuration">Enabling Java 8 Features and the Jack Toolchain</a>
<a href="#configuration">Enable Java 8 Features and the Jack
Toolchain</a>
<ul>
<li>
<a href="#configure-gradle">Configure Gradle</a>
</li>
<li>
<a href="#known-issues">Known issues</a>
</li>
</ul>
</li>
</ol>
</div>
</div>
<p>Android N introduces support for Java 8 language features
that you can use when developing apps that target Android N.
This page describes the new language features supported in the Android N
Preview, how to properly set up your project to use them, and any known
issues you may encounter.
<p>
Android supports all Java 7 language features and a subset of Java 8 language
features that vary by platform version. This page describes the new language
features you can use, how to properly configure your project to use them, and
any known issues you may encounter.
</p>
<p>To start using these features, you need to download and set up Android
Studio 2.1 and the Android N Preview SDK, which includes the required
Jack toolchain and updated Android Plugin for Gradle. If you haven't yet
installed the Android N Preview SDK, see <a href=
"{@docRoot}preview/setup-sdk.html">Set Up to Develop for Android N</a>.</p>
<p class="note">
<strong>Note:</strong> Using the new Java 8 language features is not a
requirement for developing apps that target the Android N platform. If you
don't want to write code with Java 8 language features, you can keep your
project's source and target compatibility values set to Java 7, but you still
must compile with JDK 8 to build against the Android N platform.
<strong>Note:</strong> When developing apps for Android, using Java 8
language features is optional. You can keep your project's source and target
compatibility values set to Java 7, but you still need to compile using JDK
8.
</p>
<p>
Support for Java 8 language features requires a new compiler called <a href=
"https://source.android.com/source/jack.html">Jack</a>. Jack is supported
only on Android Studio 2.1 and higher. So if you want to use Java 8 language
features, you need to use Android Studio 2.1 to build your app.
</p>
<p>
If you already have Android Studio installed, make sure you update to the
latest version by clicking <strong>Help &gt; Check for Update</strong> (on
Mac, <strong>Android Studio &gt; Check for Updates</strong>). If you don't
already have the IDE installed on your workstation, <a href=
"{@docRoot}studio/">download Android Studio here</a>.
</p>
<h2 id="supported-features">
@@ -43,9 +65,9 @@ installed the Android N Preview SDK, see <a href=
</h2>
<p>
Android does not currently support all Java 8 language features. However, the
following features are now available when developing apps targeting the
Android N Preview:
Android does not support all Java 8 language features. However, the
following features are available when developing apps targeting
Android 7.0 (API level 24):
</p>
<ul>
@@ -94,7 +116,7 @@ installed the Android N Preview SDK, see <a href=
</p>
<p>
Additionally, the following Java 8 language feature APIs are now available:
Additionally, the following Java 8 language APIs are also available:
</p>
<ul>
@@ -144,37 +166,36 @@ installed the Android N Preview SDK, see <a href=
</ul>
<h2 id="configuration">
Enabling Java 8 Features and the Jack Toolchain
Enable Java 8 Features and the Jack Toolchain
</h2>
<p>
In order to use the new Java 8 language features, you need to also use the
new <a class="external-link" href=
"https://source.android.com/source/jack.html">Jack toolchain</a>. This new
Android toolchain compiles Java language source into Android-readable dex
bytecode, has its own {@code .jack} library format, and provides most toolchain
features as part of a single tool: repackaging, shrinking, obfuscation and
multidex.
<a href="https://source.android.com/source/jack.html">Jack toolchain</a>.
This new Android toolchain compiles Java language sources into
Android-readable DEX bytecode, has its own {@code .jack} library format, and
provides most toolchain features as part of a single tool: repackaging,
shrinking, obfuscation and multidex.
</p>
<p>Here is a comparison of the two toolchains used to build Android DEX files:</p>
<ul>
<li>Legacy javac toolchain:<br>
<b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
.class} --&gt; {@code .dex})
<b>javac</b> ({@code .java} {@code .class}) <b>dx</b> ({@code
.class} {@code .dex})
</li>
<li>New Jack toolchain:<br>
<b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
<b>Jack</b> ({@code .java} {@code .jack} {@code .dex})
</li>
</ul>
<h3>
Configuring Gradle
<h3 id="configure-gradle">
Configure Gradle
</h3>
<p>
To enable the Java 8 language features and Jack for your project, enter the
To enable Java 8 language features and Jack for your project, enter the
following in your module-level {@code build.gradle} file:
</p>
@@ -195,7 +216,7 @@ android {
</pre>
<h3 id="known-issues">
Known Issues
Known issues
</h3>
<p>
@@ -217,5 +238,5 @@ examples of these tools are:</p>
</li>
</ul>
<p>If you find other problems while using Jack, <a href=
<p>If you find other issues while using Jack, <a href=
"http://tools.android.com/filing-bugs">please file a bug</a>.</p>

View File

@@ -2,60 +2,82 @@ page.title=Verifying App Behavior on the Android Runtime (ART)
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Quickview</h2>
<ul>
<li>The new Android runtime (ART) is available on some of the newest Android
devices, though all of them currently have Dalvik as the default
runtime.</li>
<li>App developers should make sure their apps are compatible with ART,
especially if you use JNI to run native code or if you use certain tools
that produce non-standard code (such as some obfuscators).</li>
</ul>
<div id="qv">
<h2 id="Contents">
In this document
</h2>
<h2 id="Contents">In this document</h2>
<ol>
<li><a href="#GC_Migration">Addressing Garbage Collection (GC) Issues</a></li>
<li><a href="#JNI_Issues">Preventing JNI Issues</a>
<ol>
<li><a href="#JNI_and_GC">Checking JNI code for garbage-collection
issues</a></li>
<li><a href="#Error_Handling">Error handling</a></li>
<li><a href="#Object_Model_Changes">Object model changes</a></li>
</ol>
</li>
<li><a href="#Stack_Size">Preventing Stack Size Issues</a></li>
<li><a href="#AOT_Fails">Fixing AOT Compilation Issues</a></li>
<li><a href="#Reporting_Problems">Reporting Problems</a></li>
</ol>
<h2>See also</h2>
<ol>
<li><a href="http://source.android.com/devices/tech/dalvik/art.html">Introducing ART</a></li>
<li><a
href="http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html">Debugging
Android JNI with CheckJNI</a></li>
</ol>
</div>
<ol>
<li>
<a href="#GC_Migration">Addressing Garbage Collection (GC) Issues</a>
</li>
<li>
<a href="#JNI_Issues">Preventing JNI Issues</a>
<ol>
<li>
<a href="#JNI_and_GC">Checking JNI code for garbage-collection
issues</a>
</li>
<li>
<a href="#Error_Handling">Error handling</a>
</li>
<li>
<a href="#Object_Model_Changes">Object model changes</a>
</li>
</ol>
</li>
<li>
<a href="#Stack_Size">Preventing Stack Size Issues</a>
</li>
<li>
<a href="#AOT_Fails">Fixing AOT Compilation Issues</a>
</li>
<li>
<a href="#Reporting_Problems">Reporting Problems</a>
</li>
</ol>
<h2>
See also
</h2>
<ol>
<li>
<a href=
"http://source.android.com/devices/tech/dalvik/art.html">Introducing
ART</a>
</li>
<li>
<a href=
"http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html">
Debugging Android JNI with CheckJNI</a>
</li>
</ol>
</div>
</div>
<p>With Android 4.4, we are beginning to roll out a new Android runtime,
<strong>ART</strong>. This runtime offers a number of new features that improve
performance and smoothness of the Android platform and apps. (You can find more
information about ART's new features in <a
href="http://source.android.com/devices/tech/dalvik/art.html">Introducing
ART</a>.)</p>
<p>
The Android runtime (ART) is the default runtime for devices running Android
5.0 (API level 21) and higher. This runtime offers a number of features
that improve performance and smoothness of the Android platform and apps.
You can find more information about ART's new features in <a href=
"http://source.android.com/devices/tech/dalvik/art.html">Introducing
ART</a>.
</p>
<p>Currently, ART is available on a number of Android 4.4 devices, such as the
Nexus 4, Nexus 5, Nexus 7, and Google Play edition devices.
At this time, all devices still use Dalvik as the default runtime. We encourage
you to test your apps for ART compatibility and to take advantage of ART's new
features. However, for the time being, you should also take care to maintain
compatibility with Dalvik.</p>
<p>This document lets you know about things to watch for when migrating an
existing app to be compatible with ART. Most apps should just work when
running with ART. However, some techniques that work on Dalvik do not work on
ART. This document discusses some of these issues.</p>
<p>
However, some techniques that work on Dalvik do not work on ART. This
document lets you know about things to watch for when migrating an existing
app to be compatible with ART. Most apps should just work when running with
ART.
</p>
<h2 id="GC_Migration">Addressing Garbage Collection (GC) Issues</h2>
@@ -147,7 +169,7 @@ in use, this can lead to memory corruption or other problems. For example:</p>
<h3 id="Error_Handling">Error handling</h3>
<p>ART's JNI throws errors in a number of cases where Dalvik didnt. (Once
<p>ART's JNI throws errors in a number of cases where Dalvik doesnt. (Once
again, you can catch many such cases by testing with CheckJNI.)</p>
<p>For example, if <code>RegisterNatives</code> is called with a method that

View File

@@ -262,27 +262,6 @@ toc:
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Java 8 Language Features
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Android for Work Updates
path: /preview/features/afw.html
- title: Scoped Directory Access