Geração de código em tempo de compilação
Pietro
• Criar classes Java
• Compilação
• Nativo
• Annotations + APT
Plano
• Desafio bacana
• Dinamicidade
• Evitar erros
Motivação
• Java 5
• Runtime/Compilação/Source
• Metadados
• Hibernate, Testes unitários
• @Override, @Deprecated
Annotations
• Java é estática
• Custom processor
• Criar resources, classes, bytescodes
APT
• Javac -> Bytecodes
• dx (*.class -> classes.dex)
• apkbuilder
Compilação Android
Javac + APT
• Análise dos fontes
• Criação de todos os processadores
• Procura pelo processador correto
• Gera novos fontes ou bytecodes
• Repete
Layouts
Zant
• View injection
• Annotations + APT
• Nova classes com os findViewById(int)
• Views.inject()
Zant
Exemplo

Zant View Intejector for Android

  • 1.
    Geração de códigoem tempo de compilação Pietro
  • 2.
    • Criar classesJava • Compilação • Nativo • Annotations + APT Plano
  • 3.
    • Desafio bacana •Dinamicidade • Evitar erros Motivação
  • 4.
    • Java 5 •Runtime/Compilação/Source • Metadados • Hibernate, Testes unitários • @Override, @Deprecated Annotations
  • 5.
    • Java éestática • Custom processor • Criar resources, classes, bytescodes APT
  • 6.
    • Javac ->Bytecodes • dx (*.class -> classes.dex) • apkbuilder Compilação Android
  • 7.
    Javac + APT •Análise dos fontes • Criação de todos os processadores • Procura pelo processador correto • Gera novos fontes ou bytecodes • Repete
  • 8.
  • 9.
    Zant • View injection •Annotations + APT • Nova classes com os findViewById(int) • Views.inject()
  • 10.
  • 11.