Студия Android с ошибкой компилятора Java: строка слишком велика для кодирования с использованием UTF-8, написанного вместо 'STRING_TOO_LARGE'

Когда я очищаю проект Android в студии Android, возникает ошибка, я вернулся к предыдущей фиксации или другой ветке, которая работает пару дней назад, но теперь имеет эту ошибку. Я проверил этот вопрос, и в мой проект не добавлено большое изображение или строки. STRING_TOO_LARGE Строка в Котлине

У меня такая же проблема после обновления проекта Java до последней версии Gradle.

stevyhacker 02.10.2018 14:54

Кто нибудь нашел решение?

Nikhil 04.10.2018 11:30

@Nikhil Пока нет, у меня это работает ... ничего не делая

Xianwei 04.10.2018 18:18

@Xianwei То же самое и для меня. это немного странно, но теперь он работает, ничего не делая

Nikhil 08.10.2018 09:26

Я нашел решение для проверки apk и должен указать вам на проблему. Смотрите мой ответ ниже.

Veener 15.10.2018 14:30

Для меня это был файл svg, который я использовал для создания значков в студии изображений Android. когда я очистил путь к этому svg-файлу и сделал значок простым, ошибка исчезла.

Abdul Wahid 19.05.2020 08:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
39
6
55 485
19
Перейти к ответу Данный вопрос помечен как решенный

Ответы 19

Ответ принят как подходящий

В настоящее время вы можете понизить версию Gradle, чтобы решить эту проблему. Используйте версию Gradle 3.1, как показано ниже 3.1.3.

  classpath 'com.android.tools.build:gradle:3.1.3'

Я получил эту ошибку, когда я обновил gradle с 3.1.3 до 3.2.0, я не хочу использовать версию ниже 3.2.0

Ghizlane Lotfi 19.11.2018 12:11

Я всегда получаю эту ошибку при попытке добавить библиотеку полос "com.stripe: stripe-android: 6.1.2" в любой проект, включая пустой. Иногда я могу избавиться от него, удалив каталоги Gradle и повторно синхронизируя его, но понижение версии плагина Gradle кажется единственным надежным вариантом, чтобы он исчез навсегда Версии плагина Gradle

Elletlar 07.12.2018 19:32

@Elletlar и все, у кого была эта проблема из-за Stripe SDK: Версия 6.1.2 SDK включает вектор, который можно рисовать с очень длинным путем. Этот путь вызывает ошибку и заменяется на "STRING_TOO_LARGE". Они исправили это в этой фиксации github.com/stripe/stripe-android/pull/547, поэтому любая версия, включающая это исправление (7.0.0 и выше), устраняет ошибку. На момент написания я использую 8.1.0.

Cosmin Radu 11.12.2018 11:30

Спасибо, это большая помощь. Я следовал руководству по интеграции Stripe: Руководство. Они по-прежнему выступают за использование «implementation 'com.stripe: stripe-android: 6.1.2'». Я полагаю, что никто не обновляет свой гайд ... С уважением.

Elletlar 11.12.2018 15:33

Это не выход!

Dawid Hyży 30.04.2019 07:37

Мне кажется, что переход на более раннюю версию немного хакерский.

Robin Hood 05.05.2019 23:21

Не работает с Android Studio 3.5.2; получить ошибку 'ERROR: JAVA_LETTER_OR_DIGIT'

FractalBob 18.11.2019 15:06

Конечно, в то время это не было решением, а всего лишь временным решением.

stevyhacker 06.05.2020 13:52

Вы можете использовать AAPT (из android sdk / build-tools) для проверки APK и поиска ошибочной строки с помощью следующей командной строки (Linux):

// Linux/Mac
./aapt dump --values resources MyAppName-regular-debug.apk | grep -B 1 'STRING_TOO_LARGE'

// Windows
aapt dump --values resources MyAppName-regular-debug.apk | grep -B 1 'STRING_TOO_LARGE'

Что должно указать вам на виновника. В моем случае это было:

resource 0x7f0f015a com.example.app:string/eula: t=0x03 d=0x00000f10 (s=0x0008 r=0x00)
      (string8) "STRING_TOO_LARGE"

Это лучший способ определить, какая строка слишком длинная! Спасибо.

Vit Veres 25.06.2019 11:42

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

Safety 26.06.2019 14:58

Я тоже ничего не получаю

Csa77 26.01.2020 19:29

Это отличное решение, однако эта команда у меня не сработала, поэтому я просто декомпилировал свой apk (используйте любой онлайн-декомпилятор), а затем запустил: grep -r "STRING_TOO_LARGE" /decompiled_apk_folder. В моем случае он указал мне прямо на проблемный файл SVG.

Makks129 03.03.2020 10:35

Я столкнулся с таким же и исправил очистить кеш сборки.

Как я могу сделать это из Android Studio?

Muhaiminur Rahman 14.11.2018 06:56
Вот решение в Android Document откройте студию Android, выберите «Просмотр»> «Инструменты Windows»> «Терминал» в строке меню и используйте одну из следующих команд: (в Windows) gradlew cleanBuildCache и (в Mac или Linux) ./gradlew cleanBuildCache
Pritesh Vishwakarma 14.11.2018 11:57

Это исправлено для моей проблемы

Chivorn 15.08.2019 09:55

Я застрял на этой проблеме и прочитал эту тему, и никто не предложил будущего решения. Я НЕ хотел возвращать свой Gradle. Поэтому вот ссылка на обновленные зависимости https://github.com/stripe/stripe-android. Найдите раздел «Android Studio (или Gradle)», и вы должны увидеть этот "implementation 'com.stripe:stripe-android:8.1.0'", также вам может потребоваться добавить "-keep class com.stripe.android.** { *; }", если вы включаете минификацию в файле build.gradle.

