Explicação detalhada da série Android JNI do diretório de saída do arquivo da biblioteca de configuração CMake

1. Premissa

Leia o artigo anterior da série Android JNI com explicação detalhada do uso das ferramentas de compilação CMake , que fala sobre a necessidade de configurar dois arquivos: CMakeList.txt e build.gradle

2. Configure o caminho do arquivo da biblioteca de saída da ferramenta de compilação CMake

1. Caminho de saída do arquivo de biblioteca padrão: app/build/intermediates/cmake/debug/obj

Percebe-se que não é conveniente pesquisar sempre, por isso precisamos configurar esse caminho para o nosso caminho customizado.

2. Defina o diretório de saída do arquivo de biblioteca

Basta escrever o seguinte código no arquivo CMakeList.txt:

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})

 ​​​​​Este é o código que adicionei ao projeto

 significado:

# CMAKE_CURRENT_SOURCE_DIR  refere-se ao caminho de origem da biblioteca cmake, geralmente build/.../cmake/

# /../jniLibs/  refere-se ao diretório no mesmo nível do diretório onde CMakeList.txt está localizado: jniLibs (se não existir, será criado)

# ANDROID_ABI Ao gerar arquivos de biblioteca, use a estratégia ABI configurada pelo gradle (ou seja: qual plataforma os arquivos de biblioteca correspondentes são gerados)

 Após adicionar o código acima para configurar o caminho de saída, faremos o projeto e o seguinte diretório será gerado:

Ou seja, o diretório no mesmo nível do diretório onde CMakeList.txt está localizado (diretório cpp).

situação anormal:

Neste ponto, meu projeto está rodando normalmente sem encontrar um erro: mais de um arquivo foi encontrado com o caminho independente do sistema operacional 'lib/armeabi-v7a/libtestnative'

Se encontrado, significa que há arquivos de biblioteca duplicados, ou seja, uma cópia em construção será carregada no projeto e o diretório especificado jniLibs também será carregado no projeto. Basta alterar o nome e certificar-se de que ele se refere apenas a um local, como jniLibsss. Não haverá erro.

 

Acho que você gosta

Origin blog.csdn.net/sunbinkang/article/details/132484716
Recomendado
Clasificación