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 <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2019-07-11 13:22:42 +02:00
parent 15c4ce9e22
commit 9d8d5da106
+24 -2
View File
@@ -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