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 <hyangah@gmail.com>
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 @@
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 @@
}
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 @@
return nil, err
}
- w, err = apkwcreate("classes.dex")
+ w, err = apkwCreate("classes.dex")
if err != nil {
return nil, err
}
@@ -136,44 +153,16 @@
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 @@
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)