Ошибка AAPT после обновления Gradle

Обновил 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>

Не могли бы вы опубликовать файл values.xml

Ümañg ßürmån 22.08.2018 11:02

@UmangBurman Добавил values.xml

ruffen 22.08.2018 11:07

Проверьте, добавлена ​​ли какая-либо библиотека через папку "lib"

Ümañg ßürmån 22.08.2018 11:14
1
3
1 640
2

Ответы 2

или удаляет все внутренние значения из всех этих элементов 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 не принадлежат им, и у одного из них отсутствует префикс #; документы.

Это преобразованный файл в папке .gradle, который (насколько я могу предположить) преобразован из проекта Stripe или Tipsy Stripe. Как мне их изменить?

ruffen 22.08.2018 11:41

@ruffen, вы можете получить исходный код из github.com/tipsi/CreditCardEntry, а затем добавить его в свой проект как библиотечный модуль; это даст вам полный контроль над этими ресурсами ... или форк этого репо, исправьте его, а затем создайте запрос на перенос, который может быть (а может и не быть) принят.

Martin Zeitler 22.08.2018 11:45

Спасибо за предложения @Martin, в итоге мы удалили Tipsi Stripe полностью.

ruffen 03.09.2018 11:36

@ruffen что ты использовал вместо этого? У меня такая же проблема

Travis Beck 04.12.2018 21:43

Полоса на самом деле использовалась для чего-то, что является мертвой частью приложения (длинная история), поэтому мы еще не заменили ее. Может быть, попробуем создать нашу собственную нативную реализацию, обернутую в React.

ruffen 05.12.2018 12:10

У меня такая же проблема. Как избавиться от Stripe? Я не вижу, где это включено?

user3284707 23.03.2019 08:47

Как говорится в другом ответе, вам нужно убедиться, что в элементах элемента нет внутренних значений, вызывающих исключение.

В некоторых случаях они могут быть из внешних библиотек, поэтому их нельзя изменить напрямую, в этом случае создайте файл с именем ids.xml в папке res / values.

Здесь вы можете переопределить любые элементы, вызывающие проблемы, для меня я добавил следующее, чтобы решить проблему, указанную в вопросе.

<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>

Другие вопросы по теме