SlideShare a Scribd company logo
1 of 22
Download to read offline
X86 Android Bringup - A
ROM Cooking Tutorial
Ron Munitz
November, 2013
© all rights reserved - Ron Munitz 2013
Permission to use and distribute slides is granted by specifying this copyright note, and accrediting the
original author.
Part I - Introduction
Ron Munitz
2013
Agenda
● History
● The Android Open Source Project
● Introduction to working with the AOSP
● Building your first ROM - the Android Emulator
● 2002 - SideKick by Danger Inc. - The first “Internet Phone”.
○ Technical session at Stanford by Andy Rubin, CEO of Danger Inc.
○ Google’s Brin&Page attend, and soon become Sidekick users.
○ Sidekick fails to acheive commercial success
● 2003 - Andy Rubin forms “Android”, targeted at operating mobile phones
and cameras
● 2005 - Google Acquires “Android”.
● 2007 - The Open Handset Alliance is formed
○ November 5th - The OHA Announces Android, an open source
mobile phone platform based on the linux kernel
○ November 12th - Google Announces the Android SDK, along with a
$10 million Android developer challenge
Android History (2002-2007)
● 2008 - T-mobile and Google announce the first Android phone - the G1
○ AKA. The HTC “Dream”
○ Approved by the FCC on August 18th 2008
○ First available - October 22nd
● 2009 - Motorola Droid is announced, running Android 2.0
○ Considered by many as the opening note for the smartphone wars.
○ Added at least two exclusive features:
■ Hardware keyboard
■ Replaceable battery
Android History (2008-2009)
● 2010 was an exciting year for Android:
○ Google Announces its first flagship device - the Nexus One
■ Which is one of the best phones I have ever had.
○ Samsung sets a giant’s foot on the battlefield
■ Galaxy S and its variants hit the market
○ HTC’s EVO4G hits the market
■ Was widely considered as the best iPhone alternative at that time
○ Android’s market share first passes the iPhone’s market share
○ Google announces the Gingerbread (2.3) Android version, debuting
on the Nexus S.
■ Introducing the most popular Android version until the end of 2013
■ Introducing NFC and SIP
Android History (2010)
Android History (2011-2013)
● 2011 - Honeycomb (3.0), google’s first aim at the tablet market is out
○ Android’s market share first passes the Blackberry’s market share
○ November 2011 - Ice Scream Sandwich is out, debutting on the
Galaxy Nexus
● 2012 - JellyBean is released
○ Introducing significant enhancement in user experience (Project
butter)
○ Introducing multi user for tablets
○ Samsung confidently ranks as the top Android phone maker on earth
● 2013 - More devices, more market share,
○ Android 4.3 is out: Enhanced WiFi-Display, Open GL ES 3.0,...
○ Android 4.4 (KitKat) is out: First time a commercial brand pays for an
Android version branding, and more...
Android History (Future)
● Foreseeable future:
○ More devices
○ More power
○ More features
○ More apps
○ More developers
○ More competition
○ More embedded Android engineers required.
● Will Android be crowned as the new Embedded Linux?
Platform Versions
● Data collected during a 14-day period ending on August 1, 2013.
● Any versions with less than 0.1% distribution are not shown
Screen Sizes and Densities
Android Platform Overview
Android Open Source Project
● “Semi-Open source”
○ Why “Semi” ? In next slide!
● Maintained by Google
● Contributions accepted using “gerrit”
● Mostly Apache licensed
● Provides templates for building an Android system, including
bootloaders etc.
● Vendors derive their products for their hardware layout (BSP,
binaries, etc.)
● Provides the complete source code (but usually missing proprietary
binaries) for a bunch of supported devices (e.g. Galaxy Nexus,
Nexus 4/7/10, Android Emulator)
Android and Open Source
● Source code (For most components) is publicly available
● Contributions are accepted
○ Sometimes. Usually takes time, really depends on the
contribution.
● “Latest and greatest” development is done behind close
doors
● No participation in project direction
Android and Open Source
“Open source is different than a community-driven
project.
Android is light on community-driven, somewhat
heavy on open source.” - Andy Rubin
Android and Open Source
● So far, history has proven that Google publishes major code
releases about every six months - close the announcement
of a new device running that new code release
● Latest and greatest open source work (that is what is not
done exclusively behind google’s close doors) can be
viewed, reviewed and contributed to:
○ http://android-review.googlesource.com/ - Gerrit.
■ View current patches
○ http://android.googlesource.com - Gitweb.
■ View state of published source
○ https://code.google.com/p/android/issues - View or submit bug, issue,
feature request
● (If at all,) Bug fixes usually make their ways to the master branch.
○ See http://source.android.com/source/submit-patches.html
Building the AOSP
● Minimum Requirements
○ 64-bit Linux or Mac system (HW or VM). at least 16GB of RAM/swap
○ 30GB of free disk space to complete a single build and up to 100GB or
more for a full set of builds. The source download is over 10GB in
size.
○ Python 2.6 -- 2.7, which you can download from python.org.
○ GNU Make 3.81 -- 3.82, which you can download from gnu.org,
○ JDK 6 -- 7 which you can download from oracle.com
○ Git 1.7 or newer. You can find it at git-scm.com.
● Your building life will be easy with
○ Lots of cores
○ Lots of memory
○ SSD
Building the AOSP - Checklist
✓ Setup your workstation (Hardware, VM)
✓ Configure all the necessary packages
○ @see http://source.android.com
✓ Configure path for “repo” tool
✓ Configure ccache
✓ Double check RAM and free disk space requirements.
Obtaining the source code
● The AOSP uses repo, a multi git project wrapper written in Python for
source code management.
● Before building the AOSP, or any other Android build system, one must
first decide the branch or tag they would like to work on.
○ That would be the same branch/tag for a given, public Android release
● Then, to initialize the repository configuration at their hosts one should
create a directory, change the working directory to it, and:
○ repo init -u https://android.googlesource.com/platform/manifest
■ For working on the master branch
○ repo init -u https://android.googlesource.com/platform/manifest -b <branch>
■ For working on the <branch> branch
● Once repo has been initialized with parameters such as your name and
email address, you can synchronize the code to the latest remote state:
○ repo sync -j${NumJobs}
■ The -j parameter is the number of simultaneous jobs
Building the source code
● Let us deal with a device supported in the AOSP (i.e. *Nexus*, or emulator)
● Once the source is ready, you first need to configure the build
environment:
○ . build/envsetup.sh
■ This will setup the base Android build system environment
● Then, you choose your specific device configuration:
○ lunch <devicename>-<variant>
■ <devicename> is the code name for the device (e.g. maguro, grouper,
full_x86) , responsible of setting the device specific configuration, BSP,
partition layout, etc.
■ <variant> Can be one of the following:
● user - production build
● userdebug - production with debug features
● eng - engineering builds
● tests - google internal
● Note: The list can be modified, and it has been (RIP “debug”)
● Once the build target has been selected - you are good to build:
○ make -j${NumJobs}
■ The -j parameter is the number of simultaneous jobs
Example
● Task: Build and run an Android emulator with the following properties:
○ Based on the android-4.3_r2.1 tag
○ For X86 architecture
○ -eng build variant
● Solution:
○ mkdir -p ~/edu/AOSP
○ cd ~/edu/AOSP
○ repo init -u https://android.googlesource.com/platform/manifest -b android-4.3_r2.1
○ repo sync -j4 # This will take a while...
○ . build/envsetup.sh
○ lunch aosp_x86-eng
○ make -j16 # This will take a while
○ emulator & #
1 picture == 1000 words
This is an image based on one of the earliest
JB versions. Not much, if any has changed
since the very early days of “Cupcake” and
“Donut”.
References
1. http://www.businessinsider.com/history-of-android-2013-8?op=1
2. http://source.android.com
3. http://developer.android.com
4. Introduction to ROM cooking - Ron Munitz
5. “Bringing up Android on your favorite X86 Workstation or VM” - Ron
Munitz, AnDevCon Boston, 2013
6. “Android IA bringup - words of a veteran” - Ron Munitz, Android Builders
Summit, 2013
7. http://git-scm.com/

