From 9d8d5da1069ac944c0d5d086eac8dbd96b9d8e00 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Thu, 11 Jul 2019 13:22:42 +0200 Subject: [PATCH] cmd/gio: (android) don't compress resources.arsc in apks Compressing resources.arsc result in warnings such as "resources.arsc in APK '...' is compressed." in the adb logs. Signed-off-by: Elias Naur --- cmd/gio/androidbuild.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/cmd/gio/androidbuild.go b/cmd/gio/androidbuild.go index d173fb7e..339bc54b 100644 --- a/cmd/gio/androidbuild.go +++ b/cmd/gio/androidbuild.go @@ -338,7 +338,11 @@ func exeAndroid(tmpDir string, tools *androidTools, bi *buildInfo) (err error) { } for _, f := range apkFiles { name := filepath.Base(f) - apkw.Add(name, f) + if name == "resources.arsc" { + apkw.Store(name, f) + } else { + apkw.Add(name, f) + } } for _, a := range bi.archs { arch := allArchs[a] @@ -555,17 +559,35 @@ func (z *zipWriter) Create(name string) io.Writer { return &errWriter{w: w, err: &z.err} } +func (z *zipWriter) Store(name, file string) { + z.add(name, file, false) +} + func (z *zipWriter) Add(name, file string) { + z.add(name, file, true) +} + +func (z *zipWriter) add(name, file string, compressed bool) { if z.err != nil { return } - w := z.Create(name) f, err := os.Open(file) if err != nil { z.err = err return } defer f.Close() + fh := &zip.FileHeader{ + Name: name, + } + if compressed { + fh.Method = zip.Deflate + } + w, err := z.w.CreateHeader(fh) + if err != nil { + z.err = err + return + } if _, err := io.Copy(w, f); err != nil { z.err = err return