23
ANDROID OPEN SOURCE PROJECT – AOSP O que realmente é Open Source e o que não é no Android

Android Open Source Project - AOSP

Embed Size (px)

DESCRIPTION

O que do Android é realmente Open Source e o que não é

Citation preview

Page 1: Android Open Source Project  - AOSP

ANDROID OPEN SOURCE PROJECT – AOSP

O que realmente é Open Source e o que não é no Android

Page 2: Android Open Source Project  - AOSP

AOSPAndroid Open Source Project

Page 3: Android Open Source Project  - AOSP

O QUE É O AOSP• Uma iniciativa criada para

guiar o desenvolvimento da plataforma Android

• Consiste no Sistema Operacional, midleware e aplicativos

• Mantido pelo Google

• Regulado pelo Android Compatibility Program (ACP)

Page 4: Android Open Source Project  - AOSP

Linhas de Código

Commits por Mês

• Desde 8 de Março de 2008 • Aberto em 22 de Outubro de 2008 • 10.715.902 linhas de código • 319.322 commits por 2.314 pessoas

1.6 Donut2.0 Eclair

2.2 Froyo

2.3 Gingerbread

3.0 Honeycomb

4.0 Ice Cream Sandwich

4.1 Jelly Bean

4.4 KitKat

5.0 Lollipop

Page 5: Android Open Source Project  - AOSP

LICENÇAS

• Preferencialmente Apache Software License 2.0 (ASLv2) para o userspace

• O Kernel usa GPLv2

• Partes tem o código fechado com licenças comerciais (ex.: Serviços do Google Play)

Page 6: Android Open Source Project  - AOSP

ANDROID COMPATIBILITY PROGRAM (ACP)

• Ambiente consistente de hardware e aplicativos para desenvolvedores

• Experiência consistente para o usuário

• Fabricantes se diferenciando, porém mantendo compatibilidade

• Minimizar custos e tempo associados com compatibilidade

Page 7: Android Open Source Project  - AOSP

CONSISTE EM

• Código fonte do Android

• Documento de Definição de Compatibilidade (CDD)

• Conjunto de Testes de Compatibilidade (CTS)

Page 8: Android Open Source Project  - AOSP

O QUE NÃO É ABERTO• Aplicativos do Google

• Google Play Services

• Google Mobile Services (GMS)

• Experiência Google

• Licença Comercial

• “Tudo ou Nada"

Page 9: Android Open Source Project  - AOSP

GOOGLE MOBILE SERVICES• Gmail

• Chrome

• Google+

• Maps

• YouTube

• Google Drive

• Google Translate

• Google Now

• Google Play

Page 10: Android Open Source Project  - AOSP

GOOGLE PLAY SERVICES• Criado em 26 de Setembro de 2012

• Sicronismo de contas

• Google+ (SSO, compartilhamento)

• Google Maps

• Location APIs

• Google Play Games

• Cloud Messaging (Push Notifications)

• Android Device Manager

Page 11: Android Open Source Project  - AOSP

CUSTOM ROMS• CyanogenMod

• Paranoid Android

