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

相关推荐
90后的晨仔2 小时前
Android Studio 项目模板完全指南
android
summerkissyou19872 小时前
Android-SurfaceView-投屏-常见问题
android·surfaceview
明天就是Friday2 小时前
Android实战项目④ OkHttp WebSocket开发即时通讯App 完整源码详解
android·websocket·okhttp
吉哥机顶盒刷机3 小时前
好物分享:DNA-Android-4.0.5安卓固件解包、打包工具
android·好物分享
三棱球3 小时前
App逆向学习笔记(三)——Android开发入门课
android·笔记
安卓机器4 小时前
rom定制系列------魅族16x 解锁bl root与Flyme9安卓10线刷固件 传感器修复
android·魅族16x玩机
wellc6 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
CYY957 小时前
Android 打印 SO 库的异常日志
android
找藉口是失败者的习惯8 小时前
深入理解 Android 无障碍服务
android