aar嵌套引发的问题

如这样的一个场景:

APP依赖了一个AAR (A) :

implementation(name: 'lib-terminal-release', ext: 'aar')

而AAR(A)依赖了AAR(B):

implementation  'com.pnikosis:materialish-progress:1.7'

AAR(B)中有一个自定义控件的属性:

<declare-styleable name="ProgressWheel">
    <attr format="boolean" name="indicator_color"/>
</declare-styleable>

此时编译APP就会出现如下错误:

C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lib-terminal-release.aar\dba5ff5d5375a81c81bdbbb905cacabd\res\layout\bf_activity_main.xml:38: error: attribute indicator_color (aka com.smates.selfservice:indicator_color) not found.

 即APP无法找到AAR(B)中的属性,检查AAR(A)中的values.xml,发现A并没有把B中的属性添加进去:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Library</string>
    <string name="default_progressbar">Default Progressbar:</string>
	<!--这里本来应该是从B中合并过来的,然后发现并没有-->
    <!--
	<declare-styleable name="ProgressWheel">
		<attr format="boolean" name="matProg_progressIndeterminate"/>
	</declare-styleable>
	-->
	<!-- 这里是A的自定义属性 -->
    <declare-styleable name="akkkk">
        <attr format="boolean" name="aaa">aa</attr>
    </declare-styleable>
</resources>

通过万能的度娘,发现fat-aar-android可以合理的合并嵌套aar的资源,使用这个插件,成功将B中的属性合并到A中去,即:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Library</string>
    <string name="default_progressbar">Default Progressbar:</string>
	<declare-styleable name="ProgressWheel">
		<attr format="boolean" name="matProg_progressIndeterminate"/>
	</declare-styleable>
	<!-- 这里是A的自定义属性 -->
    <declare-styleable name="akkkk">
        <attr format="boolean" name="aaa">aa</attr>
    </declare-styleable>
</resources>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值