Android 和Application mk 详解知识分享.doc

Android 和Application mk 详解知识分享.doc

ID:60789539

大小:49.50 KB

页数:16页

时间:2020-12-18

Android 和Application mk 详解知识分享.doc_第1页
Android 和Application mk 详解知识分享.doc_第2页
Android 和Application mk 详解知识分享.doc_第3页
Android 和Application mk 详解知识分享.doc_第4页
Android 和Application mk 详解知识分享.doc_第5页
资源描述:

《Android 和Application mk 详解知识分享.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、精品好文档,推荐学习交流Android.mk详解LOCAL_PATH必须位于Android.mk文件的最开始。它是用来定位源文件的位置,$(callmy-dir)的作用就是返回当前目录的路径。Android.mk定义属性方法Android.mk文件是GNUMakefile的一小部分,它用来对Android程序进行编译。因为所有的编译文件都在同一个GNUMAKE执行环境中进行执行,而Android.mk中所有的变量都是全局的。因此,您应尽量少声明变量,不要认为某些变量在解析过程中不会被定义。一个Android.mk文件可以编译多个模块,每个模块属

2、下列类型之一:1)APK程序一般的Android程序,编译打包生成apk文件2)JAVA库java类库,编译打包生成jar文件3)CC++应用程序可执行的CC++应用程序4)CC++静态库编译生成CC++静态库,并打包成.a文件5)CC++共享库编译生成共享库(动态链接库),并打包成.so文,有且只有共享库才能被安装/复制到您的应用软件(APK)包中。可以在每一个Android.mkfile中定义一个或多个模块,你也可以在几个模块中使用同一个仅供学习与交流,如有侵权请联系网站删除谢谢16精品好文档,推荐学习交流源代码文件。编译系统为你

3、处理许多细节问题。例如,你不需要在你的Android.mk中列出头文件和依赖文件。编译系统将会为你自动处理这些问题。这也意味着,在升级NDK后,你应该得到新的toolchain/platform支持,而且不需要改变你的Android.mk文件。注意,NDK的Anroid.mk语法同公开发布的Android平台开源代码的Anroid.mk语法很接近,然而编译系统实现他们的方式却是不同的,这是故意这样设计的,可以让程序开发人员重用外部库的源代码更容易。在描述语法细节之前,咱们来看一个简单的"helloworld"的例子,比如,下面的文件:sourc

4、es/helloworld/helloworld.csources/helloworld/Android.mk'helloworld.c'是一个JNI共享库,实现返回"helloworld"字符串的原生方法。相应的Android.mk文件会象下面这样:LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE:=helloworldLOCAL_SRC_FILES:=helloworld.cinclude$(BUILD_SHARED_LIBRARY)解释一下几行代码:LOCAL_PATH:=

5、$(callmy-dir)一个Android.mkfile首先必须定义好LOCAL_PATH变量。它表示是当前文件的路径。在这个例子中,宏函数‘my-dir’,由编译系统提供,用于返回当前路径(即包含Android.mkfile文件的目录)。include$(CLEAR_VARS)仅供学习与交流,如有侵权请联系网站删除谢谢16精品好文档,推荐学习交流CLEAR_VARS由编译系统提供(可以在android安装目录下的/build/core/config.mk文件看到其定义,为CLEAR_VARS:=$(BUILD_SYSTEM)/clear_v

6、ars.mk),指定让GNUMAKEFILE该脚本为你清除许多LOCAL_XXX变量(例如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,等等…),除LOCAL_PATH。这是必要的,因为所有的编译文件都在同一个GNUMAKE执行环境中,所有的变量都是全局的。所以我们需要先清空这些变量(LOCAL_PATH除外)。又因为LOCAL_PATH总是要求在每个模块中都要进行设置,所以并需要清空它。另外注意,该语句的意思就是把CLEAR_VARS变量所指向的脚本文件包含进来。LOCAL_MODUL

7、E:=helloworldLOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'foo'的共享库模块,将会生成'libfoo.so'文件。注意:如果把库命名为‘libhelloworld’,编译系统将不会添加任何的lib前缀,也会生成libhelloworld.so。LOCAL_SRC_FILES:=helloworld.cLOCAL_SRC_FILES变量必须包含将要编译打包进模块中的C或C++源代码文件。

8、不用在这里列出头文件和包含文件,编译系统将会自动找出依赖型的文件,当然对于包含文件,你包含时指定的路径应该正确。注意,默认的C++源码文件的扩展名是‘

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。