android - 更新 gradle 后出现 AAPT 错误
问题描述
将旧项目上的 Gradle 更新到最新版本,我收到此错误:.gradle\caches\transforms-1\files-1.1\CreditCardEntry-1.4.8.10.aar\453339e1f1fb2382e8ce2362a0acdedd\res\values\values.xml:11:5- 54:AAPT:错误:内部元素必须是资源引用或为空。
我无法弄清楚为什么会出现此错误以及在哪里修复。
有问题的 Values.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="null_color" type="color">234234</item>
<color name="text_helper_color">#a8a8a8</color>
<declare-styleable name="CreditCardForm"><attr format="boolean" name="include_exp"/><attr format="boolean" name="include_security"/><attr format="boolean" name="include_zip"/><attr format="boolean" name="include_helper"/><attr format="color" name="helper_text_color"/><attr format="color" name="text_color"/><attr format="color" name="hint_text_color"/><attr format="color" name="cursor_color"/><attr format="string" name="card_number_hint"/><attr format="reference" name="input_background"/><attr format="boolean" name="default_text_colors"/><attr format="boolean" name="animate_on_error"/><attr format="dimension" name="text_size"/></declare-styleable>
<item name="cc_card" type="id">2222</item>
<item name="cc_ccv" type="id">4444</item>
<item name="cc_entry" type="id">1000</item>
<item name="cc_entry_internal" type="id">3000</item>
<item name="cc_exp" type="id">3333</item>
<item name="cc_form_layout" type="id">1111</item>
<item name="cc_four_digits" type="id">6666</item>
<item name="cc_zip" type="id">5555</item>
<item name="text_helper" type="id">2000</item>
<string name="CreditCardFormCardNumberHint">1234 5678 9012 3456</string>
<string name="CreditCardNumberHelp"/>
<string name="ExpDateFieldHint">MM/YY</string>
<string name="ExpirationDateHelp">Expiration date (MM/YY)</string>
<string name="SecurityCodeFieldHint">CVV</string>
<string name="SecurityCodeHelp">Security code (CVV)</string>
<string name="ZipCodeFieldHint"> ZIP </string>
<string name="ZipHelp">Zip code of billing address</string>
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
解决方案
要么从...的所有这些项目中删除所有内部值,type="id"
因为这是非法的(而且它一直是非法的,但以前只是被容忍过)——它甚至没有起到最小的作用。该文档还解释了这一点......您可以将资源的类型从id
更合适的类型更改为更合适的类型,例如integer
:
<item name="cc_card" type="integer">2222</item>
<item name="cc_ccv" type="integer">4444</item>
<item name="cc_entry" type="integer">1000</item>
<item name="cc_entry_internal" type="integer">3000</item>
<item name="cc_exp" type="integer">3333</item>
<item name="cc_form_layout" type="integer">1111</item>
<item name="cc_four_digits" type="integer">6666</item>
<item name="cc_zip" type="integer">5555</item>
<item name="text_helper" type="integer">2000</item>
两者都是有效的资源XML
;integer
在需要访问这些值时更好地使用。
这些color
资源也不属于那里,其中一个缺少#
前缀;文档。
推荐阅读
- sql-server - 如何在 SQL Server 中使用和跳过功能
- php - 我应该用什么代替 php 中的 array_unique?
- c++ - 函数 get_Document (ExDisp.h -) - 如何获取错误消息:IErrorInfo?
- javascript - 如何在 React TS 中访问嵌套的 props 对象?
- python - 如何更喜欢 json 标签而不是其他标签
- symfony - ApiPlatform:覆盖 RouteNameGenerator
- php - unbale 删除 codeigniter 中的项目
- ubuntu - 错误 /opt/stack/devstack/lib/neutron_plugins/ovn_agent:174 套接字
- ssh - Robot Framework - SSH 库 - 使用公钥登录
- angular - 如果数组存在,如何以角度构建动态 *ngFor 循环?