LOCAL_STATIC_ANDROID_LIBRARIES的作用

文章目录

LOCAL_STATIC_ANDROID_LIBRARIES 是 Android 构建系统(基于 Makefile)中的一个重要变量,主要用于声明对 静态 Android 库 的依赖。

作用概述

这个变量告诉构建系统:当前模块需要链接哪些静态的 Android 库模块。这些库会在编译时被静态链接到最终的 APK 中。

具体作用

1. 资源合并

  • 将依赖库中的资源(layout、drawable、values 等)合并到当前模块
  • 资源 ID 会在编译时重新分配,避免冲突
  • 支持资源覆盖(当前模块的资源可以覆盖库中的同名资源)

2. 代码依赖

  • 确保依赖库的 Java/Kotlin 代码被编译并包含在最终的 dex 文件中
  • 提供对库中类和方法访问能力

3. Manifest 合并

  • 自动合并依赖库的 AndroidManifest.xml 内容
  • 包括权限、组件声明等

使用示例

makefile 复制代码
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_PACKAGE_NAME := MyApp
LOCAL_SRC_FILES := $(call all-java-files-under, src)

# 声明依赖的静态 Android 库
LOCAL_STATIC_ANDROID_LIBRARIES := \
    android-support-v7-appcompat \
    android-support-design \
    my-custom-library

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_MANIFEST_FILE := $(LOCAL_PATH)/AndroidManifest.xml

include $(BUILD_PACKAGE)

与相关变量的区别

变量 作用 示例
LOCAL_STATIC_ANDROID_LIBRARIES Android AAR 库 support libraries
LOCAL_STATIC_JAVA_LIBRARIES 纯 Java JAR 库 guava, gson
LOCAL_SHARED_LIBRARIES 原生共享库 libc, libutils

实际应用场景

makefile 复制代码
# 依赖 Google 的 AndroidX 库
LOCAL_STATIC_ANDROID_LIBRARIES := \
    androidx.appcompat_appcompat \
    androidx-constraintlayout_constraintlayout \
    com.google.android.material_material

# 依赖自定义的 Android 库模块
LOCAL_STATIC_ANDROID_LIBRARIES := \
    my-ui-components \
    my-network-library

注意事项

  1. 模块必须先定义:依赖的库模块必须在当前模块之前定义
  2. 资源冲突:注意处理资源命名冲突
  3. ProGuard:如果使用代码混淆,需要确保库的 ProGuard 规则被正确应用

这个变量在模块化开发和代码复用中起着关键作用,是现代 Android 应用开发的重要组成部分。


结束语

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

相关推荐
数智工坊7 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
故渊at9 小时前
第二板块:Android 四大组件标准化学理 | 第八篇:Service 后台执行实体与优先级
android·gitee·service·前台服务·后台服务
会Tk矩阵群控的小木9 小时前
安卓群控系统对于游戏工作室实战教程
android·运维·游戏·adb·开源软件·个人开发
qeen8710 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
故渊at10 小时前
第二板块:Android 四大组件标准化学理 | 第九篇:BroadcastReceiver 事件分发与有序广播
android·gitee·broadcast·广播·动态注册·静态注册
JohnnyDeng9411 小时前
【Android】Room 数据库高级用法与性能调优:从查询瓶颈到毫秒级响应
android·性能优化·kotlin·room
zeqinjie11 小时前
Flutter 折叠屏 iPad / 宽屏适配实践
android·前端·flutter
ab_dg_dp11 小时前
Android 17+ 提取 AIDL 生成 Java 文件的实用脚本
android·java·python
Arrom12 小时前
DLNA 渲染端排障实战:从 20s 卡顿到 stale subscriber 的两周追凶之旅
android·java