cmd/gogio: [Android] report unsupported JDK versions when d8 fails

d8 doesn't check and fails with an inscrutable error when using
unsupported JDK versions such as JDK 11.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-09-11 09:29:00 +02:00
parent c175aaeb7c
commit dae3b0fa5a
+15
View File
@@ -358,6 +358,10 @@ func exeAndroid(tmpDir string, tools *androidTools, bi *buildInfo, extraJars, pe
)
d8.Args = append(d8.Args, classFiles...)
if _, err := runCmd(d8); err != nil {
major, minor, ok := determineJDKVersion()
if ok && (major != 1 || minor < 7 || 8 < minor) {
return fmt.Errorf("unsupported JDK version %d.%d, expected 1.7 or 1.8\nd8 error: %v", major, minor, err)
}
return err
}
}
@@ -566,6 +570,17 @@ func exeAndroid(tmpDir string, tools *androidTools, bi *buildInfo, extraJars, pe
return unsignedAPKZip.Close()
}
func determineJDKVersion() (int, int, bool) {
java := exec.Command("java", "-version")
out, err := java.CombinedOutput()
if err != nil {
return 0, 0, false
}
var major, minor int
_, err = fmt.Sscanf(string(out), "java version \"%d.%d", &major, &minor)
return major, minor, err == nil
}
func signAPK(tmpDir string, apkFile string, tools *androidTools, bi *buildInfo) error {
if err := zipalign(tools, filepath.Join(tmpDir, "app.zip"), apkFile); err != nil {
return err