Introdução

Desejamos criar guias para desenvolvedores no nosso nível intermediário de experiência. Nestes guias, pretendemos descrever os arquivos e diretórios mais importantes do código, e como usá-los. Considere os caminhos sempre partindo do diretório raiz android/system.

Veja também os http://wiki.cyanogenmod.org/w/Development.

Makefiles

O código para compilação está espalhado por muitos arquivos diferentes. Cada pacote contém em seu código um arquivo Android.mk específico para ele, cada aparelho possui um makefile para especificar pacotes específicos do modelo, e além disso há makefiles para o kernel, e para a própria distruibuição CyanogenMod.

O arquivo base é o arquivo build/core/main.mk. Esse arquivo herda de uma infinidade de outros arquivos .mk as instruções de compilação para cada módulo, e para cada aparelho.

  • vendor/cm/config/*.mk - definem os pacotes CyanogenMod, como apps padrão e coisas assim
  • device/<distribuidora>/<modelo>/<modelo>.mk - define os pacotes específicos do modelo, como drivers e blobs proprietários (por exemplo, o arquivo device/samsung/i9300/i9300.mk lista os drives específicos do aparelho Samsung Galaxy S III)
  • packages/apps/<pacote>/Android.mk - inclui regras de compilação para o app
  • TODO

Repo e Manifests

O repo é iniciado com um repositório git que contenha os manifests, arquivos que indicam quais repositórios serão clonados para compôr o código-fonte. Os arquivos .xml que estiverem no repositório serão guardados na pasta .repo/manifests. Dentre estes, o que chama default.xml será copiado como manifest.xml na pasta .repo. É possível configurar o repo para usar um manifest diferente dentre os que estão na pasta .repo/manifests. Além disso, os arquivos que estiverem na pasta .repo/manifests serão todos usados em conjunto com o manifest.xml.