加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

Android系统编译—Android.mk文件的简单详解

发布时间:2021-12-13 10:39:21 所属栏目:教程 来源:互联网
导读:我接触Android平台大概有半年了,期间开发了一些关于Android的程序,在公司中我需要掌握关于Android系统编译的大量知识,因此进行学习,把我学习的一些笔记与大家进行分享,希望对大家学习Android系统编译有一定的帮助。 1.LOCAL_PATH := $(call my-dir) 每

我接触Android平台大概有半年了,期间开发了一些关于Android的程序,在公司中我需要掌握关于Android系统编译的大量知识,因此进行学习,把我学习的一些笔记与大家进行分享,希望对大家学习Android系统编译有一定的帮助。
 
1.LOCAL_PATH := $(call my-dir)
 
每个Android.mk文件必须以LOCAL_PATH开头,在整个开发中,它通常别用做定位资源文件,例如,功能宏“my-dir提供给编译系统当前的路径。
 
2.include $(CLEAR_VARS)
 
这个CLEAR_VARS变量是指,编译系统提供一个特殊的GUN MakeFile来为你清除所有的LOCAL_XXX变量,LOCAL_PATH不会被清除。使用这个变量是因为在编译系统时,所有的控制文件都会在一个GUN Make上下文进行执行,而在此上下文中所有的LOCAL_XXX都是全局的。
 
3.LOCAL_MODULE := hello-jni
 
在Android.mk文件中,LOCAL_MODULE变量是为了确定每一个模块的模块名,并且必须要定义。这个名字必须是唯一的同时不能含有空格。注意,在编译系统的生成文件时,会自动的为文件添加适当的前缀或后缀,例如:一个动态库的模块名为“foo”它将会生成一个名为“libfoo.so”文件。
 
重要提示:如果你的模块名叫“libfoo”编译系统将不会为此模块添加“lib”前缀,它也会生成一个名为“libfoo.so”文件,这是Android平台中Android.mk文件的使用规则。
 
4.LOCAL_SRC_FILES := hello-jni.c
 
这个LOCAL_SRC_FILES变量必须包含一系列被编译进模块的C 或C++资源文件,这里你不能包含文件的标题,编译系统将会自 动的进行计算依赖,你只需列出要传给编译器的资源文件即可。
 
注意:C++源文件的默认扩展名问.cpp,但它能通过变量 LOCAl_CPP_EXIENSION来指定其他的扩展名。
 
5.include $(BUILD_SHARED_LIBRARY)
 
编译系统提供BUILD_SHARED_LIBRARY变量是为了指明一个GUN Makefile脚本,并且收集从最近“include$(CLEAR_VARS)”下的所有LOCALL_XXX变量的信息,最后告诉编译系统如何正确的进行编译。变量BUILD_SHARED_LIBRARY将会生成一个静态库hello-jni.a文件。
 
下面是一个小例子:
 
LOCAL_PATH := $(call my-dir)
 
include $(CLEAR_VARS)
 
LOCAL_MODULE    := hello-jni
 
LOCAL_SRC_FILES := hello-jni.c
 
include $(BUILD_SHARED_LIBRARY)

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读