项目案例
一、编译不同类型的模块
1.编译成Java库
Android.mk
include $(BUILD_JAVA_LIBRARY)
Android.bp
java_library {
}
2.编译成Java静态库
Android.mk
include $(BUILD_STATIC_JAVA_LIBRARY)
Android.bp
java_library_static {
}
3.编译成App应用
Android.mk
include $(BUILD_PACKAGE)
Android.bp
android_app {
}
4.编译成Native动态库
Android.mk
include $(BUILD_SHARED_LIBRARY)
Android.bp
cc_library_shared {
}
5.编译成 Native 静态库
Android.mk
include $(BUILD_STATIC_LIBRARY)
Android.bp
cc_library_static {
}
6.编译成 Native 执行程序
Android.mk
include $(BUILD_EXECUTABLE)
Android.bp
cc_binary {
}
7.编译成头文件库
Android.mk
include $(BUILD_HEADER_LIBRARY)
Android.bp
cc_library_headers {
}
二、文件路径
1.本地头文件路径
Android.mk
LOCAL_C_INCLUDES :=
Android.bp
local_include_dirs: ["xxx", ""]
2.导出的头文件路径
Android.mk
LOCAL_EXPORT_C_INCLUDE_DIRS :=
Android.bp
export_include_dirs: ["xxx", ""]
3.资源文件路径
Android.mk
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/
LOCAL_ASSET_DIR := $(LOCAL_PATH)/
Android.bp
resource_dirs: ["xxx", ""]
三、库依赖
1.依赖的静态库
Android.mk
LOCAL_STATIC_LIBRARIES :=
Android.bp
static_libs: ["xxx", "xxx", ""]
2.依赖的动态库
Android.mk
LOCAL_SHARED_LIBRARIES :=
Android.bp
shared_libs: ["xxx", "xxx", ""]
3.依赖的头文件库
Android.mk
LOCAL_JAVA_LIBRARIES :=
Android.bp
header_libs: ["xxx", "xxx", ""]
4.依赖的Java库
Android.mk
LOCAL_STATIC_JAVA_LIBRARIES :=
Android.bp
static_libs: ["xxx", "xxx", ""]
四、安装到不同分区中
1.安装到vendor中
Android.mk
LOCAL_VENDOR_MODULE := true
or
LOCAL_PROPRIETARY_MODULE := true
Android.bp
proprietary: true
or
vendor: true
2.安装到product中
Android.mk
LOCAL_PRODUCT_MODULE := true
Android.bp
product_specific: true
3.安装到odm中
Android.mk
LOCAL_ODM_MODULE := true
Android.bp
device_specific: true
五、编译参数
1.C flags
Android.mk
LOCAL_CFLAGS :=
Android.bp
cflags: ["xxx", "xxx", ""]
2.Cpp flags
Android.mk
LOCAL_CPPFLAGS :=
Android.bp
cppflags: ["xxx", "xxx", ""]
3.Java flags
Android.mk
LOCAL_JAVACFLAGS :=
Android.bp
javacflags: ["xxx", "xxx", ""]
推荐阅读
Android系统源码编译系列
Android14或更高版本(安全措施)
Android异常日志快速定位分析小技巧
Android O/P/Q/R及以上系统预置apk
Android ANR/Crash Log日志分析技巧总结
开发system权限的App并内置到Android系统
Windows/Linux/MacOS文本大文件Log日志分析工具