您的位置:首页 > 其它

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命令,重新签名。当再次执行到此命令时,通过。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