cmd/gogio: [android] allow custom signature-key

That change makes possible to provide custom PKCS#12 (JKS/PFX) using `-signkey` and the password with `-signpass`.

By default the gogio will use the `debug.keystore`, if no key is provided.

Signed-off-by: Inkeliz <inkeliz@inkeliz.com>
This commit is contained in:
Inkeliz
2021-02-22 16:50:58 +00:00
committed by Elias Naur
parent 60d48014d4
commit 212f7809cb
4 changed files with 50 additions and 26 deletions
+39 -25
View File
@@ -548,37 +548,18 @@ func signAPK(tmpDir string, tools *androidTools, bi *buildInfo) error {
if err != nil {
return err
}
home, err := os.UserHomeDir()
if err != nil {
return err
}
keystore := filepath.Join(home, ".android", "debug.keystore")
if _, err := os.Stat(keystore); err != nil {
keystore = filepath.Join(tmpDir, "sign.keystore")
keytool, err := findKeytool()
if err != nil {
return err
}
_, err = runCmd(exec.Command(
keytool,
"-genkey",
"-keystore", keystore,
"-storepass", "android",
"-alias", "android",
"-keyalg", "RSA", "-keysize", "2048",
"-validity", "10000",
"-noprompt",
"-dname", "CN=android",
))
if err != nil {
if bi.key == "" {
if err := defaultAndroidKeystore(tmpDir, bi); err != nil {
return err
}
}
_, err = runCmd(exec.Command(
filepath.Join(tools.buildtools, "apksigner"),
"sign",
"--ks-pass", "pass:android",
"--ks", keystore,
"--ks-pass", "pass:"+bi.password,
"--ks", bi.key,
apkFile,
))
if err != nil {
@@ -587,6 +568,39 @@ func signAPK(tmpDir string, tools *androidTools, bi *buildInfo) error {
return nil
}
func defaultAndroidKeystore(tmpDir string, bi *buildInfo) error {
home, err := os.UserHomeDir()
if err != nil {
return err
}
// Use debug.keystore, if exists.
bi.key = filepath.Join(home, ".android", "debug.keystore")
bi.password = "android"
if _, err := os.Stat(bi.key); err == nil {
return nil
}
// Generate new key.
bi.key = filepath.Join(tmpDir, "sign.keystore")
keytool, err := findKeytool()
if err != nil {
return err
}
_, err = runCmd(exec.Command(
keytool,
"-genkey",
"-keystore", bi.key,
"-storepass", bi.password,
"-alias", "android",
"-keyalg", "RSA", "-keysize", "2048",
"-validity", "10000",
"-noprompt",
"-dname", "CN=android",
))
return err
}
func findNDK(androidHome string) (string, error) {
ndks, err := filepath.Glob(filepath.Join(androidHome, "ndk", "*"))
if err != nil {