更新gradle后AAPT错误

问题描述 投票:1回答:2

在旧项目上更新了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>

android react-native gradle build.gradle
2个回答
4
投票

要么从type="id"的所有项目中删除所有内在值...因为这是非法的(它总是非法的,但以前只能被容忍) - 它甚至没有用于最小的目的。 documentation也解释了这一点......你可以将资源的类型从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资源也不属于那里,其中一个缺少#前缀; docs


0
投票

正如其他答案所述,您需要确保抛出异常的item元素没有内部值。

在某些情况下,这些可以来自外部库,因此无法直接修改,在这种情况下,在文件夹res / values中创建一个名为ids.xml的文件。

在这里你可以覆盖导致问题的任何项目,对我来说,我添加了以下内容来克服问题中陈述的问题。

<resources>
    <item name="cc_card" type="id"/>
    <item name="cc_ccv" type="id"/>
    <item name="cc_entry" type="id"/>
    <item name="cc_entry_internal" type="id"/>
    <item name="cc_exp" type="id"/>
    <item name="cc_form_layout" type="id"/>
    <item name="cc_four_digits" type="id"/>
    <item name="cc_zip" type="id"/>
    <item name="text_helper" type="id"/>
</resources>

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.