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

Android.mk中系统变量的详解

发布时间:2021-12-13 10:41:43 所属栏目:教程 来源:互联网
导读:在读Android.mk文件时,大家会遇到大量的系统的变量,如果不明白他们的含义,这将会严重的阻碍你的阅读,最终糊里糊涂的读完,下面我介绍下我学习这些变量的笔记,和大家一起分享,有错误或解释不到的地方期望大家给我留言,一起讨论学习。 Android.mk的变量

在读Android.mk文件时,大家会遇到大量的系统的变量,如果不明白他们的含义,这将会严重的阻碍你的阅读,最终糊里糊涂的读完,下面我介绍下我学习这些变量的笔记,和大家一起分享,有错误或解释不到的地方期望大家给我留言,一起讨论学习。
 
Android.mk的变量
 
一.自定义变量:
 
在Android.mk文件中自定义变量要遵守以下规则:
 
1.不能以LOCAL_开头(例如:LOCAL_path);
 
2.不能以PRIVATE_、NDK_、APP_开头
 
3.不能全用小写字母(例如:my-dir)
 
4.建议使用MY_前缀的自定义变量
 
5.最重要是不能与NDK编译系统保留的变量名一样。
 
二.NDK编译系统保留的变量及其介绍:
 
1.CLEAR_VARS
 
指出了编译脚本中清除了“include$(CLEAR_VARS)”和“include$(BUILD_XXX)”之间的几乎所有的LOCAL_XXX变量,即本模块中不包含的所有的全局变量,在新模块脚本开始时必须包含的变量。通常一个功能模块以“include$(CLEAR_VARS)”开始。
 
2.BUILD_SHARED_LIBRARY
 
指出了一个编译脚本收集一个模块中所有的LOCAL_XXX变量的信息,并确定在你的资源文件下如何编译一个动态库。通常一个模块以“include $(BUILD_XXX)”结束。
 
注意:在这个模块中必须包含LOCAL_MODULE和LOCAL_SRC_FILES变量并赋值。模块将会编译LOCAL_SRC_FILES指定的资源文件生成一个名为“lib$(LOCAL_MODULE).so”文件
 
3.BUILD_STATIC_LIBRARY
 
同第2条类似它编译出了一个静态库
 
指出了一个编译脚本收集一个模块中所有的LOCAL_XXX变量的信息,并确定在你的资源文件下如何编译一个静态库。生成一个名为“include $(LOCAL_MODULE).a”文件
 
4.PREBUILT_SHARED_LIBRARY
 
指出了一个编译脚本来编译一个预动态库,在编译预动态库中LOCAL_SRC_FILES必须是一个单一的路径而不是一系列的资源文件。
 
5.PREBUILT_STATIC_LIBRARY
 
与第4条类似,它编译成一个预静态库
 
指出了一个编译脚本来编译一个预静态库,在编译预静态库中LOCAL_SRC_FILES必须是一个单一的路径而不是一系列的资源文件。
 
注意:PREBUILT_STATIC/SHARED_LIBRARY与STATIC/SHARED_LIBRARY的区别在于:
 
1.预动/静态库中,LOCAL_SRC_FILES指定的是一个单一的路径,在此目录下可以放编好的动/静态库,在编译系统时可直接进行编译,也即是说,有此变量不需要源代码,只要有编好的库即可,这样就可以使用所有的不开源的第三方库。
 
2.可以直接放一个你自己编好的库,这样在编译系统时省略了编译此库的时间,从而提过编译速率。
 
6.TARGET_ARCH
 
目标CPU平台的名字,如同在Android开放源码中指定的那样。如果是’arm’,表示要生成ARM兼容的指令,与CPU架构的修订版无关
 
7.TARGET_PLATFORM
 
Android.mk解析的时候,目标Android平台的名字,例如:“android-3对应Android 1.5系统,现在只支持'android-1.5'
 
8.TARGET_ARCH_ABI
 
CPU+ABI的名字,只支持’arm’,它的含义是:ARMv5TE、armeabi-v7a或更高级CPU,并且具有'softfloat'浮点支持。
 
  其他的ABI将在以后的NDK版本中介绍,它们会有不同的名字。注意所有基于ARM的ABI都会把'TARGET_ARCH'定义成‘arm’,但是会有不同的‘TARGET_ARCH_ABI’
 
9.TARGET_ABI
 
 目标平台和abi的组合,它事实上被定义成$(TARGET_PLATFORM)-$(TARGET_ARCH_ABI)在你想要在真实的设备中针对一个特别的目标系统进行测试时,会有用。
 
在默认的情况下,它会是'android-1.5-arm'

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

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

    热点阅读