forked from joejulian/gio
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user