Android.mk增加本地程序和库的常用模版

Android.mk增加本地程序和库的常用模版

Android中增加本地程序或者库,这些程序和库与其所在路径没有关系,只与它们的配置文件Android.mk有关。Android.mk文件中能够主要包含一些系统公共的宏。在一个Android.mk中可以生成多个可执行程序、动态库或者静态库。

A,编译C/C++应用程序的模板

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

(解释::=是赋值的意思,+=是追加的意思,$是引用某变量的值)BUILD_EXECUTABLE表示以一个可执行程序的方式进行编译。

补充说明:

include$(BUILD_PACKAGE) 则是编译出一个apk,

include$(BUILD_STATIC_JAVA_LIBRARY)则是编译出jar包。

B,编译静态库的模板

     #Demo Static Lib
     LOCAL_PATH := $(call my-dir)
     include $(CLEAR_VARS)
     LOCAL_SRC_FILES:= /
              helloworld.c
     LOCAL_MODULE:= libdemo_static
     #LOCAL_C_INCLUDES :=
     #LOCAL_STATIC_LIBRARIES :=
     #LOCAL_SHARED_LIBRARIES :=
     include $(BUILD_STATIC_LIBRARY)

一般的和上面相似,BUILD_STATIC_LIBRARY表示编译一个静态库.a文件。静态库不会复制到的APK包中,但是能够用于编译共享库。

C,编译动态库的模板

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

一般的和上面相似,BUILD_SHARED_LIBRARY表示编译一个动态库。

以上三者的生成结果分别在如下,generic依具体target会变:

out/target/product/generic/obj/EXECUTABLE

out/target/product/generic/obj/STATIC_LIBRARY

out/target/product/generic/obj/SHARED_LIBRARY

每个模块的目标文件夹分别为:

可执行程序:XXX_intermediates

静态库:     XXX_static_intermediates

动态库:     XXX_shared_intermediates

在Android.mk文件中,还可以指定最后的目标安装路径,用LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH来指定。不同的文件系统路径用以下的宏进行选择:

TARGET_ROOT_OUT:表示根文件系统out/target/product/generic/root。
TARGET_OUT:表示system文件系统out/target/product/generic/system。
TARGET_OUT_DATA:表示data文件系统out/target/product/generic/data。
OUT_DIR:代码工程编译时的out生成目录
PRODUCT_OUT:映象生成目录

用法示例如下:

LOCAL_MODULE_PATH :=$(TARGET_ROOT_OUT)

时间: 2024-10-12 11:56:46

Android.mk增加本地程序和库的常用模版的相关文章

Android.mk添加本地程序和库的经常使用模版

Android.mk添加本地程序和库的经常使用模版 Android中添加本地程序或者库.这些程序和库与其所在路径没有关系.仅仅与它们的配置文件Android.mk有关.Android.mk文件里可以主要包括一些系统公共的宏.在一个Android.mk中可以生成多个可运行程序.动态库或者静态库. A,编译C/C++应用程序的模板 #Demo Exe LOCAL_PATH := $(call my-dir) #include $(CLEAR_VARS) LOCAL_SRC_FILES:= main.

安卓之Android.mk多文件以及动态库编译

1.多文件编译 多文件编译共有两种方式: (1) 在Android.mk中一一添加 LOCAL_PATH:= $(call my-dir) #定义当前模块的相对路径 include $(CLEAR_VARS) #清空当前环境变量 LOCAL_MODULE:= test #编译生成的目标名称 LOCAL_SRC_FILES := test1.c \ test2.c \ test3.c #编译该模块所需要的源文件 # LOCAL_MODULE_PATH:=$(LOCAL_PATH) #在当前目录生成

Android.mk的使用

一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件.编译系统为你处理许多细节问题.例如,你不需要在你的Android.mk中列出头文件和依赖文件.NDK编译系统将会为你自动处理这些问题.这也意味着,在升级NDK后,你应该得到新的toolchain/platform支持,而且不需要改变你的Andro

Android.mk的用法和基础【转】

一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件.编译系统为你处理许多细节问题.例如,你不需要在你的Android.mk中列出头文件和依赖文件.NDK编译系统将会为你自动处理这些问题.这也意味着,在升级NDK后,你应该得到新的toolchain/platform支持,而且不需要改变你的Andro

Android Android.mk

例子: { LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)$(warning $(LOCAL_PATH)) LOCAL_MODULE := libyuv #工作包含目录LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/$(warning 工作目录 $(LOCAL_PATH) 包含目录 $(LOCAL_C_INCLUDES)) FILE_LIST := $(wildcard $(LOCAL_PATH)/sourc

Android.mk的用法和基础

一个Android.mk file用来向编译系统描述你的源代码.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次.你可以在每一个Android.mk file中定义一个或多个模块.每个模块属下列类型之一:  1)APK程序,一般的Android程序,编译打包生成apk文件  2)JAVA库,java类库,编译打包生成jar文件  3)  C\C++应用程序,可执行的C\C++应用程序  4)C\C++静态库,编译生成C\C++静态库,并打包成.a文件  5)C\C

Android NDK开发指南---Application.mk文件和android.mk文件

https://android.googlesource.com/platform/development/+/donut-release/ndk/docs/OVERVIEW.TXT https://android.googlesource.com/platform/ndk/+/4e159d95ebf23b5f72bb707b0cb1518ef96b3d03/docs/ANDROID-MK.TXT https://android.googlesource.com/platform/ndk/+/4

Android.mk编译APK范例

转载:http://hubingforever.blog.163.com/blog/static/1710405792011656434982/ 以下仅是使用Android.mk编译APK程序的一些范例. 如果你想了解Android.mk的更多内容请参考<Android.mk简介> 一.编译一个简单的APK LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Build all java files in the java subdirec

【Android本地开发技术:编译脚本】Android.mk

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells 一 Android.mk文件的作用和特点 1.1 Android.mk文件作用 该文件用来描述编译系统(build system)的,即一个微型的GNU Makefile片段,会由编译系统解析一次或多次. 1.2 Android.mk文件特点 该文件用来将源文件组织成模块,模