<html devsite>
  <head>
    <title>Site Updates</title>
    <meta name="project_path" value="/_project.yaml" />
    <meta name="book_path" value="/_book.yaml" />
  </head>
  <body>
  <!--
      Copyright 2017 The Android Open Source Project

      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
  -->


<p>This page describes significant revisions to source.android.com. Please see the <a
href="https://android.googlesource.com/platform/docs/source.android.com/+log/master?no-merges">Android
Open Source Project (AOSP) docs/source.android.com log</a> for the complete
list of changes to this site.

<h2 id="april-2017">April 2017</h2>
<p>Welcome to a new source.android.com! The site has been overhauled to make it
easier for you to navigate, search, and read its ever-growing set of information.
Here is a summary of enhancements:</p>

<h3 id="screen-estate">More screen real estate, larger type size</h3>
<p>The entire site is wider, allowing you to view more content at once. Code
samples and commands are more visible, and all text has been enlarged.</p>

<h3 id="mobile-ready">Mobile-ready view</h3>
<p>The new site renders more cleanly on handheld devices with a dedicated
mobile view.</p>

<div  style="width:407px">
  <img src="images/mobile-view.png" alt="new mobile view" height="533px" />
  <p class="img-caption">
    <strong>Figure 1.</strong> Site's new mobile view
  </p>
</div>

<h3 id="top-tabs">New top-level tabs</h3>
<p>The former <em>Devices</em> tab has been renamed <a
href="/devices/">Porting</a>, while the old <em>Core Technologies</em>
subtab has been renamed <a href="/devices/tech/">Tuning</a> and moved to the top
of the site for better exposure.</p>

<h3 id="security-forefront">Security at the forefront</h3>
<p>With an ever-increasing focus on security in Android, the <a
href="/security/">Security</a> tab has been moved forward (next to <a
href="/source/">Source</a>) to reflect its importance.</p>

<h3 id="reference-materials">Better reference materials</h3>
<p><a href="/reference/hal/">Hardware Abstraction Layer</a> and <a
href="/reference/tradefed/packages">Trade Federation</a> reference
materials are available directly from a top-level <a
href="/reference/">Reference</a> tab.</p>

<h3 id="code-links">Persistent code links</h3>
<p>The <a href="https://android.googlesource.com/">AOSP code
repository</a> is always just a click away with the <strong>Go to Code</strong>
button at the top right of every page.</p>

<h3 id="comprehensive-footers">Comprehensive footers</h3>
<p>In addition to the existing <em>About</em>, <em>Community</em>, and
<em>Legal</em> footers, you can now find a complete list of links at the bottom
of every page for building Android, connecting with the ecosystem, and getting
help with the operating system's use.</p>

  </body>
</html>
