- 浏览: 33025 次
文章分类
最新评论
对Android.mk文件的理解:
在路径/home/archermind/source/source/ndk/docs下有个ANDROID-MK.html 文件,这个文件解释了源码路径下Android.mk 文件。
三个概念:
make:是一个命令工具;
makefile:定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,
因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令,Android.mk 就是一个makefile文件,android使用的是GNU的make.
Android.mk :文件是GNU Makefile的一小部分,它用来对Android程序进行编译。
对于APK程序 Android.mk的作用: 一般的Android程序,编译打包生成apk文件
引用ANDROID-MK.html中的例子看每行代码的含义:
---------- cut here ------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(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 由编译系统提供(可以在 android 安装目录下的/build/core/config.mk 文件看到其定义,为
CLEAR_VARS:=$(BUILD_SYSTEM)/clear_vars.mk),指定让GNU MAKEFILE该脚本清除许多 LOCAL_XXX 变量 ( 例如 LOCAL_MODULE ,
LOCAL_SRC_FILES ,LOCAL_STATIC_LIBRARIES,等等…),除 LOCAL_PATH。这是必要的,因为所有的编译文件都在同一个 GNU MAKE 执行环境
中,所有的变量都是全局的。所以我们需要先清空这些变量(LOCAL_PATH除外)。又因为LOCAL_PATH总是要求在每个模块中都要进行设置,所
以并需要清空它。该语句的意思就是把CLEAR_VARS变量所指向的脚本文件包含进来。
LOCAL_MODULE := helloworld
LOCAL_MODULE 变量必须定义,以标识 Android.mk 文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。
LOCAL_SRC_FILES := helloworld.c
LOCAL_SRC_FILES 变量必须包含将要编译打包进模块中的 C 或 C++源代码文件。
include $(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY 是编译系统提供的变量,指向一个 GNU Makefile 脚本(应该
就是在 build/core 目录下的 shared_library.mk) ,将根据LOCAL_XXX系列变量中的值,来编译生成共享库(动态链接库)。
如果想生成静态库,则用BUILD_STATIC_LIBRARY
在路径/home/archermind/source/source/ndk/docs下有个ANDROID-MK.html 文件,这个文件解释了源码路径下Android.mk 文件。
三个概念:
make:是一个命令工具;
makefile:定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,
因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令,Android.mk 就是一个makefile文件,android使用的是GNU的make.
Android.mk :文件是GNU Makefile的一小部分,它用来对Android程序进行编译。
对于APK程序 Android.mk的作用: 一般的Android程序,编译打包生成apk文件
引用ANDROID-MK.html中的例子看每行代码的含义:
---------- cut here ------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(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 由编译系统提供(可以在 android 安装目录下的/build/core/config.mk 文件看到其定义,为
CLEAR_VARS:=$(BUILD_SYSTEM)/clear_vars.mk),指定让GNU MAKEFILE该脚本清除许多 LOCAL_XXX 变量 ( 例如 LOCAL_MODULE ,
LOCAL_SRC_FILES ,LOCAL_STATIC_LIBRARIES,等等…),除 LOCAL_PATH。这是必要的,因为所有的编译文件都在同一个 GNU MAKE 执行环境
中,所有的变量都是全局的。所以我们需要先清空这些变量(LOCAL_PATH除外)。又因为LOCAL_PATH总是要求在每个模块中都要进行设置,所
以并需要清空它。该语句的意思就是把CLEAR_VARS变量所指向的脚本文件包含进来。
LOCAL_MODULE := helloworld
LOCAL_MODULE 变量必须定义,以标识 Android.mk 文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。
LOCAL_SRC_FILES := helloworld.c
LOCAL_SRC_FILES 变量必须包含将要编译打包进模块中的 C 或 C++源代码文件。
include $(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY 是编译系统提供的变量,指向一个 GNU Makefile 脚本(应该
就是在 build/core 目录下的 shared_library.mk) ,将根据LOCAL_XXX系列变量中的值,来编译生成共享库(动态链接库)。
如果想生成静态库,则用BUILD_STATIC_LIBRARY
发表评论
-
android页面布局 中间的listView填充剩余部分
2016-12-05 17:29 675<?xml version="1.0" ... -
Eclipse Memory Analyzer 分析内存溢出
2016-10-19 11:37 0一 安装篇 1. eclipse 自 ... -
MSBuild命令行编译Xamarin 项目
2016-04-19 14:42 1221Xamarin 平台: C# language – 使用C ... -
微信聊天左滑显示删除实现
2016-04-06 18:04 903参考http://blog.csdn.net/xiaanmin ... -
Handler Thread
2016-03-21 16:42 474介绍 首先我们来看看为什么我们要使用HandlerThread ... -
Android Handler 作用
2016-03-21 15:31 402Android handler 作用: 什 ... -
Android UI 线程和子线程通信
2016-03-18 18:24 0从主线程发送消息到子 ... -
数据库升级
2016-03-07 17:09 0转自: http://892848153.iteye.com/ ... -
Android ListView 问题汇总
2016-01-11 11:16 530Listview 问题汇总: 1. it ... -
Intent与Activity启动模式相关的Flag
2015-11-27 16:08 410网上对于 Intent 的 flag 做了很多介绍,都 ... -
android 让一个控件按钮居于底部的几种方法
2015-04-09 15:00 0android 让一个控件按钮居于底部的几种方法 1.采用li ... -
Service 理解
2015-03-11 19:08 01. Service 也是运行在主线程,和Activity级别 ... -
回调 同步 异步
2014-12-16 17:34 0回调 同步 异步 -
JSON
2014-12-16 17:33 0JSON 的使用场景 -
远程service
2014-12-16 17:32 0远程Service使用场景: 1. 远程Service-- ... -
Android 实现两个控件分别靠左侧边缘和右侧边缘,且不重叠
2014-12-11 16:02 41061. 使用relativeLayout 从右侧往左侧加,但是问 ... -
Android系统源码数据库(mmssms.db)(转)
2013-11-18 17:00 923论Android系统源码数据库(mmssms.db)中几个表之 ... -
Android SMS 数据库
2013-11-18 14:57 833$ adb shell $ cd data/data $ cd ... -
PC 操作Android手机
2013-11-15 18:10 626https://code.google.com/p/andro ... -
下载Android source 问题
2013-10-17 10:34 646fatal: '../platform/abi/cpp.git ...
相关推荐
在Android开发过程中,构建系统是至关重要的一个环节,它负责管理项目的源代码、资源和依赖,编译并...随着开发工具的进步,尽管CMake逐渐成为主流,但理解`android.mk`的工作原理对理解Android原生开发仍然非常重要。
本篇文章将详细介绍如何进行`androidmk`到`Android.bp`的转换,并探讨两者之间的差异以及转换工具的使用方法。 一、`Android.mk`与`Android.bp`概述 1. `Android.mk`:这是Android早期使用的构建系统,基于GNU ...
本篇文章将深入探讨Android.mk文件的语法规范,帮助开发者理解和掌握Android系统构建的核心技术。 一、Android.mk文件结构 Android.mk文件通常以`LOCAL_PATH := $(call my-dir)`开始,这行代码设定了当前模块的...
这份文档将详细介绍Android.mk的各个方面,帮助你深入理解其功能和用法。 ### 一、Android.mk能编译哪些文件 1. **APK程序**:Android.mk可以用于编译Android应用,包括主Activity、服务、广播接收器等,以及相关...
通过深入理解 Android.mk 文档规范,开发者能够更好地掌握 Android 编译流程的核心概念。 #### 二、基本概念与术语 1. **GNUMakefile**:Android.mk 是 GNUMakefile 的一部分,它由 Android 构建系统解析并执行。 ...
对于深入理解Android NDK项目构建流程、优化构建性能以及解决构建过程中遇到的问题具有重要意义。 #### 概览 在开始深入探讨`Android.mk`的语法细节之前,假设读者已通过阅读`docs/OVERVIEW.TXT`文件了解了`Android...
在Android系统中,为了使第三方应用能够被系统识别并预装在设备上,我们需要通过特定的构建机制将这些应用编译并集成...这是一项关键的系统定制工作,对于开发者来说,理解这一过程有助于更好地管理和定制Android系统。
### Android.mk 文件语法规范及使用模板详解 #### 一、引言 在深入探讨`Android.mk`文件的具体语法规范和使用模板之前,我们先来...掌握`Android.mk`文件的使用方法对于深入理解Android NDK的构建机制具有重要意义。
通过深入理解**LOCAL_MODULE_TAGS**和构建变体(**Build Variants**)的概念及其在Android.mk中的应用,开发者能够更精细地控制模块的构建过程,确保软件组件按照预期的行为在不同的构建环境下正确编译和集成,从而...
在Android开发中,构建系统是开发者将源代码转化为可在设备上运行的可执行文件或库的关键部分。...理解并熟练掌握Android.mk的编写技巧,对于Android开发者来说至关重要,因为它直接影响到项目的构建效率和兼容性。
### Android.mk语法规范详解 #### 序言 在深入了解Android.mk文件的语法规范之前,我们需要先了解Android.mk文件的基本...此外,理解和掌握Android.mk文件的编写技巧也是深入学习Android NDK开发不可或缺的一部分。
接下来,我们通过一个简单的示例来进一步理解`Android.mk`文件的用法。假设我们的项目结构如下所示: ``` $NDK/samples/hello-jni/ ├── src/ │ └── MainActivity.java └── jni/ ├── hello-jni.c ...
这个虽然只是个简单的jnidemo、但是涵盖了Android.mk 和Application.mk 的原理 重点是Android NDK编译的理解 mac 系统下 切换到jni目录,然后呢个 ndk-build
- 在实际开发中,可以参考 `sources/samples` 目录下的示例文件,这些文件通常包含了详细的注释和说明,有助于更好地理解 `Android.mk` 的使用方法。 - 对于复杂的项目,可能需要在同一个 `Android.mk` 文件中定义多...
### Android.mk文件分析 在Android开发环境中,特别是涉及到C++代码与原生开发时,`Android.mk`文件扮演着至关重要的角色。它主要用于定义如何构建和打包原生库(通常是.so文件),这些库包含了用C/C++编写的代码。...
在Android开发中,有时我们需要使用C或C++的代码来实现一些高性能的计算或与硬件交互...整个过程涉及了Android NDK、Gradle构建系统以及相关的配置文件,对于理解Android应用中本地代码的开发和调试流程具有重要意义。
本篇文章将围绕Android.mk文件和JNI的编译过程展开,特别是如何使用ndk-build工具来编译生成.so库,并解决Android Studio中对CMake编译的.so库支持的问题。 Android.mk是Android NDK中的构建文件,用于定义本地库的...
在Android开发中,构建系统是至关重要的,它负责编译、链接以及打包应用程序或系统组件。...理解并熟练掌握Android.mk的编写,对于Android开发人员来说至关重要,因为它直接影响到应用程序或系统组件的编译结果。