O script ndk-build cria projetos que usam o sistema de compilação baseado em Make
do NDK. Há uma documentação mais específica para as configurações Android.mk e Application.mk usadas pelo ndk-build.
Aspectos internos
A execução do script ndk-build é equivalente à execução do seguinte comando:
$GNUMAKE -f <ndk>/build/core/build-local.mk <parameters>
$GNUMAKE aponta para o GNU Make 3.81 ou posterior e <ndk> aponta para o diretório de instalação do NDK. Você pode usar
essas informações para invocar o ndk-build por outros scripts de shell ou seus próprios
arquivos make.
Invocar pela linha de comando
O script ndk-build reside no diretório de instalação do NDK de nível superior. Para executar o script pela linha de comando, invoque-o enquanto ele estiver no diretório do projeto do app.
Exemplo:
$ cd <project> $ <ndk>/ndk-build
Neste exemplo, <project> aponta para o diretório raiz do seu projeto e <ndk> é o diretório onde você instalou o NDK.
Opções
Todos os parâmetros para ndk-build são passados diretamente ao comando make GNU subjacente que executa os scripts de compilação do NDK. Combine o ndk-build e as opções no formulário ndk-build <option>. Exemplo:
$ ndk-build clean
As seguintes opções estão disponíveis:
-
clean -
Remover binários gerados anteriormente.
Observação: no Mac OS X, executar
ndk-build cleancom um alto número de execuções paralelas (link em inglês) pode resultar em um erro de compilação que inclui a seguinte mensagem:rm: fts_read: No such file or directory
Para evitar esse problema, é recomendável não usar o modificador
-jNou selecionar um valor menor paraN, como 2. -
V=1 - Iniciar o build e exibir os comandos correspondentes.
-
-B - Forçar um build completamente novo.
-
-B V=1 - Forçar um build completamente novo e exibir os comandos correspondentes.
-
NDK_LOG=1 - Exibir mensagens internas do registro do NDK, usadas para depurar o próprio NDK.
-
NDK_DEBUG=1 - Forçar um build depurável (consulte a Tabela 1).
-
NDK_DEBUG=0 - Forçar um build de lançamento (consulte a Tabela 1).
-
NDK_HOST_32BIT=1 - Sempre usar o conjunto de ferramentas em modo de 32 bits.
-
NDK_APPLICATION_MK=<file> -
Criar, usando um arquivo
Application.mkespecífico apontado pela variávelNDK_APPLICATION_MK. -
-C <project> -
Criar o código nativo para o caminho do projeto localizado em
<project>. Útil se você não quisercdno terminal.
Builds depuráveis versus builds de lançamento
Use a opção NDK_DEBUG e, em alguns casos,
AndroidManifest.xml para especificar o build de depuração ou de lançamento,
o comportamento relacionado à otimização e a inclusão de símbolos. A Tabela 1 mostra os resultados de cada combinação possível de configurações.
Tabela 1. Resultados das combinações NDK_DEBUG (linha de comando) e android:debuggable (manifesto).
| Configuração do manifesto | NDK_DEBUG=0 | NDK_DEBUG=1 | NDK_DEBUG não especificado |
|---|---|---|---|
| android:debuggable="true" | Depurar; símbolos; otimizado *1 | Depurar; símbolos; não otimizado *2 | (igual a NDK_DEBUG=1) |
| android:debuggable="false" | Lançamento; símbolos; otimizado | Lançamento; símbolos; não otimizado | Lançamento; sem símbolos; otimizado*3 |
*2: padrão para executar
ndk-gdb.*3: modo padrão.
Observação: "NDK_DEBUG=0" é o equivalente a "APP_OPTIM=release" e é compilado com "-O2". "NDK_DEBUG=1" é o equivalente a "APP_OPTIM=debug" em "Application.mk" e é compilado com "-O0". Para saber mais sobre o "APP_OPTIM", consulte Application.mk
A sintaxe da linha de comando é, por exemplo:
$ ndk-build NDK_DEBUG=1
Requisitos
O GNU Make 4 ou versão mais recente é necessário para usar o ndk-build ou o NDK em geral. O NDK inclui a
própria cópia do GNU Make e a usará, a menos que você tenha definido a variável
de ambiente $GNUMAKE para apontar para uma marca inadequada.
Bancos de dados de compilação JSON
No NDK r18 e versões mais recentes, o ndk-build pode gerar um banco de dados de compilação JSON.
Você poderá usar ndk-build compile_commands.json para gerar o banco de dados
sem criar seu código ou ndk-build GEN_COMPILE_COMMANDS_DB=true se
quiser criar e gerar o banco de dados como um efeito colateral.