Aprenda com você para a vidaXi, este é o programador Android
Artigos clássicos recomendados. Ao ler este artigo, você obterá os seguintes pontos de conhecimento:
1. Introdução ao Android.mk
2. Formato básico do Android.mk 3.
Estudo aprofundado do Android.mk 14.
Estudo aprofundado do Android.mk
25. Estudo aprofundado do Android.mk
36. Android.mk declarações de julgamento
7. Referências
1. Introdução ao Android.mk
Android.mk é um makefile fornecido pelo Android. Observe que ele é usado para compilar e gerar arquivos como (exe, so, a, jar, apk).
Arquivo gerado Android.mk
2. Formato básico do Android.mk
O formato básico do Android.mk é o seguinte
# 定义模块当前路径
LOCAL_PATH := $(call my-dir)
#清空当前环境变量
include $(CLEAR_VARS)
................
# 引入头文件等
LOCAL_xxx := xxx
#编译生成的文件名
LOCAL_MODULE := hello
#编译该模块所需的源码
LOCAL_SRC_FILES := hello.c
#引入jar包等
LOCAL_xxx := xxx
................
#编译生成文件的类型
#LOCAL_MODULE_CLASS 、JAVA_LIBRARIES
#APPS 、 SHARED_LIBRARIES
#EXECUTABLES 、 ETC
include $(BUILD_EXECUTABLE)
3. Estudo aprofundado do Android.mk 1
Vários arquivos de destino podem ser compilados usando Android.mk:
Android.mk compila vários arquivos de destino
Compilar biblioteca dinâmica
Arquivos C/C++ são compilados para gerar arquivos .so de biblioteca estática para referência como segue
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 生成libhell.so
LOCAL_MODULE = libhello
LOCAL_CFLAGS = $(L_CFLAGS)
LOCAL_SRC_FILES = hello.c
LOCAL_C_INCLUDES = $(INCLUDES)
LOCAL_SHARED_LIBRARIES := libcutils
LOCAL_COPY_HEADERS_TO := libhello
LOCAL_COPY_HEADERS := hello.h
#编译动态库 BUILD_SHARED_LIBRARY
include $(BUILD_SHARED_LIBRARY)
Compilar biblioteca estática
Arquivos C/C++ são compilados para gerar bibliotecas estáticas. Uma referência de arquivo é a seguinte
#编译静态库
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 生成libhell.a
LOCAL_MODULE = libhello
LOCAL_CFLAGS = $(L_CFLAGS)
LOCAL_SRC_FILES = hello.c
LOCAL_C_INCLUDES = $(INCLUDES)
LOCAL_SHARED_LIBRARIES := libcutils
LOCAL_COPY_HEADERS_TO := libhello
LOCAL_COPY_HEADERS := hellos.h
# 编译 静态库 BUILD_STATIC_LIBRARY
include $(BUILD_STATIC_LIBRARY)
4. Estudo aprofundado do Android.mk 2
Recursos de referência do Android.mk
Biblioteca estática de referênciaLOCAL_STATIC_LIBRARIES += libxxxxx
LOCAL_STATIC_LIBRARIES := \
...
libxxx2 \
libxxx \
Biblioteca dinâmica de referênciaLOCAL_SHARED_LIBRARIES += libxxxxx
LOCAL_SHARED_LIBRARIES := liblog libnativehelper libGLESv2
Faça referência a arquivos de biblioteca de terceirosLOCAL_LDFLAGS:=-L/PATH -Lxxx
LOCAL_LDFLAGS := $(LOCAL_PATH)/lib/libtest.a
Faça referência a arquivos de cabeçalho de terceirosLOCAL_C_INCLUDES :=path
por exemplo:
LOCAL_C_INCLUDES = $(INCLUDES)
5. Estudo aprofundado do Android.mk 3
Estudo aprofundado três do Android.mk
Compilar apk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# 生成hello apk
LOCAL_PACKAGE_NAME := hello
include $(BUILD_PACKAGE)
Compilar pacote jar
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# 生成 hello
LOCAL_MODULE := hello
# 编译生成静态jar包
include $(BUILD_STATIC_JAVA_LIBRARY)
#编译生成共享jar
include $(BUILD_JAVA_LIBRARY)
Pacote jar estático:
include $(BUILD_STATIC_JAVA_LIBRARY)
Arquivos JAR empacotados usando arquivos .class podem ser executados em qualquer máquina virtual Java
Pacote jar dinâmico:
include $(BUILD_JAVA_LIBRARY)
Os arquivos jar são empacotados usando .dex com base em pacotes jar estáticos. .dex é o formato de arquivo usado pelo sistema Android.
Jar de dependência do APK
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# 静态jar包
LOCAL_STATIC_JAVA_LIBRARIES := static-library
#动态jar包
LOCAL_JAVA_LIBRARIES := share-library
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := hello
include $(BUILD_PACKAGE)
Pacote jar pré-compilado
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#指定编译生成的文件类型
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE := hello
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# 预编译
include $(BUILD_PREBUILT)
Os tipos de arquivo pré-compilados são os seguintes:
1.LOCAL_MODULE_CLASS:
tipo de arquivo de compilação2.JAVA_LIBRARIES:
arquivo dex3.APPS:
arquivo APK4.SHARED_LIBRARIES:
arquivos de biblioteca dinâmica5.EXECUTABLES:
Arquivos binários6.ETC:
Outros formatos de arquivo
6. Declarações de julgamento do Android.mk
Declarações de decisão em Android.mk
ifeq($(VALUE), x) #ifneq
do_yes
else
do_no
endif
ifeq/ifneq: realiza compilação relacionada com base em condições de julgamento
referências:
[Documentação Tencent] Base de conhecimento do Android Framework
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5
Recomendação amigável:
Coleção de informações úteis sobre desenvolvimento Android
Neste ponto, este artigo terminou. O editor acha que o artigo foi reimpresso da Internet e é excelente. Você pode clicar para ler o artigo original e apoiar o autor original. Se houver alguma violação, entre em contato com o editor para excluí-lo. Suas sugestões e correções são bem-vindas . Aguardamos sua atenção e obrigado pela leitura, obrigado!
Clique para ler o artigo original e curtir o chefe!