В целом Stripe перестала обновлять свои собственные «документы Stripe», которые можно найти здесь. Чтобы отдать им должное, их документы полезны и должны быть прочитаны хотя бы один раз, но имейте в виду, что большинство документов устарели, когда я писал это ...

Надеюсь это поможет :)

Идеальное решение для моего случая

Umasankar 09.01.2019 07:21

Ни одно из вышеперечисленных решений не помогло мне. В конечном итоге причиной проблемы была, как говорится, слишком большая строка. В частности, в моем файле array.xml в каталоге значений у меня было несколько массивов SVG, которые использовались в моем приложении, и их комментарии решили проблему.

Если вы точно знаете, что где-то в ваших каталогах ресурсов (/ res) есть более длинные строки, проверьте, не скрываются ли большие строки.

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

просто используйте <?xml version = "1.0" encoding = "utf-8"?> раньше в своем файле с возможностью рисования.

Пример:

<?xml version = "1.0" encoding = "utf-8"?>
<vector
    android:autoMirrored = "true"
    android:height = "24dp"
    android:viewportHeight = "490.282"
    android:viewportWidth = "490.282"
    android:width = "24dp"
    xmlns:android = "http://schemas.android.com/apk/res/android">
    <path
        android:fillColor = "#fff"
        android:pathData = "M0.043,245.197c0.6,10.1 7.3,18.6 17,21.5l179.6,54.3l6.6,123.8c0.3,4.9 3.6,9.2 8.3,10.8c1.3,0.5 2.7,0.7 4,0.7c3.5,0 6.8,-1.4 9.2,-4.1l63.5,-70.3l90,62.3c4,2.8 8.7,4.3 13.6,4.3c11.3,0 21.1,-8 23.5,-19.2l74.7,-380.7c0.9,-4.4 -0.8,-9 -4.2,-11.8c-3.5,-2.9 -8.2,-3.6 -12.4,-1.9l-459,186.8C5.143,225.897 -0.557,235.097 0.043,245.197zM226.043,414.097l-4.1,-78.1l46,31.8L226.043,414.097zM391.443,423.597l-163.8,-113.4l229.7,-222.2L391.443,423.597zM432.143,78.197l-227.1,219.7l-179.4,-54.2L432.143,78.197z"/>
</vector>

очисти свой градиент в окнах

gradlew cleanBuildCache

в Mac

./gradlew cleanBuildCache

затем создайте apk, если у вашего проекта есть проблема, она будет показана вам в `` Сообщениях '' Посмотреть. Найдите свою проблему и исправьте ее. запустить агент.

В моем случае проблема была связана со следующими строками в манифесте:

    <activity
    android:name = "com.facebook.FacebookActivity"
    android:configChanges = "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:label = "@string/app_name"/>

Как только я их удалил, сборка прошла нормально.

Просто используйте gradlew cleanBuildCache в своем студийном терминале Android.

В моем случае я удалил представление из xml, но забыл удалить его ссылки в моем коде kotlin. Обязательно проверьте это, прежде чем делать что-нибудь необычное.

Я нашел файл SVG с очень длинным pathData. Я закомментировал это, и ошибка исчезла. Тот же самый вектор (при вызове) во время выполнения вызовет сбой (до того, как он будет закомментирован).

Я нашел ответ на повторяющийся вопрос по Kotlin от здесь

Добавьте <?xml version = "1.0" encoding = "utf-8"?> в начало любого XML-файла ресурса, в котором он отсутствует. (особенно проверьте свои XML-файлы макета)

В моем случае я объявил строковую переменную в xml, используя привязку данных, без присвоения ей значения. путем установки значения переменной проблема решена

Я долго искал источник ошибок STRING_TOO_LARGE в нашей сборке, и ни одно из этих решений не помогло. Причина, по которой ни один из них не работал, заключалась в том, что у меня был включен progaurd в отладочных сборках, поэтому, когда строка была заменена, она не попала в apk. Когда я отключил progaurd для отладочных сборок, построил apk, а затем декомпилировал с помощью apktool, как предлагалось в другом месте

java -jar apktool_2.4.1.jar d debug.apk 

и нашел xml-файл, который был в другой библиотеке, но до этого был удален progaurd:

grep -r "STRING_TOO_LARGE" ./debug

Надеюсь, это кому-то поможет

Для меня "gradlew cleanBuildCache" не работает, и запуск aapt dump --values ​​resources MyAppName-regular-debug.apk | grep -B 1 'STRING_TOO_LARGE' тоже ничего не сделал ...

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

Решение Windows 10

Поиск файла с ошибкой: используйте онлайн-декомпилятор, если это не проблема, кто-то еще видит ваш код. Загрузите файл .zip. Откройте блокнот ++search -> Find in files -> STRING_TOO_LARGE -> Find all.

Если проблемный файл является векторным ресурсом:

Викасдип Сингх предлагает отличное решение: авокадо.. Авокадо уменьшит размер векторного файла.

Ага !, в моем случае один из моих файлов векторных ресурсов был «слишком большим» и приводил к сбою приложения.

Manu 05.11.2020 02:37

Бывает, у меня слишком длинный SVG (90Кб). Итак, я открыл де SVG в Adobe Illustrator, упростил путь к значительному количеству векторных изображений, так что новый значок весит 3 КБ и, наконец, снова импортирован в Android Studio.

Вы можете взглянуть на свой проект в Android Studio и посмотреть, больше ли ваши SVG-чертежи, чем необходимо для значка.

screenshot of project in Android Studio, showing the weight of drawables

В моем случае я переименовал пакет, и output-metadata.json содержал старое имя пакета. Там переименовали имя пакета, и это было исправлено.

вместо этого

org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8

Заменил на этот в gradle.properties

org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=STRING_TOO_LARGE

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