当前位置: 首页 > 知识库问答 >
问题:

更新gradle后发生AAPT错误

田镜
2023-03-14

将一个旧项目上的Gradle更新为最新版本,我收到以下错误:。gradle\caches\transforms-1\files-1.1\CreditCardEntry-1.4.8.10。aar\453339e1f1fb2382e8ce2362a0acdedd\res\values\values。xml:11:5-54:AAPT:error:内部元素必须是资源引用或为空。

我不明白为什么会出现这个错误,以及在哪里修复。

价值观有问题的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>

共有2个答案

宰父熙云
2023-03-14

正如另一个答案所说,您需要确保抛出异常的项目元素没有内部值。

在某些情况下,这些文件可以来自外部库,因此无法直接修改,在这种情况下,请创建一个名为ids的文件。文件夹res/values中的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>
韦业
2023-03-14

或者从type=“id”的所有项目中删除所有内部值。。。因为这是非法的(而且一直都是非法的,但以前只有被容忍过)——它甚至没有任何作用。文件也解释了这一点。。。您可以将资源的类型从id更改为更合适的类型,例如整数

<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

还有那些颜色资源不属于那里,其中一个缺少#前缀;医生。

 类似资料:
  • 我已经在Ubuntu 16.04 x64上安装了Android Studio。启动新项目时,我在

  • 我所有的谷歌存储库都是最新的。SDK管理器中没有显示要更新的内容。 如何解决这个问题 多谢了。

  • 在创建项目时更新android studio后,我收到一个错误: 错误:任务“:app:preDebugAndroidTestBuild”的执行失败。与依赖项com冲突。Android支持:支持注释“在项目中”:应用程序。app(26.1.0)和测试app(27.1.1)的解析版本有所不同。看见https://d.android.com/r/tools/test-apk-dependency-co

  • 全部包括Rev.25.1.2 Android Studio: Android Studio 2.0 Build#ai-143.2739321,构建于2016年4月5日JRE:1.7.0_80-b15 amd64 IpictureLibrary的Gradle: iScannerLibrary的build.gradle: mulcoBluetooth的build.gradle 我将依赖项更新为: 但一

  • 在Unity中,一个gameObject有NavMeshAgent和Animator组件。 在运行时,我在名为“changeAnimatorController”的函数中以以下方式更改Animator组件的RuntimeAnimatorControl:(语言-C#) 现在,调用此函数的工作方式与以下两种不同:1.如果我直接从脚本调用函数“changeAnimatorController”,我的An

  • 代码如下 我已经创建了一个DynamoDB表我的主键是,它是字符串。 在DynamoDB中,的表值是我需要更新为David。上面是代码。为什么错误会抛出元模式 完整错误如下所示 “errorMessage”:“调用UpdateItem操作时发生错误(ValidationException):更新表达式中提供的文档路径对于更新无效”,“errorType”:“ClientError”, 在代码下面尝