前言
今天在做一个类似于微信拍照和录制小视频的功能(用的朋友推荐的开源框架,但由于直接引用出了点问题一直得不到解决,看了看GitHub上的Issues也看到有同样的用户遇到这样的问题,但因为这个框架的功能和效果可以直接解决我的项目需求,所以直接将源码下载下来,将我需要的代码和资源文件拷贝了出来封装成Library,引用到我的项目里了,不过吧,过程肯定没有那么顺利,下边我说一下我遇到了哪些问题,并且如何解决的!
erroe 1:
第一行:Android resource compilation failed (字面意思:资源编译失败)
第二行:error: duplicate value for resource 'attr/iconSrc' with config ''.(字面意思:资源'attr/iconSrc'与配置的重复值"。)
这个是改之前的:
<attr name="iconSize" format="dimension"/>
<attr name="iconMargin" format="dimension"/>
<attr name="iconSrc" format="reference"/><!-- 看我 -->
<attr name="iconLeft" format="reference"/>
<attr name="iconRight" format="reference"/>
<attr name="duration_max" format="integer"/>
<declare-styleable name="JCameraView">
<attr name="iconSize"/>
<attr name="iconMargin"/>
<attr name="iconSrc"/><!-- 看我 -->
<attr name="iconLeft"/>
<attr name="iconRight"/>
<attr name="duration_max"/>
</declare-styleable>
这个是改之后的:
<attr name="iconSize" format="dimension"/>
<attr name="iconMargin" format="dimension"/>
<attr name="icon_Src_C" format="reference"/><!-- 看我 -->
<attr name="iconLeft" format="reference"/>
<attr name="iconRight" format="reference"/>
<attr name="duration_max" format="integer"/>
<declare-styleable name="JCameraView">
<attr name="iconSize"/>
<attr name="iconMargin"/>
<attr name="icon_Src_C"/><!-- 看我 -->
<attr name="iconLeft"/>
<attr name="iconRight"/>
<attr name="duration_max"/>
</declare-styleable>
注意看那调皮的四行带注释的属性,其实通过翻译我们已经可以知道问题是如何导致的,就是你自定义的attr名称与系统的冲突了,我们只需要找到attrs文件中的重复attr名进行修改即可。
error2:
第一行::error: failed linking file resources. (字面意思:链接文件资源失败)
这个错误是改了名字之后出现的,很简单就是你手动的去修改attrs文件里边的自定义属性name值,其它地方如果有引用这个属性,它是不会自己跟随你在修改而去自动变化你新修改的名称,所以编译器就认为你引用了一个不存在的资源,报了上边错误,解决方式就是直接将引用这个资源的地方修改成你新改的资源名称即可(AS的报错信息会告诉并引导你具体链接错误在哪个文件哪一行,非常友好!)
这些错误倒不是说是这个框架引起的,任何时候再自定义View的时候都有可能遇到。
网友评论