conocimiento Android 001 - Android.mk archivo breve

#第一行肯定要是文件注释了。This file is to build Settings.apk.
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_PACKAGE_NAME := Settings
LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

La ruta del archivo es Android.mk paquete / app / Configuración / Android.mk, para analizar el archivo

GNU make 'función' macro debe ser invocado usando '$ (llamada)', van a devolver la llamada al texto del mensaje.

-------------------------------------------------- -------------------------------------------------- --------------------------

(1) LOCAL_PATH: = $ (llamar a mi-dir)

Android.mk archivo debe definir primero una buena variables de LOCAL_PATH. Se utiliza para encontrar los archivos de origen en el árbol de desarrollo.

Función macro 'mi-dir', proporcionado por el sistema compilador, un trayecto de corriente de retorno (es decir, directorio de archivos Android.mk que contiene el archivo).

-------------------------------------------------- -------------------------------------------------- --------------------------

(2) Android.mk compilador puede definir una pluralidad de módulos, cada módulo se compila para incluir $ (CLEAR_VARS) empieza a incluir extremos $ (BUILD_XXX).

(2.1) incluyen $ (CLEAR_VARS)

CLEAR_VARS refiere clear_vars.mk, proporcionada por el sistema compilador, que hará que GNU MAKE que borrar todas las variables distintas de LOCAL_PATH LOCAL_XXX, como LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_SHARED_LIBRARIES, LOCAL_STATIC_LIBRARIES y así sucesivamente.

Esto es necesario, ya que todos los archivos de control se compilan en el mismo entorno de ejecución MAKE GNU, todas las variables son globales.

 

(2.2) incluyen $ (BUILD_PACKAGE) # Envía a construir un APK

$ (BUILD_PACKAGE) se compila para generar apk paquete / app / pulg.

Hay varios otros casos compilados:

incluir $ (BUILD_STATIC_LIBRARY) expresó compilados en una biblioteca estática

incluir $ (BUILD_SHARED_LIBRARY) representa una DLL compilada

incluir $ (BUILD_EXECUTABLE) representa el ejecutable compilado         

Por ejemplo, salta a la siguiente "extendida"

-------------------------------------------------- -------------------------------------------------- --------------------------

(3) LOCAL_MODULE_TAGS: = opcional

resolución:

LOCAL_MODULE_TAGS: = pruebas eng de usuario opcional

usuario: único medio de que el módulo se compila en una versión de usuario

ESP: significa que el módulo se compila en una única versión esp

pruebas: único medio de que el módulo se compiló la versión en pruebas

opcionales: significa que el módulo en todas las versiones se compilan

La gama de eng depuración pone a prueba muestras opcionales shell_ash shell_mksh. Tenga cuidado de que el usuario de valor, si desea pre-instalado, usted debe definir core.mk.

-------------------------------------------------- -------------------------------------------------- --------------------------

(4) LOCAL_SRC_FILES: = $ (llamar a todos los archivos java-bajo par, src)

(4.1) si desea incluir el código fuente de Java, puede llamar a los all-java-files-get bajo. (Este formulario contiene todos los archivos de Java en el directorio local_path)

(4.2) Cuando se trata de C / C ++, LOCAL_SRC_FILES comprende variable debe ser empaquetado en C compilado o C ++ módulo de archivo de origen. Tenga en cuenta aquí que no puede enumerar los archivos de cabecera e incluir archivos, ya que el compilador identificará automáticamente los archivos dependientes para usted; sólo una lista de archivos de código fuente pasa directamente al compilador muy bien.

Define todos los archivos en Java-bajo macro es la acumulación / core / definitions.mk en.

-------------------------------------------------- -------------------------------------------------- --------------------------

(5) LOCAL_PACKAGE_NAME: = Configuración

nombre del paquete, el nombre identifica la aplicación o paquete en el guión.

LOCAL_PACKAGE_NAME designado nombre de la aplicación APP. Se compiló con el nombre de apk, ejemplo:

LOCAL_PACKAGE_NAME := TestApplicaiton

La traducción del nombre del apk es TestApplicaiton.apk

-------------------------------------------------- -------------------------------------------------- --------------------------

(6) LOCAL_CERTIFICATE: = plataforma

Detrás de archivo de la firma LOCAL_CERTIFICATE es el nombre del archivo, lo que indica Settings.apk un APK requiere la firma clave plataforma

-------------------------------------------------- -------------------------------------------------- --------------------------

(7) incluyen $ (BUILD_PACKAGE)

En (2.2) ha sido interpretado como

-------------------------------------------------- -------------------------------------------------- --------------------------

(8) incluyen $ (llamar a todos los archivos make-bajo par, $ (LOCAL_PATH))

Cargar todos los archivos Makefile en el directorio actual, todos los archivos make-bajo-devolverá una lista de todos Android.mk situado en un subdirectorio del 'mi-dir' ruta actual en.

Todos los archivos make-bajo-definiciones de macros en la acumulación / core / definitions.mk en.

-------------------------------------------------- -------------------------------------------------- --------------------------

El documento final se genera Android.mk la Settings.apk. Después del análisis de archivos Android.mk anterior para resumir varios LOCAL_XXX.