• XobotOS (Xamarin + C#)

• Android Open Kang Project AOKP

• Baidu Yi

• Replicant

Page 12: Android Open Source Project  - AOSP

ANDROID FORKS

• Amazon Fire OS

• Barnes & Noble Nook

• Nokia X

• Yandex.kit

• PrivatOS

Page 13: Android Open Source Project  - AOSP

MÃOS À OBRASBaixe, compile e instale

Page 14: Android Open Source Project  - AOSP

O AMBIENTE DE DESENVOLVIMENTO

• Pelo menos 30 GB de espaço live em disco

• Idealmente 16 GB de RAM e processador de 8 cores

• Python 2.6 ou 2.7 (python.org)

• GNU Make 3.81 ou 3.82 (gnu.org)

• JDK 7 (como instalar o JDK)

• Git 1.7 ou superior (git-scm.org)

Page 15: Android Open Source Project  - AOSP

A FERRAMENTA REPO

1. Coloque uma pasta bin no seu home e deixe-o acessível pelo PATH

$  mkdir  ~/bin  $  PATH=~/bin:$PATH  

2. Baixe o repo e garanta que ele pode ser executado

$  curl  https://storage.googleapis.com/git-­‐repo-­‐downloads/repo  >  ~/bin/repo  $  chmod  a+x  ~/bin/repo

Page 16: Android Open Source Project  - AOSP

A FERRAMENTA REPO

3. Inicialize a sua pasta de trabalho $  mkdir  aosp  $  cd  aosp  

4. Baixe o código do Android Open Source Project $  repo  init  -­‐u  https://android.googlesource.com/platform/manifest  -­‐b  android-­‐5.0.0_r6  $  repo  sync

Page 17: Android Open Source Project  - AOSP

BAIXANDO OUTRAS ROMS

• Baixe o código do Android Open Kang Project $  repo  init  -­‐u  git://github.com/AOKP/platform_manifest.git  -­‐b  jb-­‐mr2  $  repo  sync  

• Baixe o código do CyanogenMod $  repo  init  -­‐u  https://github.com/CyanogenMod/android.git  -­‐b  cm-­‐11.0  $  repo  sync  

• Baixe o código do Paranoid Android $  repo  init  -­‐u  https://github.com/AOSPA/manifest  -­‐b  lollipop  $  repo  sync

Page 18: Android Open Source Project  - AOSP

COMPILANDO O ANDROID

• Processo demorado

• Mais de 2 h com 4-core e 8 GB de RAM

• 15 min com 48-core e 128 GB de RAM

• 45 min com 16-core e 32 GB de RAM

Page 19: Android Open Source Project  - AOSP

COMPILANDO O ANDROID

1. Inicialize o ambiente de compilação $  .  build/envsetup.sh  

ou $  source  build/envsetup.sh  

2. Escolha a plataforma a ser compilada $  lunch  aosp_hammerhead-­‐userdebug  

ou veja as alternativas $  lunch

Page 20: Android Open Source Project  - AOSP

COMPILANDO O ANDROID

3. Compile a distribuição

A opção -jN cria N threads de compilação, calcule este valor da seguinte forma: N=cores do processador×1.5

$  make  -­‐j24

Page 21: Android Open Source Project  - AOSP

OS BINÁRIOS DA PLATAFORMA - NEXUS 5

• O Google não distribui os arquivos de driver binários das plataformas junto com o AOSP

• Alguns drivers nem mesmo estão nos pacotes de download

Page 22: Android Open Source Project  - AOSP

OS BINÁRIOS DA PLATAFORMA - NEXUS 5

1. Baixe os binários que o Google publica aqui $  wget  https://dl.google.com/dl/android/aosp/broadcom-­‐hammerhead-­‐lrx21o-­‐01fad5db.tgz  $  wget  https://dl.google.com/dl/android/aosp/lge-­‐hammerhead-­‐lrx21o-­‐c6cf4582.tgz  $  wget  https://dl.google.com/dl/android/aosp/qcom-­‐hammerhead-­‐lrx21o-­‐e0cd4949.tgz  

2. Descompacte, execute os scripts no diretório de trabalho do AOSP e aceite as licenças

$  for  f  in  *.tgz;  do  tar  xzf  $f;  done  $  for  extractor_script  in  *.sh;  do  bash  $extractor_script;  done

Page 23: Android Open Source Project  - AOSP

INSTALANDO A ROM1. Crie o pacote $  make  -­‐j24  updatepackage  

2. Reinicie o aparelho $  adb  reboot  bootloader  

3. Destrave o aparelho $  fastboot  oem  unlock  $  fastboot  format  cache  $  fastboot  format  userdata  

4. Instale o pacote $  fastboot  -­‐w  update  nome-­‐do-­‐pacote.zip