18

Trying to compile an Android project with Gradle and getting a weird error. When I run ./gradlew tasks --stacktrace. Tried clean rebuild, fresh clone of repo, different branches, colleagues are able to build aok.

Looking for ideas of things to check/try to fix this.

*update: reverting to Gradle 2.11 and com.android.tools.build:gradle:2.2.0-alpha6 seems to have fixed the issue. *

Here's the stack:

FAILURE: Build failed with an exception.

* What went wrong:
String index out of range: 0

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
        at org.gradle.internal.reflect.JavaReflectionUtil.toMethodName(JavaReflectionUtil.java:196)
        at org.gradle.internal.reflect.JavaReflectionUtil.writeablePropertyIfExists(JavaReflectionUtil.java:156)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader$CachingPropertyApplicator.configureProperty(ProjectPropertySettingBuildLoader.java:99)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader.addPropertiesToProject(ProjectPropertySettingBuildLoader.java:76)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader.setProjectProperties(ProjectPropertySettingBuildLoader.java:53)
        at org.gradle.initialization.ProjectPropertySettingBuildLoader.load(ProjectPropertySettingBuildLoader.java:49)
        at org.gradle.initialization.NotifyingSettingsLoader.findAndLoadSettings(NotifyingSettingsLoader.java:35)
        at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:118)
        at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)
        at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
        at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)
        at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99)
        at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
        at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48)
        at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
        at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
        at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
        at org.gradle.util.Swapper.swap(Swapper.java:38)
        at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:40)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
        at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
        at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
        at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
        at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:237)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)

System details:

Gradle 2.14.1

Build time: 2016-07-18 06:38:37 UTC Revision: d9e2113d9fb05a5caabba61798bdb8dfdca83719

Groovy: 2.4.4 Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015 JVM: 1.8.0_101 (Oracle Corporation 25.101-b13) OS: Mac OS X 10.11.6 x86_64

scottyab
  • 23,621
  • 16
  • 94
  • 105
  • do you have a method `get()`, `is()` or `set(...)` in your app that gradle wants to access via reflection by removing the beans-prefix "get" / "set" / "is"? – k3b Aug 03 '16 at 10:14
  • try this - http://stackoverflow.com/a/36717739/1517029 – The_ehT Aug 03 '16 at 15:43

8 Answers8

40

A merge conflict caused this for me. And the conflict was in gradle.properties. The lines like <<<<<<< HEAD are the reason I think. It would have been helpful if the message was more descriptive.

samsri
  • 1,104
  • 14
  • 25
9

= is a key-value separator. If you want to split sections in properties file you can use a comment:

foo.bar=foo
#=======
foo.baz=baz

More info can be found in: properties file format.

koral
  • 2,513
  • 1
  • 32
  • 41
6

I found the issue by deleting all the entries in my global gradle.properties file ~/.gradle/gradle.properties

So figured there must be something in my previous file that gradle didn't like. After copy and pasting several sections I found this to be the culprit

=======

I'd been using ====== to split the sections of my gradle properties (I have open source and commercial keys/properties defined).

In previous version of gradle 2.11 this was aok and compiled fine but on 2.14.1 you get the cryptic error "String index out of range: 0".

scottyab
  • 23,621
  • 16
  • 94
  • 105
2

For me, issue came due to SVN conflict for gradle.properties as below: bin build.gradle gradle.properties gradle.properties.r91662 src build build.num gradle.properties.mine gradle.properties.r91979 tmp

Once, I made gradle.properties as svn resolved, gradle build started working fine.

  • Thank you for this. When I read your comment I went and checked mine and it was the same thing. – Helio Borges Jun 06 '18 at 13:26
  • Gradle 4.9 here, and trying to resolve merge conflicts, as well. A better error message such as, "Malformed gradle.properties file," would have saved 15 minutes of my life. – Rusty Shackleford Aug 05 '18 at 21:01
1

This indicates there is some wrong values in gradle.properties, please remove invalid enteries.

maruti060385
  • 707
  • 8
  • 11
0

delete the ~/.gradle/ dir worked for me,Gradle Exception:String index out of range:0 when I update my android studio to 2.3.1

Mazz
  • 1,859
  • 26
  • 38
0

Check your settings.gradle, if it contains any removed/non-existing module in your project.

I had an already removed module still lying in the settings.gradle file. Removing it solved my issue.

Mohammedsalim Shivani
  • 1,793
  • 3
  • 19
  • 30
0

check your files it might be you have an unresolved merge conflicts which added extra character to your code which is not needed like <===== head or other git syntax with the help of github vscode extension will help to reduce the search and poing you to the foreign unwanted character immediately

delete the ~/.gradle/ dir

Alabi Temitope
  • 405
  • 5
  • 16