Tres casos Descripción:

    Debe definirse, el valor que se da en el paquete o Android.mk aplicación.

    Alternativamente definido, puede o puede no ser un valor dado o paquete de Android.mk aplicación.

    Sin definir, no un valor dado en Android.mk aplicación o paquete, la secuencia de comandos especifica el valor automáticamente.

LOCAL_PATH,          当前路径,必须定义。
LOCAL_PACKAGE_NAME,  必须定义,package的名字,这个名字在脚本中将标识app或package。
LOCAL_MODULE_SUFFIX, 不用定义,module的后缀,=.apk。
LOCAL_MODULE,        不用定义,=$(LOCAL_PACKAGE_NAME)。
LOCAL_JAVA_RESOURCE_DIRS,     不用定义。
LOCAL_JAVA_RESOURCE_FILES,    不用定义。
LOCAL_MODULE_CLASS,  不用定义。
LOCAL_MODULE_TAGS,   可选定义。默认optional。取值范围user debug eng tests optional samples shell_ash shell_mksh。
LOCAL_ASSET_DIR,     可选定义,推荐不定义。默认$(LOCAL_PATH)/assets
LOCAL_RESOURCE_DIR,  可选定义,推荐不定义。默认product package和device package相应的res路径和$(LOCAL_PATH)/res。
LOCAL_PROGUARD_ENABLED,       可选定义,默认为full,如果是user或userdebug。取值full, disabled, custom。
full_android_manifest,        不用定义,=$(LOCAL_PATH)/AndroidManifest.xml。
LOCAL_EXPORT_PACKAGE_RESOURCES,    可选定义,默认null。如果允许app的资源被其它模块使用,则设置true。
LOCAL_CERTIFICATE,   可选定义,默认为testkey。最终
        private_key := $(LOCAL_CERTIFICATE).pk8
        certificate := $(LOCAL_CERTIFICATE).x509.pem

Extensiones: pueden generar una pluralidad de programa ejecutable Android.mk, las bibliotecas dinámicas y estáticas.

(1) compilado plantilla de aplicación APK.

Acerca de las plantillas compiladas Aplicaciones APK, consulte " Android.mk paradigma APK compilado "

 

(2) de compilación JAVA plantilla de biblioteca

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Build all java files in the java subdirectory
LOCAL_SRC_FILES := $(call all-subdir-java-files)
# Any libraries that this library depends on
LOCAL_JAVA_LIBRARIES := android.test.runner
# The name of the jar file to create
LOCAL_MODULE := sample
# Build a static jar file.
include $(BUILD_STATIC_JAVA_LIBRARY)

 Nota : LOCAL_JAVA_LIBRARIES: = android.test.runner representar biblioteca de Java generación de nombres de archivo jar

(3) de compilación C / ++ plantilla C aplicación como sigue :

LOCAL_PATH := $(call my-dir)
#include $(CLEAR_VARS)
LOCAL_SRC_FILES := main.c
LOCAL_MODULE := test_exe
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_EXECUTABLE)

 NOTA : ': =' se le asigna un significado, '= +' se añade significado, '$' representa un valor de referencia de una variable

LOCAL_SRC_FILES中加入源文件路径,LOCAL_C_INCLUDES中加入需要的头文件搜索路径
LOCAL_STATIC_LIBRARIES 加入所需要链接的静态库(*.a)的名称,
LOCAL_SHARED_LIBRARIES 中加入所需要链接的动态库(*.so)的名称,
LOCAL_MODULE表示模块最终的名称,BUILD_EXECUTABLE 表示以一个可执行程序的方式进行编译。

 (4) Para compilar C \ C ++ estática biblioteca

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
 helloworld.c
LOCAL_MODULE:= libtest_static
 #LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_STATIC_LIBRARY)

Y similar a la anterior, BUILD_STATIC_LIBRARY representan compilar una biblioteca estática.

Plantillas (5) para compilar C / C ++ biblioteca dinámica

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := helloworld.c
LOCAL_MODULE := libtest_shared
TARGET_PRELINK_MODULES := false
#LOCAL_C_INCLUDES :=
#LOCAL_STATIC_LIBRARIES :=
#LOCAL_SHARED_LIBRARIES :=
include $(BUILD_SHARED_LIBRARY)

 

Y similar a la anterior, BUILD_SHARED_LIBRARY representan compilar una biblioteca compartida.

Generación de un resultado de lo anterior tres, respectivamente, uno de los directorios, se convierte en genérico en función del objetivo específico (posiblemente dkb ~~):

out/target/product/generic/obj/APPS
out/target/product/generic/obj/JAVA_LIBRARIES
out/target/product/generic/obj/EXECUTABLE
out/target/product/generic/obj/STATIC_LIBRARY
out/target/product/generic/obj/SHARED_LIBRARY

carpeta de archivo de destino para cada módulo son los siguientes:

1)APK程序:XXX_intermediates
2)JAVA库程序:XXX_intermediates
3)C\C++可执行程序:XXX_intermediates
4)C\C++静态库: XXX_static_intermediates
5)C\C++动态库: XXX_shared_intermediates
 

 

Publicados 112 artículos originales · ganado elogios 3 · Vistas 9714

Supongo que te gusta

Origin blog.csdn.net/yush34/article/details/104696167
Recomendado
Clasificación