2
0
mirror of synced 2025-02-21 22:18:05 +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 { if !buildN {
apkw = NewWriter(out, privKey) apkw = NewWriter(out, privKey)
} }
apkwcreate := func(name string) (io.Writer, error) { apkwCreate := func(name string) (io.Writer, error) {
if buildV { if buildV {
fmt.Fprintf(os.Stderr, "apk: %s\n", name) 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) 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 { if err != nil {
return nil, err return nil, err
} }
@ -124,7 +141,7 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) {
return nil, err return nil, err
} }
w, err = apkwcreate("classes.dex") w, err = apkwCreate("classes.dex")
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -136,44 +153,16 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) {
return nil, err return nil, err
} }
w, err = apkwcreate("lib/armeabi/lib" + libName + ".so") if err := apkwWriteFile("lib/armeabi/lib"+libName+".so", libPath); err != nil {
if err != nil {
return nil, err 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"] { if nmpkgs["golang.org/x/mobile/exp/audio/al"] {
alDir := filepath.Join(ndkccpath, "openal/lib") dst := "lib/armeabi/libopenal.so"
filepath.Walk(alDir, func(path string, info os.FileInfo, err error) error { src := filepath.Join(ndkccpath, "openal/"+dst)
if err != nil { if err := apkwWriteFile(dst, src); err != nil {
return err return nil, 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
})
} }
// Add any assets. // Add any assets.
@ -198,17 +187,7 @@ func goAndroidBuild(pkg *build.Package) (map[string]bool, error) {
return nil return nil
} }
name := "assets/" + path[len(assetsDir)+1:] name := "assets/" + path[len(assetsDir)+1:]
w, err := apkwcreate(name) return apkwWriteFile(name, path)
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
}) })
if err != nil { if err != nil {
return nil, fmt.Errorf("asset %v", err) return nil, fmt.Errorf("asset %v", err)