'android studio with Java compiler error: string too large to encode using UTF-8 written instead as 'STRING_TOO_LARGE'

When I clean the android project in android studio, the error happen, I have backed to previous commit or different branch, which works find couple days ago, but has this error now. I have checked this question and there is not large image or strings added for my project. STRING_TOO_LARGE String in Kothlin



Solution 1:[1]

For the time being, you can downgrade Gradle version to resolve this issue. Use gradle 3.1 version like 3.1.3 below.

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

Solution 2:[2]

I had encountered the same and fixed by clear the build cache .

Solution 3:[3]

I was stuck on this problem and read through this topic and no one provided a future solution. I did NOT want to revert back my Gradle. Therefore, here is the link to the updated dependencies https://github.com/stripe/stripe-android. Look for the "Android Studio (or Gradle)" section and you should see this "implementation 'com.stripe:stripe-android:8.1.0'" also you might need to add "-keep class com.stripe.android.** { *; }" if you are enabling minification in your build.gradle file.

Overall Stripe has stopped updating their own "Stripe docs" which can be found here. To give them credit their docs are helpful and should be read at least once, but be mindful that most of the docs are out date when I wrote this...

Hope this helps :)

Solution 4:[4]

You can use AAPT (from the android sdk/build-tools) to examine the APK and look for the offending string with the following command line (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'

Which should point you to the culprit. In my case it was:

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

Solution 5:[5]

It happens that I had an SVG too long (90Kb). So I've opened de SVG in Adobe illustrator, simplified the path to a significant number of vector less so the new icon weight 3Kb and, finally, imported again in Android Studio.

You can have a look at your Project in Android Studio and watch if your SVG drawables are larger than needed for an icon.

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

Solution 6:[6]

None of the above solutions worked for me. What ended up being the cause of the problem was, as it states, a String that was too large. Specifically, in my arrays.xml file under the values directory, I had some SVG arrays that were used within my app and commenting them out solved the issue.

If you know for certain you have some longer Strings somewhere in your resource directories (/res), check for any large Strings that may be lurking.

Also, this solution may help others but was not linked to in this thread.

Solution 7:[7]

just use <?xml version="1.0" encoding="utf-8"?> before in your drawable file.

Example:

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

Solution 8:[8]

I found an SVG file that had a very long pathData. I commented it out and the error went away. That very same vector (when called) at runtime would cause a crash (before it was commented out).

Solution 9:[9]

I've been hunting for the source of STRING_TOO_LARGE errors in our build for a long time and none of these solutions worked. The reason none of them worked was that I had progaurd turned on in debug builds so when the string was replaced it didn't end up in the apk. When i disabled progaurd for debug builds, built the apk and then decompiled with apktool as suggested elsewhere

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

and found the xml file that was in another library but progaurd stripped out before:

grep -r "STRING_TOO_LARGE" ./debug

Hope that helps someone

Solution 10:[10]

clear your gradle in windows

gradlew cleanBuildCache

in mac

./gradlew cleanBuildCache

then building you apk if your project has problem it will be show you in the 'Messages' view. location your problem and fix it. run agent.

enter image description here

Solution 11:[11]

Just use gradlew cleanBuildCache in your Android studio terminal

Solution 12:[12]

In my case, i deleted a view from xml but forgot to remove its references in my kotlin code. Make sure to check this before doing anything fancy.

Solution 13:[13]

For me "gradlew cleanBuildCache" did not work, and running aapt dump --values resources MyAppName-regular-debug.apk | grep -B 1 'STRING_TOO_LARGE' did nothing either...

I ended up just deleting all my vector images since they were all pretty large and that fixed my build.. So I guess I'll have to add those back in a way that does not throw the error again..

Solution 14:[14]

In my case, the problem was due to the following lines in the manifest:

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

Once I deleted them, the build went fine.

Solution 15:[15]

I found the answer from a duplicate question for Kotlin from here

Add <?xml version="1.0" encoding="utf-8"?> to the top of any resource .xml file that is missing it. (check your layout xml files, specially)

Solution 16:[16]

In my case I declared a string variable in xml using data binding without assigning a value to it. by setting value to variable problem resolved

Solution 17:[17]

Windows 10 Solution

Finding the file with the error: use a online decompiler if it's not a problem is some one else sees your code. Download .zip file. Open up notepad++ search -> Find in files -> STRING_TOO_LARGE -> Find all.

If the problem file is a vector asset:

Vikasdeep Singh has a great solution: avocado. Avocado will make the vector file smaller.

Solution 18:[18]

In my case, I had renamed the package and the output-metadata.json contained the old package name. Renamed the package name there, and it was fixed.

Solution 19:[19]

I had this problem and clearing the cache or updating the Gradle plugin version was not a solution

To solve the problem I had to change the name of the longest XML file to make it a bit shorter, and right after doing that the problem was solved.

Solution 20:[20]

The issue is caused by the AAPT/AAPT2 (Android Asset Packaging Tool) which processes your app’s resources and replaces them with the STRING_TOO_LARGE value when it finds a large string.

Find out for which one cause this problem. To find out follow below steps:

A. Best Way:

  1. Generate build APK
  2. Decompile APK using any decompiler and download it.
  3. Open it in any editor(Ex. VS Code)
  4. Then search "STRING_TOO_LARGE" text globally and you will find affected files. enter image description here

B. Another Way

  1. The simplest way to find out, Builds an APK and analyze it. Select Build > Build Bundle(s) / APK(s) > Build APK(s). When the build completes, a confirmation notification appears, providing a link to the APK file and a link to analyze it in the APK Analyzer.

enter image description here

  1. If you take a look into the the vector drawable file affected by this issue, you will find something like this:

enter image description here

I found this solution from Here

Solution 21:[21]

In my case I use Invalidate cache and restore go to file/Invalidate cache and restore