Android makefile 相关记录

ndk-build指定生成目录

NDK_PROJECT_PATH:指定工程的路径,由于我们已经cd到了jni目录,这里就用.表示当前路径
NDK_APPLICATION_MK:表示application的配置
APP_BUILD_SCRIPT:表示构建脚本的路径
NDK_LIBS_OUT:表示最后生成动静态的位置

作者:蛋西
链接:https://www.jianshu.com/p/28e9c49dc43f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk APP_BUILD_SCRIPT=Android.mk NDK_LIBS_OUT=../output/libs

Makefile部分语法

$(call all-java-files-under, src) 查找当前目录下的src目录及子目录下的所有java文件


$(wildcard PATTERN...) --> Example: src := $(wildcard *.c)  查找当前目录下的所有.c文件 并展开
                                    输出结果为 a.c b.c sub/a1.c sub/a2.c
$(nodir PATTERN...)                 nodir := $(notdir $(src))
				    输出结果为 a.c b.c a1.c a2.c      
$(patsubst %.c,%.o,$(nodir))        将.c文件替换为.o文件     

TDC_XXX := AAC AAB AAD AAE AAF
$(foreach var text commond) -->  Example:    $(foreach i $(TDC_XXX) $(i))   $(i) 是对i的一种操作,整句代码的意思就是查找TDC_XXX宏对应的值并且给他列出来 可以用于过滤赋值操作


$(info xxxxxxxxxx)   编译LOG中 显示xxx信息
$(warning xxxxxxxxxx)   编译LOG中 显示警告xxx信息
$(error xxxxxxxxxx)   编译LOG中 显示错误信息 并且中止编译

$(strip $(XXXXX) )  去空格函数——strip,空字符包括 空格,tab等不可显示的字符m去掉$(XXXXX)字串中开头和结尾的空字符,并将中间的多个连续空字符(如果有的话)合并为一个空字符。
$(shell grep -nr "") 使用shell脚本命令

PRODUCT_BOOT_JARS += homesecurity  生成framework.jar类似的jar包,需要在
build/core/tasks/check_boot_jars/package_whitelist.txt 加入对应包名

$(call inherit-product-if-exists, vendor/tdc/aab.mk) 如果存在vendor/tdc/aab.mk 则include

//如果定义的的CUSTOM_PROJECT_NAME 包含字符串WIFI
//$(findstring WIFI,$(CUSTOM_PROJECT_NAME)这里是查找出包含字符串WIFI的 意思

ifneq ($(strip $(findstring WIFI,$(CUSTOM_PROJECT_NAME))),)
endif

Android.mk的参数说明

LOCAL_PATH:= $(call my-dir)    当前目录
LOCAL_MODULE_NAME := TDCTest 当前模块名称
LOCAL_PACKAGE_NAME := TDCTest 编译有源码的app使用的模块名称
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v7-appcompat 导入静态jar包
LOCAL_STATIC_ANDROID_LIBRARIES += \ 导入androidx相关的jar包可用该宏
        androidx.recyclerview_recyclerview \
        androidx.appcompat_appcompat
LOCAL_DEX_PREOPT := false 不生成odex文件
LOCAL_PROGUARD_ENABLED := disabled  关闭代码混淆
LOCAL_PRIVILEGED_MODULE := true  私有模块。编译将纳入priv-app
LOCAL_CERTIFICATE := platform 采用平台签名
LOCAL_FULL_MANIFEST_FILE   使用的配置清单文件
LOCAL_SRC_FILES := $(call all-java-files-under, src)       使用的编译文件
LOCAL_RESOURCE_DIR  := $(LOCAL_PATH)/res   使用的编译目录
LOCAL_PRIVATE_PLATFORM_APIS  :=true 是否可以使用隐藏的API接口
LOCAL_SDK_VERSION     := current         当前编译项的SDK版本
LOCAL_OVERRIDES_PACKAGES :=  XXX     覆盖的PACKAGE 覆盖编译(可以理解为移除)
LOCAL_AAPT_FLAGS += \
    --rename-manifest-package com.tdc.settings  重命名AndroidManifest.xml中的包名为com.tdc.settings
include $(CLEAR_VARS)                清除刚才使用的编译配置

LOCAL_CFLAGS += -DTDC_XXX_XXX          定义Cflag TDC_XXX_XXX用于*.C文件中的宏开关定义 一定要-DXXX 才是定义XXX的宏开关,这个XXX可以在任意include的xxx中使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值