首页 > 解决方案 > 更新 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>

标签: androidreact-nativegradlebuild.gradle

解决方案


要么从...的所有这些项目中删除所有内部值,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>

两者都是有效的资源XMLinteger在需要访问这些值时更好地使用。

这些color资源也不属于那里,其中一个缺少#前缀;文档


推荐阅读