More Related Content

What's hot

Lt2013 uefisb.talk
Lt2013 uefisb.talkLt2013 uefisb.talk
Lt2013 uefisb.talkUdo Seidel
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
Linux Introduction - Yousefpour - Rahnema College
Linux Introduction - Yousefpour - Rahnema CollegeLinux Introduction - Yousefpour - Rahnema College
Linux Introduction - Yousefpour - Rahnema CollegeMasoud Yousefpour
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianMender.io
 
Introduction to the Moby Project
Introduction to the Moby ProjectIntroduction to the Moby Project
Introduction to the Moby ProjectJochen Zehnder
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVOpersys inc.
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeOpersys inc.
 
Android Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part IAndroid Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part IOpersys inc.
 
Tizen Web App 개발
Tizen Web App 개발Tizen Web App 개발
Tizen Web App 개발xcoda
 
Software Freedom and Community
Software Freedom and CommunitySoftware Freedom and Community
Software Freedom and CommunitySammy Fung
 
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Opersys inc.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Opersys inc.
 
Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011Opersys inc.
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in AndroidOpersys inc.
 

What's hot (20)

Lt2013 uefisb.talk
Lt2013 uefisb.talkLt2013 uefisb.talk
Lt2013 uefisb.talk
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Linux Introduction - Yousefpour - Rahnema College
Linux Introduction - Yousefpour - Rahnema CollegeLinux Introduction - Yousefpour - Rahnema College
Linux Introduction - Yousefpour - Rahnema College
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
 
