androidmk文件在哪里|androidmk文件怎么写

㈠ android.mk文件怎么写

一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件。NDK编译系统将会为你自动处理这些问题。这也意味着,在升级NDK后,你应该得到新的toolchain/platform支持,而且不需要改变你的Android.mk文件。先看一个简单的例子:一个简单的"hello world",比如下面的文件:sources/helloworld/helloworld.csources/helloworld/Android.mk相应的Android.mk文件会象下面这样:———- cut here ——————LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:= helloworldLOCAL_SRC_FILES := helloworld.cinclude $(BUILD_SHARED_LIBRARY)———- cut here ——————我们来解释一下这几行代码:LOCAL_PATH := $(call my-dir)一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。include $( CLEAR_VARS)CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等…),除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。LOCAL_MODULE := helloworldLOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。LOCAL_SRC_FILES := helloworld.cLOCAL_SRC_FILES变量必须包含将要编译打包进模块中的C或C++源代码文件。注意,你不用在这里列出头文件和包含文件,因为编译系统将会自动为你找出依赖型的文件;仅仅列出直接传递给编译器的源代码文件就好。在Android中增加本地程序或者库,这些程序和库与其所载路径没有任何关系,只和它们的Android.mk文件有关系。Android.mk和普通的Makefile有所不同,它具有统一的写法,主要包含一些系统公共的宏。在一个Android.mk中可以生成多个可执行程序、动态库和静态库。1,编译应用程序的模板:#Test ExeLOCAL_PATH := $(call my-dir)#include $(CLEAR_VARS)LOCAL_SRC_FILES:= main.cLOCAL_MODULE:= test_exe#LOCAL_C_INCLUDES :=#LOCAL_STATIC_LIBRARIES :=#LOCAL_SHARED_LIBRARIES :=include $(BUILD_EXECUTABLE)(菜鸟级别解释::=是赋值的意思,$是引用某变量的值)LOCAL_SRC_FILES中加入源文件路径,LOCAL_C_INCLUDES 中加入所需要包含的头文件路径,LOCAL_STATIC_LIBRARIES加入所需要链接的静态库(*.a)的名称,LOCAL_SHARED_LIBRARIES中加入所需要链接的动态库(*.so)的名称,LOCAL_MODULE表示模块最终的名称,BUILD_EXECUTABLE表示以一个可执行程序的方式进行编译。2,编译静态库的模板:#Test Static LibLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= /helloworld.cLOCAL_MODULE:= libtest_static#LOCAL_C_INCLUDES :=#LOCAL_STATIC_LIBRARIES :=#LOCAL_SHARED_LIBRARIES :=include $(BUILD_STATIC_LIBRARY)一般的和上面相似,BUILD_STATIC_LIBRARY表示编译一个静态库。3,编译动态库的模板:#Test Shared LibLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= /helloworld.cLOCAL_MODULE:= libtest_sharedTARGET_PRELINK_MODULES := false#LOCAL_C_INCLUDES :=#LOCAL_STATIC_LIBRARIES :=#LOCAL_SHARED_LIBRARIES :=include $(BUILD_SHARED_LIBRARY)一般的和上面相似,BUILD_SHARED_LIBRARY表示编译一个静态库。以上三者的生成结果分别在如下,generic依具体target会变:out/target/proct/generic/obj/EXECUTABLEout/target/proct/generic/obj/STATIC_LIBRARYout/target/proct/generic/obj/SHARED_LIBRARY每个模块的目标文件夹分别为:可执行程序:XXX_intermediates静态库: XXX_static_intermediates动态库: XXX_shared_intermediates另外,在Android.mk文件中,还可以指定最后的目标安装路径,用LOCAL_MODULE_PATH和LOCAL_UNSTRIPPED_PATH来指定。不同的文件系统路径用以下的宏进行选择:TARGET_ROOT_OUT:表示根文件系统。TARGET_OUT:表示system文件系统。TARGET_OUT_DATA:表示data文件系统。用法如:CAL_MODULE_PATH:=$(TARGET_ROOT_OUT)

㈡ 怎么在Android.mk里拷贝文件

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)# files that live under /system/etc/…_from := \etc/dbus.conf \etc/hosts ifeq ($(TARGET_PRODUCT),generic)_from += etc/vold.confendif# the /system/etc/init.goldfish.sh is needed to enable emulator support# in the system image. In theory, we don't need these for -user builds# which are device-specific. However, these builds require at the moment# to run the dex pre-optimization *in* the emulator. So keep the file until# we are capable of running dex preopt on the host.#_from += etc/init.goldfish.sh_to := $(addprefix $(TARGET_OUT)/,$(_from))_from := $(addprefix $(LOCAL_PATH)/,$(_from))$(_to) : PRIVATE_MODULE := system_etcdir$(_to) : $(TARGET_OUT)/% : $(LOCAL_PATH)/% | $(ACP)$(transform-prebuilt-to-target)ALL_PREBUILT += $(_to)上面的参考

㈢ android application.mk文件在哪

一般是在build里面,如果你没有设置路径; 这个如果用Android studio是自动生成的。

㈣ windows7 中android.mk在什么位置

这个文件是android工程下的编译规则文件,不是在windows的哪个地方

㈤ 怎么创建android.mk文件位置

没有太明白什么什么问题~1.Android.mk一般放在跟目录下2.LOCAL_PATH := $(call my-dir) 在mk中一般用这个来获取当前的目录

㈥ android mk文件怎么打开

可以把这个Makefile文件理解成一个编译配置文件,它保存着如何编译的配置信息,专即指导编译器如何属来编译程序,并决定编译的结果是什么。而在Android下的Android.mk文件也是类型的功能,顾名思义,从名字上就可以猜测得到,Android.mk文件是针对Android的Makefile文件.具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块,你也可以在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。

㈦ android.mk 这个文件在哪里 我怎么找不到

android.mk 是Android开发中,用来编译JNI代码的

在开发工具中,new JNI 即可创建一个 android.mk文件

一个Android.mk文件可以编译多个模块,每个模块属下列类型之一:

APK程序 一般的Android程序,编译打包生成apk文件

java库 java类库,编译打包生成jar文件

CC++应用程序 可执行的CC++应用程序

CC++静态库 编译生成CC++静态库,并打包成.a文件

CC++共享库 编译生成共享库(动态链接库),并打包成.so文, 有且只有共享库才能被安装/复制到您的应用软件(APK)包中。

㈧ android studio android.mk在哪

Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件,宏函数’my-dir’, 由编译系统提供。由于一般情况下Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:LOCAL_PATH:=$(call my-dir)上面的语句的意思是 将LOCAL_PATH变量定义成 本文件所在 目录路径。一个 Android.mk中 可以 定义 多个编译模块,每个编译模块 都是 以include $(CLEAR_VARS)开始以include $(BUILD_XXX)结束相关链接:http://blog.csdn.net/wh_19910525/article/details/7518190

㈨ Android.mk在哪里,需要自己写吗

你是要做JNI还是在源码工程里编译如果是JNI的话,需要在工程目录里增加jni文件夹,里面放Android.mk文件如果是编译整个Android源码的话,需要在对应的应用目录里放Android.mk文件

㈩ Android.mk这个文件在哪里呢

我见到过的是在编译整个安卓系统的源码的时候会用到的文件,也就是安卓系统源码未make之前的。他可以强制编译自己写好的应用放进安卓系统中,或者编译修改过后的系统源码


赞 (0)