2
0
mirror of synced 2025-02-20 13:38:20 +00:00

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>
This commit is contained in:
David Crawshaw 2015-09-10 14:00:14 -04:00
parent c76d5c8830
commit 1f77c34859

View File

@ -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)