From 1f77c34859bca07ee56caa4a4cf32e71b2508469 Mon Sep 17 00:00:00 2001 From: David Crawshaw Date: Thu, 10 Sep 2015 14:00:14 -0400 Subject: [PATCH] cmd/gomobile: copy libopenal.so explicitly Fixes golang/go#12550. Change-Id: I744729cfd702f0e044eac22858ee746096977665 Reviewed-on: https://go-review.googlesource.com/14474 Reviewed-by: Hyang-Ah Hana Kim --- cmd/gomobile/build_androidapp.go | 75 ++++++++++++-------------------- 1 file changed, 27 insertions(+), 48 deletions(-) diff --git a/cmd/gomobile/build_androidapp.go b/cmd/gomobile/build_androidapp.go index 775df60..c489381 100644 --- a/cmd/gomobile/build_androidapp.go +++ b/cmd/gomobile/build_androidapp.go @@ -106,7 +106,7 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) { if !buildN { apkw = NewWriter(out, privKey) } - apkwcreate := func(name string) (io.Writer, error) { + apkwCreate := func(name string) (io.Writer, error) { if buildV { fmt.Fprintf(os.Stderr, "apk: %s\n", name) } @@ -115,8 +115,25 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) { } return apkw.Create(name) } + apkwWriteFile := func(dst, src string) error { + w, err := apkwCreate(dst) + if err != nil { + return err + } + if !buildN { + f, err := os.Open(src) + if err != nil { + return err + } + defer f.Close() + if _, err := io.Copy(w, f); err != nil { + return err + } + } + return nil + } - w, err := apkwcreate("AndroidManifest.xml") + w, err := apkwCreate("AndroidManifest.xml") if err != nil { return nil, err } @@ -124,7 +141,7 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) { return nil, err } - w, err = apkwcreate("classes.dex") + w, err = apkwCreate("classes.dex") if err != nil { return nil, err } @@ -136,44 +153,16 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) { return nil, err } - w, err = apkwcreate("lib/armeabi/lib" + libName + ".so") - if err != nil { + if err := apkwWriteFile("lib/armeabi/lib"+libName+".so", libPath); err != nil { return nil, err } - if !buildN { - r, err := os.Open(libPath) - if err != nil { - return nil, err - } - if _, err := io.Copy(w, r); err != nil { - return nil, err - } - } if nmpkgs["golang.org/x/mobile/exp/audio/al"] { - alDir := filepath.Join(ndkccpath, "openal/lib") - filepath.Walk(alDir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if info.IsDir() { - return nil - } - name := "lib/" + path[len(alDir)+1:] - w, err := apkwcreate(name) - if err != nil { - return err - } - if !buildN { - f, err := os.Open(path) - if err != nil { - return err - } - defer f.Close() - _, err = io.Copy(w, f) - } - return err - }) + dst := "lib/armeabi/libopenal.so" + src := filepath.Join(ndkccpath, "openal/"+dst) + if err := apkwWriteFile(dst, src); err != nil { + return nil, err + } } // Add any assets. @@ -198,17 +187,7 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) { return nil } name := "assets/" + path[len(assetsDir)+1:] - w, err := apkwcreate(name) - if err != nil { - return err - } - f, err := os.Open(path) - if err != nil { - return err - } - defer f.Close() - _, err = io.Copy(w, f) - return err + return apkwWriteFile(name, path) }) if err != nil { return nil, fmt.Errorf("asset %v", err)