Android:ExternalSystemException:字符串索引超出范围:-130建筑版本

Android:ExternalSystemException:字符串索引超出范围:-130建筑版本,android,gradle,build,release,Android,Gradle,Build,Release,所以,刚刚更新到Android Studio 1.4 Beta 4,在构建发布版本时遇到了问题。我可以很好地构建调试构建。这是我得到的错误: ExternalSystemException: String index out of range: -130 经进一步检查,我发现: String index out of range: -130 com.intellij.openapi.externalSystem.model.ExternalSystemException: String ind

所以,刚刚更新到Android Studio 1.4 Beta 4,在构建发布版本时遇到了问题。我可以很好地构建调试构建。这是我得到的错误:

ExternalSystemException: String index out of range: -130
经进一步检查,我发现:

String index out of range: -130
com.intellij.openapi.externalSystem.model.ExternalSystemException: String index out of range: -130
at org.jetbrains.plugins.gradle.service.project.GradleExecutionHelper.execute(GradleExecutionHelper.java:223)
at com.android.tools.idea.gradle.invoker.GradleTasksExecutor.invokeGradleTasks(GradleTasksExecutor.java:400)
at com.android.tools.idea.gradle.invoker.GradleTasksExecutor.run(GradleTasksExecutor.java:221)
at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:563)
at com.intellij.openapi.progress.impl.CoreProgressManager$2.run(CoreProgressManager.java:152)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:452)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:402)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:54)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:137)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$1.run(ProgressManagerImpl.java:126)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:400)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)
有什么想法吗?我曾经尝试过Gradle2.3-2.7,但在构建发布版本时总是会遇到这个错误

从主模块生成build.gradle:

import java.util.regex.Pattern

buildscript {
repositories {
    maven { url 'https://maven.fabric.io/public' }
    mavenCentral()
}

dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
    classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0'
}
}

apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
// This does not break the build when Android Studio is missing the JRebel for     Android plugin.
apply plugin: 'com.zeroturnaround.jrebel.android'
apply plugin: 'io.fabric'

repositories {
maven { url 'https://maven.fabric.io/public' }
}


android {
signingConfigs {
    config {
        keyAlias 'XXX'
        keyPassword 'XXX'
        storeFile file('../signing/keystore.jks')
        storePassword 'XXX'
    }
}
compileSdkVersion 22
buildToolsVersion '22.0.1'
defaultConfig {
    applicationId "com.coffeemeetsbagel"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 605
    versionName '2.0.6.0'
    signingConfig signingConfigs.config
    multiDexEnabled true
}

productFlavors {
    lollipop {
        minSdkVersion 21
    }

    everything {
        minSdkVersion 16
    }
}
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
        debuggable false
    }
    debug {
        debuggable true
    }
    superuser.initWith(release)
    superuser {
        debuggable true
        minifyEnabled false
    }
}

packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/license'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/notice'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/DEPENDENCIES.txt'
}

dexOptions {
    javaMaxHeapSize "4g"
}
}

dependencies {
compile files('libs/commons-validator-1.4.1.jar')
compile files('libs/com.kontagent.android.sdk.jar')
compile files('libs/urbanairship-lib-4.0.4.jar')
compile files('libs/apsalar.jar')
compile('com.crashlytics.sdk.android:crashlytics:2.2.3@aar') {
    transitive = true
}
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'com.facebook.android:facebook-android-sdk:4.1.0'
compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:cardview-v7:22.2.1'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.google.code.gson:gson:2.3'
compile 'com.google.android.gms:play-services-ads:7.5.0'
compile 'com.google.android.gms:play-services-analytics:7.5.0'
compile 'com.google.android.gms:play-services-gcm:7.5.0'
compile 'com.google.android.gms:play-services-base:7.5.0'
compile 'com.google.android.gms:play-services-location:7.5.0'
compile 'com.firebase:firebase-client-android:2.2.0'
compile 'com.facebook.shimmer:shimmer:0.1.0@aar'
compile 'com.balysv:material-ripple:1.0.2'
compile 'io.branch.sdk.android:library:1.8.8'
compile 'com.facebook.device.yearclass:yearclass:1.0.1'
compile 'com.appyvet:materialrangebar:1.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.adobe.creativesdk:image:4.0.0'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:design:22.2.1'
compile project(':core')
compile project(':layouts')
compile project(':volley')
}

因此,我又回到了Android Studio 1.3,问题就消失了。

2015年9月28日,我在Android Studio 1.4版本上遇到了同样的问题 我所做的是:

  • 在主gradle脚本上启动了一个构建,该脚本在菜单中创建了一个运行配置

  • 通过在脚本参数行上添加“:app:assembleerelease”编辑运行配置。然后就开始了

  • gradle构建告诉我,在主strings.xml文件中缺少翻译


  • 修好这个之后。生成已签名的APK已顺利完成。

    如果您使用的是Android Studio,选择Gradle控制台将显示问题所在。在我的例子中,是重复的textView标识符导致了此错误。

    我也有同样的问题,但有此错误:

    ExternalSystemException: String index out of range: -119
    
    我的问题是,在字符串编辑器中,我忘记在翻译中设置默认变量,添加后,问题就解决了


    希望有帮助

    通过将此添加到build.gradle中来工作

     lintOptions {
            checkReleaseBuilds false
        }
    
    我的错误是

    ExternalSystemException:字符串索引超出范围:-

    我的应用程序支持土耳其语和英语。My English strings.xml包含

     <string name="hello_world">Hello world!</string>
    
    <string name="title_connecting">connecting...</string>
    
    你好,世界!
    
    而my Turkish strings.xml不包含

    <string name="hello_world">Bla bla!</string>
    
    Bla-Bla!
    
    当我添加
    Bla Bla到Turkish strings.xml文件,问题已解决

    <string name="title_connecting">connecting..</string>
    

    注意:请查看Android Studio的Gradle控制台
    我也有同样的问题。我的Android Studio版本是2.1.1版

    My strings.xml包含

     <string name="hello_world">Hello world!</string>
    
    <string name="title_connecting">connecting...</string>
    
    正在连接。。。
    
    然后我改为下面的陈述。问题解决了

    <string name="title_connecting">connecting..</string>
    
    正在连接。。
    
    虽然这是一个旧线程,但以下信息可能对某些人有用。我收到了一条有点不同的消息(但类似的,谷歌搜索下面的消息会将我重定向到这个线程。)

    对我来说,问题是string.xml缺少下面提到的字符串资源的名称

    <string name="">Some strings...</string>
    
    一些字符串。。。
    
    添加正确的资源名称解决了此问题

    <string name="some_string">Some strings...</string>
    
    一些字符串。。。
    
    你能发布你的build.gradle文件(去掉所有键等)吗?你能试着从命令行运行gradle版本看看AS是否有问题吗?请看Android Studio的gradle控制台确实显示了编译错误。你知道,关键在于这个问题吗?这是解决方案!检查Gradle控制台。什么是文本视图标识符所有UI元素都应该有一个id,例如,这是访问Gradle控制台视图->工具窗口->Gradle控制台的完美解决方案这将删除lint检查,但不会解决问题的根本原因。最好通过查看gradle控制台来解决错误。至少看一看错误,判断它们是否值得修复:)它是有效的,但你能解释一下吗。问题是什么,为什么它会起作用是的,它会起作用。。这段代码只是在发布版本中删除lint检查。最好在生成apk之前解决错误。有时看起来很难,这就是我在build中添加这两行的原因。gradle…:)