If still using Eclipse for Android app development and targeting newer Android SDK versions you may find ProGuard failing with this error message:
Can't process class [junit/runner/Version. class ] (Unsupported class version number [ 52.0 ] (maximum 51.0 , Java 1.7 ))
|
Proguard returned with error code 1 . See console
Proguard Error 1
Output:
java.io.IOException: Can 't read [U:\Android\android-sdk\platforms\android-27\android.jar] (Can' t process class [junit/runner/Version. class ] (Unsupported class version number [ 52.0 ] (maximum 51.0 , Java 1.7 )))
at proguard.InputReader.readInput(InputReader.java: 230 )
at proguard.InputReader.readInput(InputReader.java: 200 )
at proguard.InputReader.readInput(InputReader.java: 178 )
at proguard.InputReader.execute(InputReader.java: 100 )
at proguard.ProGuard.readInput(ProGuard.java: 196 )
at proguard.ProGuard.execute(ProGuard.java: 78 )
at proguard.ProGuard.main(ProGuard.java: 492 )
Caused by: java.io.IOException: Can't process class [junit/runner/Version. class ] (Unsupported class version number [ 52.0 ] (maximum 51.0 , Java 1.7 ))
at proguard.io.ClassReader.read(ClassReader.java: 112 )
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java: 87 )
at proguard.io.JarReader.read(JarReader.java: 65 )
at proguard.io.DirectoryPump.readFiles(DirectoryPump.java: 65 )
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java: 53 )
at proguard.InputReader.readInput(InputReader.java: 226 )
... 6 more
Caused by: java.lang.UnsupportedOperationException: Unsupported class version number [ 52.0 ] (maximum 51.0 , Java 1.7 )
at proguard.classfile.util.ClassUtil.checkVersionNumbers(ClassUtil.java: 140 )
at proguard.classfile.io.LibraryClassReader.visitLibraryClass(LibraryClassReader.java: 89 )
at proguard.classfile.LibraryClass.accept(LibraryClass.java: 301 )
at proguard.io.ClassReader.read(ClassReader.java: 86 )
... 11 more
|
Cause
Newer versions of Android platform are compiled as Java 8 binary and ProGuard 4.7 coming with Android SDK Tools doesn't support it (last updated with
SDK Tools Revision 17, March 2012).
> cd \android-sdk\tools\proguard\bin
> proguard
ProGuard, version 4.7
Usage: java proguard.ProGuard [options ...]
|
Solution
Java 8 support is available with
Proguard 5.x onwards, so we will update to the latest version available, in my case 5.3.3 from Apr 2017.
- Move / rename the old version:
rename \android-sdk\tools\proguard\ proguard.old
|
- Download the zip file from SourceForce
- Extract the contents into \android-sdk\tools\ renaming the new folder to proguard
rename \android-sdk\tools\proguard5.3.3\ proguard
|
- Check the new version:
> cd \android-sdk\tools\proguard\bin\
> proguard
ProGuard, version 5.3.3
Usage: java proguard.ProGuard [options ...]
|
- Copy the Android configuration files over:
> cd \android-sdk\tools\
> copy proguard.old\proguard-*.txt proguard\
proguard.old\proguard-android-optimize.txt
proguard.old\proguard-android.txt
proguard.old\proguard-project.txt
3 file (s) copied.
|
Exporting the APK package again should work now.