Android Build System

时间:2020-11-07 19:52:09   收藏:0   阅读:27

概述

编译的工作原理

单模块编译

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ModuleName
LOCAL_SRC_FILES := $(call all-java-files-under, src)
include $(BUILD_PACKAGE)

调用mmm编译该模块,实际运行以下命令:

ONE_SHOT_MAKEFILE="$MAKEFILE" make -C $T $DASH_ARGS $MODULES $ARGS

LOCAL变量

变量 取值 说明
LOCAL_DEX_PREOPT true/false 是否生成odex
LOCAL_MODULE_TAGS user eng tests optional 决定该模块在什么版本编译,tests版本不强制语言本地化
LOCAL_MANIFEST_FILE 指定manifest的文件,默认是在mk文件同级目录,编译gradle目录结构项目时可用

编译变量

实际是一个mk文件路径,用于编译apk、Java类库、C/C++库、C/C++应用程序等

变量 说明
BUILD_JAVA_LIBRARY Java动态库,编译时用到,运行时从系统库加载,一般都产物都在system/framework
BUILD_STATIC_JAVA_LIBRARY Java静态库,编译时直接打包
BUILD_PREBUILT
BUILD_MULTI_PREBUILT 集成已有库

集成

集成aar

# 编package时引入aar:
LOCAL_STATIC_JAVA_AAR_LIBRARIES:= <aar alias>
...
include $(BUILD_PACKAGE)

# 引入第三方aar:
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := <aar alias>:libs/<lib file>.aar
include $(BUILD_MULTI_PREBUILT)

开发

IDE

https://www.jianshu.com/p/a19dcb06cd53

mmm development/tools/idegen
development/tools/idegen/idegen.sh

原文:https://www.cnblogs.com/hilllee/p/13941461.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!