Building AOSP for NexusBuilding AOSP for Nexus
77
Nanik TolaramNanik Tolaram
@nanikjava@nanikjava
Thank You !Thank You !
WARNING !WARNING !
 Voiding warrantyVoiding warranty
 Bricked deviceBricked device
 No support (DIY support)No support (DIY support)
Who Am I ?Who Am I ?
 Enterprise Java DeveloperEnterprise Java Developer
 Android Framework & Kernel tinkererAndroid Framework & Kernel tinkerer
 Creating electronics gadgetsCreating electronics gadgets
 ozandroid.info & kernel.ozandroid.infoozandroid.info & kernel.ozandroid.info
What you need ?What you need ?
 Android DeviceAndroid Device
 64-bit Linux based distro64-bit Linux based distro
 Fast Computer (16/32GB RAM, MultiFast Computer (16/32GB RAM, Multi
Core processor, Fast hard drive)Core processor, Fast hard drive)
 Patience !!!Patience !!!
Why Nexus 7 ?Why Nexus 7 ?
 Source code (kernel) & binaries availableSource code (kernel) & binaries available
 Code name – Grouper (WiFi) / NakashiCode name – Grouper (WiFi) / Nakashi
(3G)(3G)
 BIG community supportBIG community support
ArchitectureArchitecture
PartitionPartition
 Recovery – recovery.imgRecovery – recovery.img
 ““saviour” partitionsaviour” partition
 Boot – boot.imgBoot – boot.img
 Main partition for bottingMain partition for botting
 System – system.imgSystem – system.img
 Android framework & apps partitionAndroid framework & apps partition
 Data – data.imgData – data.img
 Application data storage partitionApplication data storage partition
BootingBooting
Bootloader Microcode
Boot Partition
System Partition
Recovery ?
Recovery Partition
N
Y
Building ProcessBuilding Process
1.1. Checkout AOSPCheckout AOSP
2.2. Checkout Linux KernelCheckout Linux Kernel
3.3. Download Device DriversDownload Device Drivers
4.4. Extract & Device DriversExtract & Device Drivers
5.5. Change ConfigurationChange Configuration
6.6. BuildBuild
Source CodeSource Code
http://elinux.org/Android_Source_Code_Description
Building – Code &Building – Code &
DriversDrivers
 Android Source CodeAndroid Source Code
 Checkout Code - source.android.com/source/downloading.htmlCheckout Code - source.android.com/source/downloading.html
 Branch – masterBranch – master
 Nexus 7 DriversNexus 7 Drivers
 developers.google.com/android/nexus/drivers/#grouperdevelopers.google.com/android/nexus/drivers/#grouper
 Extract and Copy to <aosp>/vendorExtract and Copy to <aosp>/vendor
Building –Building –
ConfigurationConfiguration
 Linux Kernel & ConfigurationLinux Kernel & Configuration
 Linux Code - android.googlesource.com/kernel/tegra/Linux Code - android.googlesource.com/kernel/tegra/
 Linux Config Info - source.android.com/source/building-kernels.htmlLinux Config Info - source.android.com/source/building-kernels.html
 tegra3_android_defconfig - config for Nexus 7tegra3_android_defconfig - config for Nexus 7
 Build ConfigurationBuild Configuration
 /build/core/tasks/kernel.mk (from Cyanogenmod)/build/core/tasks/kernel.mk (from Cyanogenmod)
 Linux Directory ConfigurationLinux Directory Configuration
 /device/asus/grouper/BoardConfigCommon.mk/device/asus/grouper/BoardConfigCommon.mk
 /device/asus/grouper/BoardConfig.mk/device/asus/grouper/BoardConfig.mk
DemoDemo
 Starting build processStarting build process
 /out folder/out folder
 Flashing (fastboot)Flashing (fastboot)

Learning AOSP - Building AOSP for Nexus 7

  • 1.
    Building AOSP forNexusBuilding AOSP for Nexus 77 Nanik TolaramNanik Tolaram @nanikjava@nanikjava
  • 2.
  • 3.
    WARNING !WARNING ! Voiding warrantyVoiding warranty  Bricked deviceBricked device  No support (DIY support)No support (DIY support)
  • 4.
    Who Am I?Who Am I ?  Enterprise Java DeveloperEnterprise Java Developer  Android Framework & Kernel tinkererAndroid Framework & Kernel tinkerer  Creating electronics gadgetsCreating electronics gadgets  ozandroid.info & kernel.ozandroid.infoozandroid.info & kernel.ozandroid.info
  • 5.
    What you need?What you need ?  Android DeviceAndroid Device  64-bit Linux based distro64-bit Linux based distro  Fast Computer (16/32GB RAM, MultiFast Computer (16/32GB RAM, Multi Core processor, Fast hard drive)Core processor, Fast hard drive)  Patience !!!Patience !!!
  • 6.
    Why Nexus 7?Why Nexus 7 ?  Source code (kernel) & binaries availableSource code (kernel) & binaries available  Code name – Grouper (WiFi) / NakashiCode name – Grouper (WiFi) / Nakashi (3G)(3G)  BIG community supportBIG community support
  • 7.
  • 8.
    PartitionPartition  Recovery –recovery.imgRecovery – recovery.img  ““saviour” partitionsaviour” partition  Boot – boot.imgBoot – boot.img  Main partition for bottingMain partition for botting  System – system.imgSystem – system.img  Android framework & apps partitionAndroid framework & apps partition  Data – data.imgData – data.img  Application data storage partitionApplication data storage partition
  • 9.
    BootingBooting Bootloader Microcode Boot Partition SystemPartition Recovery ? Recovery Partition N Y
  • 10.
    Building ProcessBuilding Process 1.1.Checkout AOSPCheckout AOSP 2.2. Checkout Linux KernelCheckout Linux Kernel 3.3. Download Device DriversDownload Device Drivers 4.4. Extract & Device DriversExtract & Device Drivers 5.5. Change ConfigurationChange Configuration 6.6. BuildBuild
  • 11.
  • 12.
    Building – Code&Building – Code & DriversDrivers  Android Source CodeAndroid Source Code  Checkout Code - source.android.com/source/downloading.htmlCheckout Code - source.android.com/source/downloading.html  Branch – masterBranch – master  Nexus 7 DriversNexus 7 Drivers  developers.google.com/android/nexus/drivers/#grouperdevelopers.google.com/android/nexus/drivers/#grouper  Extract and Copy to <aosp>/vendorExtract and Copy to <aosp>/vendor
  • 13.
    Building –Building – ConfigurationConfiguration Linux Kernel & ConfigurationLinux Kernel & Configuration  Linux Code - android.googlesource.com/kernel/tegra/Linux Code - android.googlesource.com/kernel/tegra/  Linux Config Info - source.android.com/source/building-kernels.htmlLinux Config Info - source.android.com/source/building-kernels.html  tegra3_android_defconfig - config for Nexus 7tegra3_android_defconfig - config for Nexus 7  Build ConfigurationBuild Configuration  /build/core/tasks/kernel.mk (from Cyanogenmod)/build/core/tasks/kernel.mk (from Cyanogenmod)  Linux Directory ConfigurationLinux Directory Configuration  /device/asus/grouper/BoardConfigCommon.mk/device/asus/grouper/BoardConfigCommon.mk  /device/asus/grouper/BoardConfig.mk/device/asus/grouper/BoardConfig.mk
  • 14.
    DemoDemo  Starting buildprocessStarting build process  /out folder/out folder  Flashing (fastboot)Flashing (fastboot)