Build.gradle不接受版本代码作为字符串

时间:2016-02-01 14:09:13

标签: android android-gradle

版本代码将1到9更新为字符串,但是,当更新为10时会出现编译时错误:

Cannot cast object '10' with class 'java.lang.String' to class 'java.lang.Integer'

    versionCode = "10"

如果我将版本代码设为整数10,我可以生成已签名的apk但无法在Play商店中上传。

项目最初是在eclipse中创建的,后来迁移到了android studio

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

dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
}
}

android {     compileSdkVersion 23     buildToolsVersion' 23.0.2'     useLibrary' org.apache.http.legacy'

defaultConfig {
    minSdkVersion 16
    targetSdkVersion 23
    versionCode = 10
    versionName = "1.1.12"
    multiDexEnabled true
}

lintOptions {
    // set to true to turn off analysis progress reporting by lint
    quiet true
    // if true, stop the gradle build if errors are found
    abortOnError false
    // if true, only report errors
    ignoreWarnings true
}
buildTypes {
    release {
        minifyEnabled false
        zipAlignEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}




sourceSets.main {
    jniLibs.srcDir 'libs'
    jni.srcDirs = [] //disable automatic ndk-build call
}

}

3 个答案:

答案 0 :(得分:3)

Cannot cast object '10' with class 'java.lang.String' to class 'java.lang.Integer'
  1. versionCode必须是整数值。

  2. 删除 =

  3. 机器人:的versionCode

      

    表示版本的整数值   应用程序代码,相对于其他版本。价值是   整数,以便其他应用程序可以编程方式评估它,   例如,检查升级或降级关系。你可以设置   你想要的任何整数的值,但你应该确保   应用程序的每个连续版本都使用更大的值。该   系统不会强制执行此行为,但会增加值   连续发布是规范性的。

      minSdkVersion 16
        targetSdkVersion 23
        versionCode  10
        versionName "1.1.12"
        multiDexEnabled true
    

    然后清理 - 重建 - 运行

    <强> FYI

     versionCode Integer.parseInt("10") // String to Integer convert
    

答案 1 :(得分:2)

我有一种预感,Gradle将其解释为char,并且只将9字符的ASCII码分配给versionCode(这也就是为什么它不适用于多个字符,因为那么它被假定为一个字符串)。

由于角色9的ASCII码为57,您应尝试使用 versionCode 58或更高版本上传(因为Google Play不允许降级)。

答案 2 :(得分:0)

更改versionCode = "10" 这个versionCode 10

这是默认格式