You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AOSP 8.1.0环境下基于Gradle构建自定义Settings应用的问题咨询

问题解答

1. 带Android.mk时出现ConstraintLayout资源属性错误

这个错误是因为AOSP的Make构建系统(Android.mk)不会自动处理aar依赖的资源,layout_constraintStart_toStartOf是ConstraintLayout特有的属性,你的libs目录里虽然有对应的aar,但Android.mk没配置正确的依赖和资源合并规则。解决办法:

  • 在Android.mk中添加LOCAL_STATIC_JAVA_AAR_LIBRARIES,把libs下的5个aar都列进去,示例:
    LOCAL_STATIC_JAVA_AAR_LIBRARIES += constraintlayout lib1 lib2 lib3 lib4 lib5
    
  • 配置AAPT的资源搜索路径,将aar中的资源目录纳入,或者用LOCAL_RESOURCE_DIR指定应用资源和所有aar的资源路径,示例:
    LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \
        $(LOCAL_PATH)/libs/constraintlayout/res \
        # 依次添加其他aar的res路径
    
  • 为每个aar声明预构建模块,比如在同目录下为每个aar添加单独的声明块:
    include $(CLEAR_VARS)
    LOCAL_MODULE := constraintlayout
    LOCAL_SRC_FILES := libs/constraintlayout.aar
    include $(PREBUILT_AAR)
    

2. 仅保留build.gradle时编译通过但ROM无应用

AOSP默认以Make作为顶层构建系统,纯Gradle模块不会自动被纳入ROM镜像打包流程。要让应用出现在ROM里,需要:

  • 在对应设备的device.mk文件(比如device/<厂商>/<机型>/device.mk)中添加:
    PRODUCT_PACKAGES += MySettings
    
  • 在AOSP根目录的settings.gradle中,将你的应用模块纳入Gradle项目:
    include ':packages:apps:MySettings'
    
  • 确保应用的build.gradle使用AOSP兼容的配置,比如指定和AOSP 8.1匹配的compileSdkVersion,使用com.android.application插件。

3. frameworks/support/samples的应用仅靠build.gradle被Make识别的原因

这些sample应用是Android Support Library的一部分,通过AOSP的顶层构建脚本被纳入了构建体系:

  • 在frameworks/support/settings.gradle中,已经通过include语句将这些sample模块添加到Gradle项目中;
  • AOSP的Make系统会触发Gradle构建Support Library相关模块,对应的makefile(比如frameworks/support/Android.mk)会调用Gradle任务,将这些samples的构建产物纳入整体流程;
  • 这些samples大多依赖Support Library的核心模块,Make系统在构建核心库时会自动关联处理它们的构建。

内容的提问来源于stack exchange,提问作者天枢破军

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:13:26