- 浏览: 206446 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xumin_minzi:
我也在使用ndk编译,ffmpeg源码放在哪个目录里面?
[原创]Android ndkr8编译 FFmpeg 0.11.1 "Happiness" -
ericchan2012:
在Dialog调用show方法之后
【原创】Android 设置Dialog的长宽和位置 -
maohualei:
求解: 我设置的时候 位置居然没有反应 dial ...
【原创】Android 设置Dialog的长宽和位置
Android.mk
LOCAL_PATH - 编译时的目录
$(call 目录,目录….) 目录引入操作符
如该目录下有个文件夹名称Src,则可以这样写 $(call src) 等
CLEAR_VARS –
在build/core/config.mk 定义 CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk
详细看build/core/clear_vars.mk
Include 是 *.mk 文件的运算符。可以通过include 包含自定义的.mk文件(即是自定义编译规则)或是引用系统其他的.mk文件(系统定义的编译规则)。
LOCAL_SRC_FILES - 编译的源文件
可以是.c, .cpp, .java, .S(汇编文件)或是.aidl等格式
写法是不同的文件用空格隔开。如果编译目录子目录,采用相对路径,如子目录/文件名。也可以通过$(call 目录),指明编译某目录下所有.c/.cpp/.java/.S/ .aidl文件.
追加文件 LOCAL_SRC_FILES += 文件
LOCAL_C_INCLUDES - 需要包含的头文件目录
可以是系统定义路径,也可以是相对路径. 如该编译目录下有个include目录,写法是include/*.h
LOCAL_SHARED_LIBRARIES - 链接时需要的外部共享库
还有链接的外部静态库用LOCAL_STATIC_LIBRARY
如果是java文件,要加入jar包用LOCAL_JAVA_LIBRARIES
LOCAL_PRELINK_MODULE - 是否需要prelink处理 .Prelink利用事先链接代替运行时链接的方法来加速共享库的加载,它不仅可以加快起动速度,还可以减少部分内存开销,是各种Linux架构上用于减少程序加载时间、缩短系统启动时间和加快应用程序启动的很受欢迎的一个工具.
LOCAL_MODULE - 编译的目标对象
module 是指系统的native code ,相对用Java 写成的 Android application 称为package。Package用LOCAL_PACKAGE_NAME.
BUILD_SHARED_LIBRARY - 指明要编译成动态库。
编译的目标,用include 操作符,动态库会用到系统的编译脚本host_share_library.mk 编译静态库目标,会用到系统的编译脚本host_static_library.mk . 用BUILD_STATIC_LIBRARY来指明要编译成静态库。如果是java文件的话,会用到系统的编译脚本host_java_library.mk,用BUILD_PACKAGE来指明。三个编译脚本都放到build/core目录下。
LOCAL_ARM_MODE := arm
目前Android大部分都是基于Arm处理器的,Arm指令用两种模式Thumb(每条指令两个字节)和arm指令(每条指令四个字节)
LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays
通过设定编译器操作,优化级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
Android.mk 也通过ifeq关键字支持条件选择语句,类如下面
ifeq ($(HOST_OS),linux)
# Use the futex based mutex and condition variable
# implementation from android-arm because it's shared mem safe
LOCAL_SRC_FILES += /
futex_synchro.c /
executablepath_linux.cpp
endif
ifeq ($(HOST_OS),darwin)
LOCAL_SRC_FILES += /
executablepath_darwin.cpp
endif
总结,android.mk 的写法,系统源代码提供了大量的android.mk可以作为参考资料。在编写android.mk的时候,有任何碰到疑问的地方,可以拿系统的android.mk看看, 相信写个android.mk 应该没有什么困难.
参考资料:http://blog.csdn.net/wukunting/article/details/4640100
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= / com_ura_test_JNITest.c LOCAL_C_INCLUDES := / $(JNI_H_INCLUDE) LOCAL_SHARED_LIBRARIES := libutils LOCAL_PRELINK_MODULE := false LOCAL_MODULE := libJNITest include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH - 编译时的目录
$(call 目录,目录….) 目录引入操作符
如该目录下有个文件夹名称Src,则可以这样写 $(call src) 等
CLEAR_VARS –
在build/core/config.mk 定义 CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk
详细看build/core/clear_vars.mk
Include 是 *.mk 文件的运算符。可以通过include 包含自定义的.mk文件(即是自定义编译规则)或是引用系统其他的.mk文件(系统定义的编译规则)。
LOCAL_SRC_FILES - 编译的源文件
可以是.c, .cpp, .java, .S(汇编文件)或是.aidl等格式
写法是不同的文件用空格隔开。如果编译目录子目录,采用相对路径,如子目录/文件名。也可以通过$(call 目录),指明编译某目录下所有.c/.cpp/.java/.S/ .aidl文件.
追加文件 LOCAL_SRC_FILES += 文件
LOCAL_C_INCLUDES - 需要包含的头文件目录
可以是系统定义路径,也可以是相对路径. 如该编译目录下有个include目录,写法是include/*.h
LOCAL_SHARED_LIBRARIES - 链接时需要的外部共享库
还有链接的外部静态库用LOCAL_STATIC_LIBRARY
如果是java文件,要加入jar包用LOCAL_JAVA_LIBRARIES
LOCAL_PRELINK_MODULE - 是否需要prelink处理 .Prelink利用事先链接代替运行时链接的方法来加速共享库的加载,它不仅可以加快起动速度,还可以减少部分内存开销,是各种Linux架构上用于减少程序加载时间、缩短系统启动时间和加快应用程序启动的很受欢迎的一个工具.
LOCAL_MODULE - 编译的目标对象
module 是指系统的native code ,相对用Java 写成的 Android application 称为package。Package用LOCAL_PACKAGE_NAME.
BUILD_SHARED_LIBRARY - 指明要编译成动态库。
编译的目标,用include 操作符,动态库会用到系统的编译脚本host_share_library.mk 编译静态库目标,会用到系统的编译脚本host_static_library.mk . 用BUILD_STATIC_LIBRARY来指明要编译成静态库。如果是java文件的话,会用到系统的编译脚本host_java_library.mk,用BUILD_PACKAGE来指明。三个编译脚本都放到build/core目录下。
LOCAL_ARM_MODE := arm
目前Android大部分都是基于Arm处理器的,Arm指令用两种模式Thumb(每条指令两个字节)和arm指令(每条指令四个字节)
LOCAL_CFLAGS += -O3 -fstrict-aliasing -fprefetch-loop-arrays
通过设定编译器操作,优化级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
Android.mk 也通过ifeq关键字支持条件选择语句,类如下面
ifeq ($(HOST_OS),linux)
# Use the futex based mutex and condition variable
# implementation from android-arm because it's shared mem safe
LOCAL_SRC_FILES += /
futex_synchro.c /
executablepath_linux.cpp
endif
ifeq ($(HOST_OS),darwin)
LOCAL_SRC_FILES += /
executablepath_darwin.cpp
endif
总结,android.mk 的写法,系统源代码提供了大量的android.mk可以作为参考资料。在编写android.mk的时候,有任何碰到疑问的地方,可以拿系统的android.mk看看, 相信写个android.mk 应该没有什么困难.
参考资料:http://blog.csdn.net/wukunting/article/details/4640100
发表评论
-
Android锁屏的问题
2012-10-19 09:17 1356本文主要讨论Android锁屏的问题,具体有2个需求: 1、 ... -
android 修改开关机铃声
2012-10-18 16:52 18631,boot铃声,在surfaceflinger.cpp中re ... -
android输入法全屏问题
2012-10-18 15:18 1345两种方法: 一是在源码里进行修改。frameworks/bas ... -
android 解锁,锁屏流程
2012-10-16 15:36 7074解锁、锁屏界面状态改 ... -
android 从横屏到竖屏状态出现黑屏
2012-10-16 12:08 1841修改WindowManagerService.java中的pe ... -
android添加reboot选项
2012-10-13 15:33 14861,GlobalAction.java中mItems = Li ... -
手机硬件
2012-10-13 13:39 1007转自http://bbs.meizu.com/thread-4 ... -
Android编译后的文件结构
2012-10-09 18:57 856Android编译完成后,将在根目录中生成一个out文件夹,所 ... -
framework下资源文件---自定义统一的系统风格
2012-09-26 17:46 12221.系统资源文件位置:framework/base/core/ ... -
Android系统默认值的设置
2012-09-26 09:25 11651开机图片: android-logo-mask.png ... -
android apk安装原理分析
2012-09-25 14:16 1793参考了网上的资料和源码,肤浅分析了下,不够深入。 An ... -
android 触屏反馈原理
2012-09-25 14:13 1789android中触屏反馈原理 HOPE mt6516 a ... -
Android下的系统Intent大全
2012-08-23 08:58 9561.从google搜索内容 Intent intent = n ... -
修改Android framework定制重启功能
2012-08-15 15:08 4239涉及到的源码(4.0) ics/frameworks/base ... -
Android makefile mk 重要参数解释及 通用模板编写
2012-08-10 09:04 17361. LOCAL_MODULE_TAGS解释: 控制此模块在什 ... -
手机的AP和BP是什么?
2012-08-06 15:56 1395手机的AP和BP根据上下文可以指代硬件和软件两种意思. 1) ... -
Android 上层界面到内核代码的完整的流程分析,以alarm为例子
2012-07-31 17:15 1338Alarm 调用流程,alarm的流程实现了从上层应用一直到下 ... -
彩信APN切换流程(framework)
2012-07-31 15:46 2054TransactionService之前的流程比较简单不在赘 ... -
我架设的程序员问答网站
2012-06-12 18:20 1209我架设了一个程序员问答网站,欢迎来http://program ... -
Android编译系统三
2012-06-15 10:33 1154android编译系统的makefile文件Android.m ...
相关推荐
Android编译系统分析是Android系统中一个非常重要的组件,它负责将Android应用程序代码编译成能够在Android设备上运行的机器代码。下面是Android编译系统分析的详细知识点: 一、Android编译系统概述 Android...
Android编译系统分析,odt格式的,用openoffice打开,介绍分析了Android的编译系统:原理和如何添加本地模块编译,怎样编译成动态库,静态库,可执行程序。
Android 编译系统是 Android 操作系统的核心组件之一,它负责将源代码编译成可执行文件。Android 编译系统的分析对于Android 开发者来说非常重要,因为它可以帮助开发者更好地理解 Android 的编译过程,从而更好地...
Android编译系统使用了一套专门的编译工具,包括Java编译器、Android Asset Packaging Tool (AAPT)、Android NDK等。 一、编译系统的主要组成部分: 1. Java编译器:负责将Java源文件编译成.class字节码文件,然后...
通过上述内容,我们可以看到Android编译系统的复杂性和灵活性,它能够根据不同的需求定制化构建出适合特定设备和应用场景的操作系统。对于初学者来说,掌握这些基础概念和流程是理解和开发Android系统的关键。
然而,Android编译系统相对集中,位于Android源码的build/core目录下,包含了大量的makefile(*.mk)文件和shell脚本。Google为了满足多目标(MultipleTargets)、非递归构建(Non-RecursiveMake)、快速编译测试...
总的来说,Android编译系统是一个高度定制化的、复杂的构建框架,它允许开发者灵活地配置和构建针对不同硬件平台和产品需求的Android系统。理解和掌握这个系统对于优化开发流程、调试问题以及进行系统级别的定制至关...
Android编译系统组成
Android 编译环境搭建是 Android 应用开发的必要步骤,本文将指导读者从零开始搭建 Android 编译环境,并详细介绍编译 Android 的步骤。 一、安装必要的软件环境 在 Ubuntu 9.10 平台上,需要安装以下软件包: * ...
总结来说,Android编译系统是一个复杂的工程化编译方法,它依赖于Makefile的编写和Shell脚本的应用。了解和熟练掌握Make工具的使用、Makefile的规则和结构以及Shell脚本编程,对于理解Android编译构建系统至关重要。...
Android4.4编译系统介绍.pdf
尽管Android源代码体积庞大(通过`repo`同步后大约为2GB),这可能会给人一种Android系统极其复杂的印象,但实际上,通过对Android编译系统的深入分析,我们可以发现其背后的设计理念与实现机制。本文旨在详细分析...
在深入探讨Android编译过程之前,首先需要理解的是Android系统的开放性使得开发者和制造商能够根据特定硬件需求定制操作系统。例如,小米、LePhone和M9等品牌就利用这一特性为自家设备打造独特的用户体验。要对...
根据提供的文件内容,本知识点将详细介绍全志Android编译服务器系统安装标准手册中的内容,重点关注Ubuntu Server 12.04 LTS的操作系统安装步骤。 1. **下载Ubuntu Server 12.04 LTS** - 访问Ubuntu官方网站并下载...
Android 编译系统 Makefile (Android.mk) 写法 Android 编译系统使用 Makefile 文件来编译和构建 Android 系统中的模块。其中,Android.mk 文件是编译系统的核心配置文件,用于指定编译模块的源文件、编译器选项和...
在Android开发领域,掌握源码编译是一项至关重要的技能,尤其是在Ubuntu环境下。Ubuntu作为一个流行的Linux发行版,因其稳定性和开源特性,成为了许多开发者选择的开发平台。本文将深入探讨Ubuntu系统下Android源码...
Freetype是一个流行的开源字体渲染库,广泛用于多种操作系统和设备,包括Android。本篇将详细介绍如何在Android环境中编译Freetype库,生成适用于64位架构的SO(共享对象)库。 首先,理解Freetype库:Freetype是一...
Android编译系统是Android操作系统开发的关键组成部分,负责将源代码转化为可在不同设备上运行的可执行文件和库。本文将深入解析Android编译系统的结构和工作原理,重点关注四种类型的Make文件及其作用。 首先,...
总结来说,MTK Android编译环境的搭建主要包括了更新系统,安装编译所需的库,安装JDK,以及配置环境变量这四个关键步骤。这个环境使得开发者能够在Ubuntu环境下编译针对MediaTek处理器的Android系统,为定制和优化...
在Android开发中,构建系统是至关重要的,它负责编译、链接和打包应用程序或系统组件。其中,`Android.mk`文件是Android构建系统的核心部分,它是一个Makefile,用于指导NDK(Native Development Kit)如何处理C/C++...