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的精彩世界!

相关推荐
文人sec2 小时前
MySQL事务与索引做了什么?
android·笔记·mysql
刘洋浪子2 小时前
AndroidStudio保存日志菜单
android
朱涛的自习室2 小时前
从 Prompt 到 Graph:AI 工程的进化史
android·前端·人工智能
157092511345 小时前
ViewBinding与DataBinding区别与选型
android
小乖写代码7 小时前
49款开源Android小游戏
android·游戏
三少爷的鞋7 小时前
小团队的最优解:单 Module + 包内 Clean 架构
android
爱和冰阔落7 小时前
【Linux】两个毫无关系的进程怎么通信?命名管道 FIFO 从原理到 Server/Client 实战
android·linux·数据库·c++·vim
Android-Flutter7 小时前
kotlin 协程 - 核心概念
android·kotlin
年小个大16 小时前
受 go-zero 启发,我给 Flutter 写了一套 CLI 脚手架
android·flutter·架构
Android-Flutter18 小时前
为什么说ActivityThread是主线程?
android·kotlin