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 clean
com 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
-jN
ou 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.mk
especí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 quisercd
no 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.
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.