62

When I clean the android project in android studio, the error happens. I have backed to previous commit or different branch, which worked fine couple days ago, but has this error now.

I have checked this question and there are no large images or strings added to my project. STRING_TOO_LARGE String in Kotlin

6
  • I am having the same issue after updating a Java project to the latest Gradle version. Commented Oct 2, 2018 at 12:54
  • Does anyone found any solution? Commented Oct 4, 2018 at 9:30
  • 1
    @Nikhil Not yet, It just works for me.....without doing anything Commented Oct 4, 2018 at 16:18
  • @Xianwei Same for me too. it is kind of weird but its working now without doing anything Commented Oct 8, 2018 at 7:26
  • 1
    for me it was svg file that i used for icon generation in android image asset studio. when i cleared the path of that svg file and made my icon simple the error disappeared. Commented May 19, 2020 at 6:21

25 Answers 25

26

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

Sign up to request clarification or add additional context in comments.

4 Comments

How can I do this from Android Studio?
Here is solution in Android Document open android studio , select View > Tool Windows > Terminal from the menu bar and use one of the following commands: (in windows )gradlew cleanBuildCache and (in mac or linux) ./gradlew cleanBuildCache
It is fixed for my issue
@PriteshVishwakarma Task 'cleanBuildCache' not found in root project 'xxx'.
19

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

1 Comment

Perfect solution for my case
18

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"

4 Comments

This is the best way how to figure out which string is too long! Thank you.
Nothing appears when I use this command line. Does it mean, it does not come from a string?
I get nothing as well
This is a great solution, however this command didn't work for me, so I just decompiled my apk (use any online decompiler) and then ran: grep -r "STRING_TOO_LARGE" /decompiled_apk_folder. In my case it pointed me directly to the problematic SVG file.
17

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

Comments

13

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'

10 Comments

I got this error, when I upgraded gradle from 3.1.3 to 3.2.0, i don't want to use the version below 3.2.0
I always get this error when attempting to add the stripe library "com.stripe:stripe-android:6.1.2" to any project including an empty one. I can sometimes get it go away by deleting the Gradle dirs and resyncing, but downgrading Gradle plugin seems to be the only reliable option to make it go away permanently Gradle Plugin Versions
@Elletlar and anyone who had this problem because of Stripe SDK: Version 6.1.2 of the SDK includes a vector drawable with a very long path. That path is the one generating the error and that's what gets replaced with "STRING_TOO_LARGE". They fixed it in this commit github.com/stripe/stripe-android/pull/547 so any version including this fix (7.0.0 upwards) makes the error go away. I'm using 8.1.0 at the time of writing.
This is not a solution!
Downgrading seems a bit hacky to me.
|
11

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>

Comments

10

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 or you can use online decompile tools(if below command not work).

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

Unzip that decompile folder and use below command in your terminal

grep -r "STRING_TOO_LARGE" ./debug(unzipped folder)

Finally, found the xml file that was in another library but progaurd stripped out before.

Hope that helps someone

Comments

7

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

Comments

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.

Comments

5

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

Comments

4

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

Comments

2

Just use gradlew cleanBuildCache in your Android studio terminal

Comments

1

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.

Comments

1

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)

Comments

1

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

Comments

1

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.

Comments

0

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.

Comments

0

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

Comments

0

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.

1 Comment

Yep!, in my case one of my vector asset file was "too big" and causing the app to crash.
0

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.

Comments

0

If you struggle to find a solution in 2023 then try to reduce the size of your path in your xml vector drawable. You can use a tool like avocado Avocado

1 Comment

any affiliation? /help/promotion
0

After i took 2 days to catch the issue :( Finally : check your drawable file and delete any svg image (xml images) that exceed 50Kb its work for me :)

Comments

-1

Add this to Gradle.properties

org.gradle.unsafe.configuration-cache=true

Comments

-2

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

Comments

-6

instead of this

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

Replaced it with this in the gradle.properties

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

1 Comment

wau ... should be deleted...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.