Aprende contigo de por vidaXi, este es el programador de Android.
Artículos clásicos recomendados. Al leer este artículo, obtendrá los siguientes puntos de conocimiento:
1. Introducción a Android.mk
2. Formato básico de Android.mk 3.
Estudio en profundidad de Android.mk 14.
Estudio en profundidad de Android.mk
25. Estudio en profundidad de Android.mk
36. Android.mk declaraciones de juicio
7. Referencias
1. Introducción a Android.mk
Android.mk es un archivo MAKE proporcionado por Android. Tenga en cuenta que se utiliza para compilar y generar archivos como (exe, so, a, jar, apk).
Archivo generado Android.mk
2. Formato básico de Android.mk
El formato básico de Android.mk es el siguiente
# 定义模块当前路径
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. Estudio en profundidad 1 de Android.mk
Se pueden compilar varios archivos de destino utilizando Android.mk:
Android.mk compila múltiples archivos de destino
Compilar biblioteca dinámica
Los archivos C/C++ se compilan para generar archivos .so de biblioteca estática como referencia de la siguiente manera
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
Los archivos C/C++ se compilan para generar bibliotecas estáticas. Una referencia de archivo es la siguiente
#编译静态库
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. Estudio en profundidad 2 de Android.mk
Recursos de referencia de Android.mk
Biblioteca estática de referenciaLOCAL_STATIC_LIBRARIES += libxxxxx
LOCAL_STATIC_LIBRARIES := \
...
libxxx2 \
libxxx \
Biblioteca dinámica de referenciaLOCAL_SHARED_LIBRARIES += libxxxxx
LOCAL_SHARED_LIBRARIES := liblog libnativehelper libGLESv2
Hacer referencia a archivos de biblioteca de tercerosLOCAL_LDFLAGS:=-L/PATH -Lxxx
LOCAL_LDFLAGS := $(LOCAL_PATH)/lib/libtest.a
Hacer referencia a archivos de encabezado de tercerosLOCAL_C_INCLUDES :=path
p.ej:
LOCAL_C_INCLUDES = $(INCLUDES)
5. Estudio en profundidad 3 de Android.mk
Android.mk estudio en profundidad tres
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 paquete 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)
Paquete de tarro estático:
include $(BUILD_STATIC_JAVA_LIBRARY)
Los archivos JAR empaquetados con archivos .class se pueden ejecutar en cualquier máquina virtual Java
Paquete de tarro dinámico:
include $(BUILD_JAVA_LIBRARY)
Los archivos jar se empaquetan usando .dex basado en paquetes jar estáticos. .dex es el formato de archivo utilizado por el sistema Android.
Tarro de dependencia de 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)
Paquete jar precompilado
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)
Los tipos de archivos precompilados son los siguientes:
1.LOCAL_MODULE_CLASS:
tipo de archivo de compilación2.JAVA_LIBRARIES:
archivo de almacenamiento dex3.APLICACIONES:
archivo APK4.SHARED_LIBRARIES:
archivos de biblioteca dinámica5.EJECUTABLES:
Archivos binarios6.ETC:
Otros formatos de archivo
6. Declaración de juicio de Android.mk
Declaraciones de decisión en Android.mk
ifeq($(VALUE), x) #ifneq
do_yes
else
do_no
endif
ifeq/ifneq: realiza una compilación relacionada según las condiciones de juicio
referencias:
[Documentación de Tencent] Base de conocimientos del marco de Android
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5
Recomendación amistosa:
Colección de información útil sobre el desarrollo de Android.
En este punto, este artículo ha terminado. El editor cree que el artículo es una reimpresión de Internet y es excelente. Puede hacer clic para leer el artículo original y apoyar al autor original. Si hay alguna infracción, comuníquese con el editor para eliminarlo. Sus sugerencias y correcciones son bienvenidas. . Esperamos su atención y gracias por leer, ¡gracias!
¡Haz clic para leer el artículo original y darle me gusta al jefe!