Introduction to the Moby Project
Introduction to the Moby ProjectIntroduction to the Moby Project
Introduction to the Moby Project
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Is Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IVIs Android the New Embedded Linux? at AnDevCon IV
Is Android the New Embedded Linux? at AnDevCon IV
 
Embedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC EuropeEmbedded Android Workshop at ELC Europe
Embedded Android Workshop at ELC Europe
 
Android Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part IAndroid Jumpstart ESC SV 2012 Part I
Android Jumpstart ESC SV 2012 Part I
 
Introduction to FOSS world
Introduction to FOSS worldIntroduction to FOSS world
Introduction to FOSS world
 
Tizen Web App 개발
Tizen Web App 개발Tizen Web App 개발
Tizen Web App 개발
 
Tizen contrib-fosdem-20140201
Tizen contrib-fosdem-20140201Tizen contrib-fosdem-20140201
Tizen contrib-fosdem-20140201
 
Software Freedom and Community
Software Freedom and CommunitySoftware Freedom and Community
Software Freedom and Community
 
Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012Android Hacks, Variants, Tricks and Resources ESC SV 2012
Android Hacks, Variants, Tricks and Resources ESC SV 2012
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
tizen-upstream-coop-tdc2014-pcoval
tizen-upstream-coop-tdc2014-pcovaltizen-upstream-coop-tdc2014-pcoval
tizen-upstream-coop-tdc2014-pcoval
 
Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3Leveraging Android's Linux Heritage at AnDevCon3
Leveraging Android's Linux Heritage at AnDevCon3
 
Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011Android jumpstart at ESC Boston 2011
Android jumpstart at ESC Boston 2011
 
Memory Management in Android
Memory Management in AndroidMemory Management in Android
Memory Management in Android
 
tizen-maintain-20150413rzr
tizen-maintain-20150413rzrtizen-maintain-20150413rzr
tizen-maintain-20150413rzr
 

Similar to Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon SF 2013)

Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)
Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)
Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)Ron Munitz
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowOpersys inc.
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with OreoOpersys inc.
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowKarim Yaghmour
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowOpersys inc.
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowOpersys inc.
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopOpersys inc.
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIOpersys inc.
 
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)Ron Munitz
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VOpersys inc.
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopOpersys inc.
 
Embedded Android Workshop at ABS 2014
Embedded Android Workshop at ABS 2014Embedded Android Workshop at ABS 2014
Embedded Android Workshop at ABS 2014Opersys inc.
 
Embedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VIEmbedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VIOpersys inc.
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Opersys inc.
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
Introduction to Android (Jeudis du libre)
Introduction to Android (Jeudis du libre)Introduction to Android (Jeudis du libre)
Introduction to Android (Jeudis du libre)cbeyls
 
Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014Opersys inc.
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android WorkshopOpersys inc.
 
Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Opersys inc.
 

Similar to Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon SF 2013) (20)

Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)
Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)
Android ROM Cooking 101: A practical tutorial (DroidCon Tel-Aviv 2014)
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Embedded Android Workshop with Oreo
Embedded Android Workshop with OreoEmbedded Android Workshop with Oreo
Embedded Android Workshop with Oreo
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Embedded Android Workshop with Marshmallow
Embedded Android Workshop with MarshmallowEmbedded Android Workshop with Marshmallow
Embedded Android Workshop with Marshmallow
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with Lollipop
 
Is Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VIIs Android the New Embedded Linux? at AnDevCon VI
Is Android the New Embedded Linux? at AnDevCon VI
 
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
Android As a Server- Building Android for the Cloud (AnDevCon SF 2013)
 
Is Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon VIs Android the New Embedded Linux? at AnDevCon V
Is Android the New Embedded Linux? at AnDevCon V
 
Embedded Android Workshop with Lollipop
Embedded Android Workshop with LollipopEmbedded Android Workshop with Lollipop
Embedded Android Workshop with Lollipop
 
Embedded Android Workshop at ABS 2014
Embedded Android Workshop at ABS 2014Embedded Android Workshop at ABS 2014
Embedded Android Workshop at ABS 2014
 
Embedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VIEmbedded Android Workshop at AnDevCon VI
Embedded Android Workshop at AnDevCon VI
 
Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014Is Android the New King of Embedded OSes at Embedded World 2014
Is Android the New King of Embedded OSes at Embedded World 2014
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Introduction to Android (Jeudis du libre)
Introduction to Android (Jeudis du libre)Introduction to Android (Jeudis du libre)
Introduction to Android (Jeudis du libre)
 
Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014Embedded Android Workshop at Embedded World 2014
Embedded Android Workshop at Embedded World 2014
 
Embedded Android Workshop
Embedded Android WorkshopEmbedded Android Workshop
Embedded Android Workshop
 
Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013Embedded Android Workshop / ELC 2013
Embedded Android Workshop / ELC 2013
 

Recently uploaded

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Introduction to Android ROM cooking, part of my AnDevCon workshop (AnDevCon SF 2013)

  • 1. X86 Android Bringup - A ROM Cooking Tutorial Ron Munitz November, 2013 © all rights reserved - Ron Munitz 2013 Permission to use and distribute slides is granted by specifying this copyright note, and accrediting the original author.
  • 2. Part I - Introduction Ron Munitz 2013
  • 3. Agenda ● History ● The Android Open Source Project ● Introduction to working with the AOSP ● Building your first ROM - the Android Emulator
  • 4. ● 2002 - SideKick by Danger Inc. - The first “Internet Phone”. ○ Technical session at Stanford by Andy Rubin, CEO of Danger Inc. ○ Google’s Brin&Page attend, and soon become Sidekick users. ○ Sidekick fails to acheive commercial success ● 2003 - Andy Rubin forms “Android”, targeted at operating mobile phones and cameras ● 2005 - Google Acquires “Android”. ● 2007 - The Open Handset Alliance is formed ○ November 5th - The OHA Announces Android, an open source mobile phone platform based on the linux kernel ○ November 12th - Google Announces the Android SDK, along with a $10 million Android developer challenge Android History (2002-2007)
  • 5. ● 2008 - T-mobile and Google announce the first Android phone - the G1 ○ AKA. The HTC “Dream” ○ Approved by the FCC on August 18th 2008 ○ First available - October 22nd ● 2009 - Motorola Droid is announced, running Android 2.0 ○ Considered by many as the opening note for the smartphone wars. ○ Added at least two exclusive features: ■ Hardware keyboard ■ Replaceable battery Android History (2008-2009)
  • 6. ● 2010 was an exciting year for Android: ○ Google Announces its first flagship device - the Nexus One ■ Which is one of the best phones I have ever had. ○ Samsung sets a giant’s foot on the battlefield ■ Galaxy S and its variants hit the market ○ HTC’s EVO4G hits the market ■ Was widely considered as the best iPhone alternative at that time ○ Android’s market share first passes the iPhone’s market share ○ Google announces the Gingerbread (2.3) Android version, debuting on the Nexus S. ■ Introducing the most popular Android version until the end of 2013 ■ Introducing NFC and SIP Android History (2010)
  • 7. Android History (2011-2013) ● 2011 - Honeycomb (3.0), google’s first aim at the tablet market is out ○ Android’s market share first passes the Blackberry’s market share ○ November 2011 - Ice Scream Sandwich is out, debutting on the Galaxy Nexus ● 2012 - JellyBean is released ○ Introducing significant enhancement in user experience (Project butter) ○ Introducing multi user for tablets ○ Samsung confidently ranks as the top Android phone maker on earth ● 2013 - More devices, more market share, ○ Android 4.3 is out: Enhanced WiFi-Display, Open GL ES 3.0,... ○ Android 4.4 (KitKat) is out: First time a commercial brand pays for an Android version branding, and more...
  • 8. Android History (Future) ● Foreseeable future: ○ More devices ○ More power ○ More features ○ More apps ○ More developers ○ More competition ○ More embedded Android engineers required. ● Will Android be crowned as the new Embedded Linux?
  • 9. Platform Versions ● Data collected during a 14-day period ending on August 1, 2013. ● Any versions with less than 0.1% distribution are not shown
  • 10. Screen Sizes and Densities
  • 12. Android Open Source Project ● “Semi-Open source” ○ Why “Semi” ? In next slide! ● Maintained by Google ● Contributions accepted using “gerrit” ● Mostly Apache licensed ● Provides templates for building an Android system, including bootloaders etc. ● Vendors derive their products for their hardware layout (BSP, binaries, etc.) ● Provides the complete source code (but usually missing proprietary binaries) for a bunch of supported devices (e.g. Galaxy Nexus, Nexus 4/7/10, Android Emulator)
  • 13. Android and Open Source ● Source code (For most components) is publicly available ● Contributions are accepted ○ Sometimes. Usually takes time, really depends on the contribution. ● “Latest and greatest” development is done behind close doors ● No participation in project direction
  • 14. Android and Open Source “Open source is different than a community-driven project. Android is light on community-driven, somewhat heavy on open source.” - Andy Rubin
  • 15. Android and Open Source ● So far, history has proven that Google publishes major code releases about every six months - close the announcement of a new device running that new code release ● Latest and greatest open source work (that is what is not done exclusively behind google’s close doors) can be viewed, reviewed and contributed to: ○ http://android-review.googlesource.com/ - Gerrit. ■ View current patches ○ http://android.googlesource.com - Gitweb. ■ View state of published source ○ https://code.google.com/p/android/issues - View or submit bug, issue, feature request ● (If at all,) Bug fixes usually make their ways to the master branch. ○ See http://source.android.com/source/submit-patches.html
  • 16. Building the AOSP ● Minimum Requirements ○ 64-bit Linux or Mac system (HW or VM). at least 16GB of RAM/swap ○ 30GB of free disk space to complete a single build and up to 100GB or more for a full set of builds. The source download is over 10GB in size. ○ Python 2.6 -- 2.7, which you can download from python.org. ○ GNU Make 3.81 -- 3.82, which you can download from gnu.org, ○ JDK 6 -- 7 which you can download from oracle.com ○ Git 1.7 or newer. You can find it at git-scm.com. ● Your building life will be easy with ○ Lots of cores ○ Lots of memory ○ SSD
  • 17. Building the AOSP - Checklist ✓ Setup your workstation (Hardware, VM) ✓ Configure all the necessary packages ○ @see http://source.android.com ✓ Configure path for “repo” tool ✓ Configure ccache ✓ Double check RAM and free disk space requirements.
  • 18. Obtaining the source code ● The AOSP uses repo, a multi git project wrapper written in Python for source code management. ● Before building the AOSP, or any other Android build system, one must first decide the branch or tag they would like to work on. ○ That would be the same branch/tag for a given, public Android release ● Then, to initialize the repository configuration at their hosts one should create a directory, change the working directory to it, and: ○ repo init -u https://android.googlesource.com/platform/manifest ■ For working on the master branch ○ repo init -u https://android.googlesource.com/platform/manifest -b <branch> ■ For working on the <branch> branch ● Once repo has been initialized with parameters such as your name and email address, you can synchronize the code to the latest remote state: ○ repo sync -j${NumJobs} ■ The -j parameter is the number of simultaneous jobs
  • 19. Building the source code ● Let us deal with a device supported in the AOSP (i.e. *Nexus*, or emulator) ● Once the source is ready, you first need to configure the build environment: ○ . build/envsetup.sh ■ This will setup the base Android build system environment ● Then, you choose your specific device configuration: ○ lunch <devicename>-<variant> ■ <devicename> is the code name for the device (e.g. maguro, grouper, full_x86) , responsible of setting the device specific configuration, BSP, partition layout, etc. ■ <variant> Can be one of the following: ● user - production build ● userdebug - production with debug features ● eng - engineering builds ● tests - google internal ● Note: The list can be modified, and it has been (RIP “debug”) ● Once the build target has been selected - you are good to build: ○ make -j${NumJobs} ■ The -j parameter is the number of simultaneous jobs
  • 20. Example ● Task: Build and run an Android emulator with the following properties: ○ Based on the android-4.3_r2.1 tag ○ For X86 architecture ○ -eng build variant ● Solution: ○ mkdir -p ~/edu/AOSP ○ cd ~/edu/AOSP ○ repo init -u https://android.googlesource.com/platform/manifest -b android-4.3_r2.1 ○ repo sync -j4 # This will take a while... ○ . build/envsetup.sh ○ lunch aosp_x86-eng ○ make -j16 # This will take a while ○ emulator & #
  • 21. 1 picture == 1000 words This is an image based on one of the earliest JB versions. Not much, if any has changed since the very early days of “Cupcake” and “Donut”.
  • 22. References 1. http://www.businessinsider.com/history-of-android-2013-8?op=1 2. http://source.android.com 3. http://developer.android.com 4. Introduction to ROM cooking - Ron Munitz 5. “Bringing up Android on your favorite X86 Workstation or VM” - Ron Munitz, AnDevCon Boston, 2013 6. “Android IA bringup - words of a veteran” - Ron Munitz, Android Builders Summit, 2013 7. http://git-scm.com/