gradlew编译时出现Unsupported major.minor version 52.0
2017-07-06 09:33
357 查看
Android apk命令行编译时,出现如下错误:Unsupported major.minor version 52.0
先摆上结论:
1.有可能是compileSdkVersion和buildToolVersion版本不一致所致;
2.也有可能是编译环境Java版本和jks生成的Java版本不一致所致,此demo就是这种情况。
接下来大致记录一下这个案例,还是那句话,好记性不如烂笔头
user@swd3:/local/sdb/GAPPSRC/NfcCardRead$ ~/Android/Sdk/build-tools/25.0.3/apksigner \
sign --ks /usr/lib/jvm/java-8-openjdk-amd64/bin/bbb_aosp.jks \
--out NfcCardRead-release-signed-aligned.apk NfcCardRead-release-unsigned-aligned.apk
Exception in thread "main" java.lang.UnsupportedClassVersionError:
com/android/apksigner/ApkSignerTool : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
由以上的输出可知,apksigner命令来自SDK v25.0.3,起初怀疑时sdk build tools版本的问题,去检查build.gradle,发现compileSdkVersion和buildToolVersion版本是一致的。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.knealq.user.nfccardread"
minSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
再回到上述命令,其它命令均来SDK v25.0.3目录,唯有签名文件jks是通过Java 8目录中命令生成的,因此查看当前终端Java版本,发现果然不一致。
最后,更新终端Java版本,重新执行./gradlew assembleRelease命令,重新签名。当再次执行到此命令时,通过。
先摆上结论:
1.有可能是compileSdkVersion和buildToolVersion版本不一致所致;
2.也有可能是编译环境Java版本和jks生成的Java版本不一致所致,此demo就是这种情况。
接下来大致记录一下这个案例,还是那句话,好记性不如烂笔头
user@swd3:/local/sdb/GAPPSRC/NfcCardRead$ ~/Android/Sdk/build-tools/25.0.3/apksigner \
sign --ks /usr/lib/jvm/java-8-openjdk-amd64/bin/bbb_aosp.jks \
--out NfcCardRead-release-signed-aligned.apk NfcCardRead-release-unsigned-aligned.apk
Exception in thread "main" java.lang.UnsupportedClassVersionError:
com/android/apksigner/ApkSignerTool : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
由以上的输出可知,apksigner命令来自SDK v25.0.3,起初怀疑时sdk build tools版本的问题,去检查build.gradle,发现compileSdkVersion和buildToolVersion版本是一致的。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.knealq.user.nfccardread"
minSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
再回到上述命令,其它命令均来SDK v25.0.3目录,唯有签名文件jks是通过Java 8目录中命令生成的,因此查看当前终端Java版本,发现果然不一致。
最后,更新终端Java版本,重新执行./gradlew assembleRelease命令,重新签名。当再次执行到此命令时,通过。
相关文章推荐
- Android studio 命令gradlew assembleRelease打包时,出现 Unsupported major.minor version 52.0解决办法
- Android studio 出现 Unsupported major.minor version 52.0
- Android Studio出现UnsupportedClassVersionError Unsupported major.minor version 52.0
- Visual Studio 2015 开发Android Cordova出现unsupported major minor version 52.0错误的解决方法
- sdk tools 升级到25.0.10,编译APK提示Unsupported major.minor version 52.0
- Java项目在编译时出现“Unsupported major.minor version 52”的解决方案
- eclipse运行android工程时出现Unsupported major.minor version 52.0错误
- Android studio 出现 Unsupported major.minor version 52.0
- Mac Android studio 出现 Unsupported major.minor version 52.0
- IDEA 出现 Unsupported major.minor version 52.0
- Android studio 出现 Unsupported major.minor version 52.0
- 编译运行java程序出现Exception in thread "main" java.lang.UnsupportedClassVersionError: M : Unsupported major.minor version 51.0
- Android studio 出现 Unsupported major.minor version 52.0
- Android studio 出现 Unsupported major.minor version 52.0
- Android studio 出现 Unsupported major.minor version 52.0
- Ant编译提示“Unsupported major.minor version 52.0”
- Android Studio 2.0 出现UnsupportedClassVersionError Unsupported major.minor version 52.0
- eclipse运行android工程时出现Unsupported major.minor version 52.0错误
- 运行Tomcat9.0,jdk1.7出现tomcat unsupported major.minor version 52.0
- sqoop 导入数据的时候出现Unsupported major.minor version 52.0的问题描述