- 浏览: 200795 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 1311本文主要讨论Android锁屏的问题,具体有2个需求: 1、 ... -
android 修改开关机铃声
2012-10-18 16:52 18271,boot铃声,在surfaceflinger.cpp中re ... -
android输入法全屏问题
2012-10-18 15:18 1310两种方法: 一是在源码里进行修改。frameworks/bas ... -
android 解锁,锁屏流程
2012-10-16 15:36 6987解锁、锁屏界面状态改 ... -
android 从横屏到竖屏状态出现黑屏
2012-10-16 12:08 1789修改WindowManagerService.java中的pe ... -
android添加reboot选项
2012-10-13 15:33 14311,GlobalAction.java中mItems = Li ... -
手机硬件
2012-10-13 13:39 953转自http://bbs.meizu.com/thread-4 ... -
Android编译后的文件结构
2012-10-09 18:57 819Android编译完成后,将在根目录中生成一个out文件夹,所 ... -
framework下资源文件---自定义统一的系统风格
2012-09-26 17:46 11851.系统资源文件位置:framework/base/core/ ... -
Android系统默认值的设置
2012-09-26 09:25 11241开机图片: android-logo-mask.png ... -
android apk安装原理分析
2012-09-25 14:16 1709参考了网上的资料和源码,肤浅分析了下,不够深入。 An ... -
android 触屏反馈原理
2012-09-25 14:13 1759android中触屏反馈原理 HOPE mt6516 a ... -
Android下的系统Intent大全
2012-08-23 08:58 9191.从google搜索内容 Intent intent = n ... -
修改Android framework定制重启功能
2012-08-15 15:08 4199涉及到的源码(4.0) ics/frameworks/base ... -
Android makefile mk 重要参数解释及 通用模板编写
2012-08-10 09:04 17001. LOCAL_MODULE_TAGS解释: 控制此模块在什 ... -
手机的AP和BP是什么?
2012-08-06 15:56 1356手机的AP和BP根据上下文可以指代硬件和软件两种意思. 1) ... -
Android 上层界面到内核代码的完整的流程分析,以alarm为例子
2012-07-31 17:15 1285Alarm 调用流程,alarm的流程实现了从上层应用一直到下 ... -
彩信APN切换流程(framework)
2012-07-31 15:46 2022TransactionService之前的流程比较简单不在赘 ... -
我架设的程序员问答网站
2012-06-12 18:20 1131我架设了一个程序员问答网站,欢迎来http://program ... -
Android编译系统三
2012-06-15 10:33 1099android编译系统的makefile文件Android.m ...
相关推荐
Android编译系统分析是Android系统中一个非常重要的组件,它负责将Android应用程序代码编译成能够在Android设备上运行的机器代码。下面是Android编译系统分析的详细知识点: 一、Android编译系统概述 Android...
Android编译系统分析,odt格式的,用openoffice打开,介绍分析了Android的编译系统:原理和如何添加本地模块编译,怎样编译成动态库,静态库,可执行程序。
对android的编译系统做了很详细的说明,很珍贵!
Android编译系统分析Android编译系统分析Android编译系统分析Android编译系统分析Android编译系统分析Android编译系统分析Android编译系统分析
Android的编译系统说明,详细介绍了其编译流程,和涉及到的一些文件,对初学者有很大的实用价值
Android编译系统组成
android编译系统makefile(Android.mk)写法 Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件。由于一般情况下 Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式: LOCAL_PATH:=$(call my-...
android编译.doc android编译.doc
Android项目编译与方法,以及make调用方法
Android4.4编译系统介绍.pdf
本文是android编译系统中框架分析的内容 分析的非常到位 是目前见到的最为详细的分析 分享之
Android编译服务器系统安装标准手册 Android编译服务器系统安装标准手册
Android 编译过程是 Android 开源项目中的一部分,了解 Android 编译过程对于理解 Android 系统的工作机理和对其进行定制至关重要。 Android 的编译过程可以分为三个阶段:环境变量设置、平台编译选项选择和编译执行...
android编译系统makefile(Android.mk)写法.pdf
本文档详细介绍了android编译构建系统的原理和基础的Makefile与脚本语言知识,可以让读者在较短的时间内对android的编译系统有比较全面系统的了解
Android 编译系统分析
Android Android系统开发编译环境配置
Ubuntu系统下Android源码编译.pdf
android编译系统makefileAndroidmk写法.pdf