Um novo conjunto de bibliotecas e ferramentas chamado fplutil do Fun Propulsion Labs, do Google, promete facilitar o desenvolvimento de aplicações C/C++ para Android.
A Fplutil é formada por quatro partes: build_all_android.py, buildutil, libfplutil e android_ndk_perf.py.
build_all_android.py
Esse script permite a construção, instalação e execução de aplicativos nativos pela linha de comando. O script construirá aplicativos C/C++ através do Android NDK, sendo útil tanto para automação da construção quanto para a simplificação da fase de compilar e executar.
O script suporta a especificação de configurações de build da linha de comando, como definir o modo de depuração, nível de otimização, entre outros. Também suporta o uso de múltiplos dispositivos simultâneos.
buildutil
Buildutil é um conjunto de módulos Python que simplifica o processo de escrever scripts de automação continua que usam CMake. A seguir temos um exemplo de uso do buildutil para construir e criar o binário de um aplicativo Android:
- O primeiro passo é criar uma instância android.BuildEnvironment para realizar o restantes das operações de build:
parser = argparse.ArgumentParser() buildutil.android.BuildEnvironment.add_arguments(parser) args = parser.parse_args() env = buildutil.android.BuildEnvironment(args)
Com esse passo concluído, o aplicativo é construído usando o ndk-build para o componente nativo (C/C++) e ant para o componente Java e APK:
(rc, errmsg) = env.build\_all()
- Com esse passo concluído, o aplicativo é construído usando o ndk-build para o componente nativo (C/C++) e ant para o componente Java e APK:
(rc, errmsg) = env.build\_all()
- Para terminar, o APK pode ser arquivado em um arquivo zip:
env.make\_archive(['apks'], 'output.zip', exclude=['objs', 'objs-debug'])
Além de construções NDK no Android, essa ferramenta suporta construções Linux, OS X e Windows.
libfplutil
O libfplutil consiste em um módulo NDK nativo do Android que constroem duas bibliotecas estáticas, libfplutil_main e libfplutil_print, que facilita a codificação de aplicações C/C++:
- libfplutil_main implementa um ponto de entrada Android NativeActivity android_main() que chama o tradicional ponto de entrada C/C++ main(). Isso possibilita escrever uma aplicação com um ponto de entrada int main() (como qualquer aplicação C/C++ padrão), fazer a link-edição dessa biblioteca e fazê-la rodar no Android;
- libfplutil_print implementa um conjunto de wrappers para funções que escrevem no stream padrão de saída. Isso possibilita escrita no terminal usando printf para ter sua saída redirecionada ao log do Android.
Ao fazer a link-edição ao libfplutil, o programa Hello World pode ser compilado e executado no Android sem modificações.
android_ndk_perf.py
Esta é uma ferramenta desktop que possibilita os desenvolvedores nativos (C/C++) medirem a utilização de CPU nos aplicativos Android, guiando seus esforços de otimização. Android_ndk_perf pode executar na estação de trabalho do desenvolvedor para coletar rastros (traces) de aplicativos executando em dispositivos Android. Depois que esses traces de aplicativos são coletados os dados podem ser examinados utilizando comandos Perf do Linux ou uma visualização HTML pode ser gerada para inspeção em um navegador web.
A libfplutil pode ser baixada do github, que também hospeda sua documentação.
O Fun Propulsion Labs é uma equipe dentro do Google dedicada em avançar games no Android e outras plataformas. Mais cedo esse ano, eles transformaram em código aberto o LiquidFun 1.1, um motor de física 2D que incluía simulação de fluidos.