版本代码将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
}
}
答案 0 :(得分:3)
Cannot cast object '10' with class 'java.lang.String' to class 'java.lang.Integer'
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
这是默认格式