[FE training-materials-updates] Add the Android Agenda

Maxime Ripard maxime.ripard at free-electrons.com
Fri Oct 18 17:13:10 CEST 2013


Repository : git://git.free-electrons.com/training-materials.git

On branch  : jelly-bean
Link       : http://git.free-electrons.com/training-materials/commit/?id=39ed70e8e43d1d7af28f1d49e01dcb33e9edb9cd

>---------------------------------------------------------------

commit 39ed70e8e43d1d7af28f1d49e01dcb33e9edb9cd
Author: Maxime Ripard <maxime.ripard at free-electrons.com>
Date:   Fri Oct 18 15:06:13 2013 +0200

    Add the Android Agenda
    
    Signed-off-by: Maxime Ripard <maxime.ripard at free-electrons.com>


>---------------------------------------------------------------

39ed70e8e43d1d7af28f1d49e01dcb33e9edb9cd
 agenda/android-agenda.tex |  335 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 335 insertions(+)

diff --git a/agenda/android-agenda.tex b/agenda/android-agenda.tex
new file mode 100644
index 0000000..290beb5
--- /dev/null
+++ b/agenda/android-agenda.tex
@@ -0,0 +1,335 @@
+\documentclass[a4paper,12pt,obeyspaces,spaces,hyphens]{article}
+
+\usepackage{agenda}
+\usepackage{colortbl}
+\usepackage{xcolor}
+\usepackage{palatino}
+\usepackage{calc}
+
+\hypersetup{pdftitle={Android System Development Training},
+  pdfauthor={Free Electrons}}
+
+\begin{document}
+
+\thispagestyle{fancy}
+
+\setlength{\arrayrulewidth}{0.8pt}
+
+\begin{center}
+\LARGE
+Android System Development Training\\
+\large
+4 days session
+\end{center}
+\vspace{1cm}
+
+\small
+\newcolumntype{g}{>{\columncolor{fedarkblue}}m{4cm}}
+\newcolumntype{h}{>{\columncolor{felightblue}}X}
+
+\arrayrulecolor{lightgray} {
+  \setlist[1]{itemsep=-5pt}
+  \begin{tabularx}{\textwidth}{|g|h|}
+    {\bf Title} & Android System Development Training\\
+    \hline
+
+    {\bf Overview} &
+    Understanding the Android Internals \par
+    Understanding the Android Build System \par
+    Customizing Android for a specific hardware \par
+    Extending the Android framework \par
+    Practical labs with the ARM-based BeagleBone Black.\\
+    \hline
+
+    {\bf Duration} & {\bf Four} days - 32 hours (8 hours per day).
+    \newline 50\% of lectures, 50\% of practical labs. \\
+    \hline
+
+    {\bf Trainer} & One of the engineers listed on
+    \newline \url{http://free-electrons.com/training/trainers/}\\
+    \hline
+
+    {\bf Language} & Oral lectures: English or French.
+    \newline Materials: English.\\
+    \hline
+
+    {\bf Audience} & Engineers porting Android to new boards
+    \newline Engineers developing products with Android \\
+    \hline
+
+    {\bf Prerequisites} & \vspace{-0.7cm}
+    \begin{itemize}
+    \item {\bf Knowledge and practice of Unix or GNU/Linux commands}
+      \begin{itemize}
+      \item People lacking experience on this topic should get trained
+        by themselves with our freely available on-line slides
+        (\url{http://free-electrons.com/docs/command-line/})
+      \end{itemize}
+    \item {\bf Knowledge and practice of C programming}
+    \item {\bf Basics of Java programming}
+    \end{itemize} \vspace{-0.7cm} \\
+    \hline
+
+    {\bf Required equipment} & \vspace{-0.7cm}
+    \begin{itemize}
+    \item Video projector
+    \item PC computers with at least 4 GB of RAM, a CPU at least
+      equivalent to an Intel Core i5 and Ubuntu Linux installed in a
+      {\bf free partition of at least 50 GB. Using Linux in a virtual
+        machine is not supported}, because of issues connecting to
+      real hardware.
+    \item We need Ubuntu Desktop 12.04 (64 bit, Xubuntu and Kubuntu
+      variants are fine). We don't support other distributions,
+      because we can't test all possible package versions.
+    \item {\bf High Speed Connection to the Internet} (direct or
+      through the company proxy), fast enough to download the several
+      gigabytes of Android source code.
+    \item {\bf PC computers with valuable data must be backed up}
+      before being used in our sessions. Some people have already made
+      mistakes during our sessions and damaged work data.
+    \end{itemize} \vspace{-0.7cm} \\
+    \hline
+
+    {\bf Materials} & Print and electronic copies of presentations and
+    labs.
+    \newline Electronic copy of lab files.\\
+    \hline
+
+\end{tabularx}}
+\normalsize
+
+\feagendatwocolumn
+{Hardware}
+{
+  The hardware platform used for the practical labs of this training
+  session is a {\bf BeagleBone Black}, which features:
+
+  \begin{itemize}
+  \item An ARM AM335x processor from Texas Instruments (Cortex-A8
+    based), 3D acceleration, etc.
+  \item 512 MB of RAM
+  \item 2 GB of on-board eMMC storage
+  \item USB host and device
+  \item HDMI output
+  \item 2 x 46 pins headers, to access UARTs, SPI busses, I2C busses
+    and more.
+  \end{itemize}
+}
+{}
+{
+  \begin{center}
+    \includegraphics[height=5cm]{agenda/beagleboneblack.png}
+  \end{center}
+}
+
+\section{Part 1 - Compiling and booting Android}
+
+\feagendatwocolumn
+{Lecture - Introduction to Android}
+{
+  \begin{itemize}
+  \item History
+  \item Actors involved
+  \item Introduction to the Android architecture
+  \end{itemize}
+}
+{Lab - Setup}
+{
+  \begin{itemize}
+  \item Install the tools required to compile
+  \item Fetch the source code (\textit{If the network bandwidth is not
+      sufficient, we will provide a ready-to-use source code archive})
+  \item Get used to Android specific tools
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture - Android Source Code and Compilation}
+{
+  \begin{itemize}
+  \item How to use git, repo and gerrit to access sources
+  \item How to find one's way in the code base
+  \item How to compile Android (tools, targets, etc.)
+  \end{itemize}
+}
+{Lab - First Compilation}
+{
+  {\em Using the Android Emulator}
+  \begin{itemize}
+  \item Compile a first root filesystem for the emulator
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture - Introduction to the Linux kernel}
+{
+  \begin{itemize}
+  \item Role and general architecture of the kernel
+  \item Kernel features
+  \item Understanding the development process.
+  \item Legal constraints with device drivers.
+  \item Kernel user interface (/proc and /sys)
+  \item Kernel configuration.
+  \item Native and cross-compilation. Generated files.
+  \end{itemize}
+}
+{Lab - Compile and Boot an Android Kernel}
+{
+  {\em Using the Android Emulator}
+  \begin{itemize}
+  \item Compile and Boot an Android Kernel
+  \item Extract the patches from the Android Kernel
+  \end{itemize}
+}
+\\
+\section{Part 2 - Porting Android to a New Board}
+
+\feagendaonecolumn
+{Lecture - Changes introduced in the Android Kernel}
+{
+  \begin{itemize}
+  \item Major functional changes introduced by Google
+  \item Additions to the kernel
+  \item Mainline kernel status of these patches
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture - Android Bootloaders}
+{
+  \begin{itemize}
+  \item What is a bootloader
+  \item Bootloader examples
+  \item The fastboot specifications from Android.
+  \end{itemize}
+}
+{Lab - Supporting a board}
+{
+  {\em Using the BeagleBoneBlack}
+  \begin{itemize}
+  \item Use the Android's build for the BeagleBone Black
+  \item Boot Android on a real board
+  \item Troubleshoot the glitches on the board
+  \end{itemize}
+}
+
+\section{Part 3 - Device Development with Android}
+
+\feagendatwocolumn
+{Lecture – Developing and debugging with ADB}
+{
+  \begin{itemize}
+  \item Presentation of ADB
+  \item Available commands: transfer files,
+    install packages, executing remote commands, log access,
+    networking... all this done from the development machine.
+  \item Examples of commands and combinations useful to debug
+  \end{itemize}
+}
+{Lab – Use ADB}
+{
+  \begin{itemize}
+  \item Learn how to get the system log, to gain access to a shell on
+    the device, push and pull files, etc.
+  \end{itemize}
+}
+
+\feagendaonecolumn
+{Lecture – Android filesystem layout}
+{
+  \begin{itemize}
+  \item Know where the various software components are installed and
+    mounted, and why it matters.
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture – Android build system}
+{
+  \begin{itemize}
+  \item Concepts introduced in the build system
+  \item Architecture of the Makefiles
+  \item Variables and functions available
+  \item Compilation steps
+  \item Add a new device to the build system
+  \end{itemize}
+}
+{Lab – Add a native library to the build}
+{
+  \begin{itemize}
+  \item Create an external library to control a USB rocket launcher.
+  \item Add this library to the default Android build
+  \end{itemize}
+}
+
+\feagendaonecolumn
+{Lab - System customization}
+{
+  \begin{itemize}
+  \item Add a device to the build system
+  \item Customize the “About” info, build ID, boot and home screens in
+    your system.
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture – Android Native Layer}
+{
+  \begin{itemize}
+  \item Discover the daemons handling the radio, external storage,
+    launching applications, etc.
+  \item Get to know the different components involved in the Android
+    runtime, from the virtual machine to the media framework:
+    StageFright, Flingers, Dalvik...
+  \item Learn how hardware abstraction is done in Android
+  \end{itemize}
+}
+{Lab – Add a native binary to the build}
+{
+  \begin{itemize}
+  \item Get to know the build system and the C library (Bionic)
+    specifics.
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture – Android Framework and Applications}
+{
+  \begin{itemize}
+  \item Overview of the services, Content Providers and available
+    applications in a standard Android build
+  \item Structure of a Service / Content Provider
+  \item How to access a native library from a Java app
+    using the Java Native Interface (JNI)
+  \end{itemize}
+}
+{Lab – Develop the Java interface to the native library}
+{
+  \begin{itemize}
+  \item Implement a Java interface to use the previously integrated
+    library
+  \end{itemize}
+}
+
+\feagendatwocolumn
+{Lecture – Android Application Development}
+{
+  \begin{itemize}
+  \item The application lifecycle
+  \item The various application components
+  \item How to access services
+  \item How to use, access and manage the resources
+  \item How apk packages are built and what do they contain
+  \end{itemize}
+}
+{Lab – Write an app with the SDK}
+{
+  \begin{itemize}
+  \item Learn how to write and distribute an application using the
+    Android SDK and its API.
+  \item Practical case: write an Android application controlling the
+    USB rocket launcher.
+  \end{itemize}
+}
+
+\end{document}



More information about the training-materials-updates mailing list