54 lines
929 B
Go
54 lines
929 B
Go
package apk_util
|
|
|
|
import (
|
|
"github.com/shogo82148/androidbinary/apk"
|
|
)
|
|
|
|
// Info holds basic APK version information.
|
|
type Info struct {
|
|
Version string
|
|
VersionCode int32
|
|
}
|
|
|
|
// Version returns the versionName from an APK's manifest.
|
|
func Version(path string) (string, error) {
|
|
a, err := apk.OpenFile(path)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer a.Close()
|
|
|
|
v, err := a.Manifest().VersionName.String()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return v, nil
|
|
}
|
|
|
|
// Read returns version name and version code from an APK's manifest.
|
|
func Read(path string) (*Info, error) {
|
|
a, err := apk.OpenFile(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer a.Close()
|
|
|
|
manifest := a.Manifest()
|
|
|
|
version, err := manifest.VersionName.String()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
code, err := manifest.VersionCode.Int32()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &Info{
|
|
Version: version,
|
|
VersionCode: code,
|
|
}, nil
|
|
}
|