尝试使用Gradle编译Android项目并得到一个奇怪的错误。
当我运行./gradlew tasks --stacktrace
时。尝试干净的重建,回购的新鲜克隆,不同的分支,同事们能够建立aok。
寻找要检查/尝试解决此问题的想法。
*更新:恢复为Gradle 2.11,com.android.tools.build:gradle:2.2.0-alpha6
似乎解决了这个问题。 *
这是堆栈:
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)
建造时间:2016-07-18 06:38:37 UTC 修订:d9e2113d9fb05a5caabba61798bdb8dfdca83719
Groovy:2.4.4 Ant:2015年6月29日编译的Apache Ant(TM)版本1.9.6 JVM:1.8.0_101(Oracle Corporation 25.101-b13) 操作系统:Mac OS X 10.11.6 x86_64
答案 0 :(得分:8)
合并冲突对我造成了这一影响。冲突发生在gradle.properties
中。我认为是<<<<<<< HEAD
之类的行。如果该消息更具描述性,那将很有帮助。
答案 1 :(得分:5)
=
是一个键值分隔符。如果要在属性文件中拆分部分,可以使用注释:
foo.bar=foo
#=======
foo.baz=baz
更多信息可在以下网址找到:properties file format。
答案 2 :(得分:3)
我通过删除全局gradle.properties文件~/.gradle/gradle.properties
中的所有条目找到了该问题
因此,我的上一个文件中必定存在gradle不喜欢的内容。复制并粘贴几个部分后,我发现这是罪魁祸首
=======
我一直在使用======
来拆分我的gradle属性的部分(我已经定义了开源和商业键/属性)。
在gradle 2.11的早期版本中,这是aok并且编译得很好但是在2.14.1上你得到了神秘的错误“String index out of range:0”。
答案 3 :(得分:2)
对我来说,问题是由于gradle.properties的SVN冲突造成的,如下所示: bin build.gradle gradle.properties gradle.properties.r91662 src build build.num gradle.properties.mine gradle.properties.r91979 tmp
有一次,我把gradle.properties作为svn解决,gradle build开始正常工作。
答案 4 :(得分:1)
这表示gradle.properties中存在一些错误的值,请删除无效的enteries。
答案 5 :(得分:0)
删除为我工作的~/.gradle/
目录,当我将我的android工作室更新为Exception:String index out of range:0
2.3.1
答案 6 :(得分:0)
检查您的findMyEl(String prefix, int maxEls)
,如果项目中包含已移除/不存在模块。
我在settings.gradle
文件中仍然已经删除模块谎言</ strong>。删除它解决了我的问题。
答案 7 :(得分:0)
检查你的文件,它可能是你有一个未解决的合并冲突,它在你的代码中添加了不需要的额外字符,比如 <===== head 或其他 git 语法在 github vscode 扩展的帮助下将有助于减少立即搜索并将您指向外国不需要的字符
删除 ~/.gradle/ 目录