MCPcopy Create free account
hub / github.com/appdevforall/CodeOnTheGo / signApk

Function signApk

app/build.gradle.kts:978–1030  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

976}
977
978fun signApk(apkFile: File) {
979 project.logger.lifecycle("Signing APK: ${apkFile.name}")
980
981 val isWindows = System.getProperty("os.name").lowercase().contains("windows")
982 var signerExec = "apksigner"
983 if (isWindows) {
984 signerExec = "apksigner.bat"
985 }
986
987 val signingConfig =
988 android.signingConfigs.findByName("common")
989 ?: android.signingConfigs.getByName("debug")
990
991 project.logger.lifecycle("Signing Config: ${signingConfig.name}")
992
993 val keystorePath = signingConfig.storeFile?.absolutePath ?: error("Keystore not found!")
994 val keystorePassword = signingConfig.storePassword ?: error("Keystore password missing!")
995 val keyAlias = signingConfig.keyAlias ?: error("Key alias missing!")
996 val keyPassword = signingConfig.keyPassword ?: error("Key password missing!")
997
998 val androidSdkDir = android.sdkDirectory.absolutePath
999 val apkSignerPath: File =
1000 File(androidSdkDir, "build-tools")
1001 .listFiles()
1002 ?.filter { it.isDirectory && File(it, signerExec).exists() }
1003 ?.maxByOrNull { it.name } // pick the highest version
1004 ?.resolve(signerExec)
1005 ?: error("Could not find apksigner in any build-tools directory")
1006
1007 project.logger.lifecycle("APK Signer: ${apkSignerPath.absolutePath}")
1008
1009 ant.withGroovyBuilder {
1010 "exec"(
1011 "executable" to apkSignerPath.absolutePath,
1012 "failonerror" to "true",
1013 ) {
1014 "arg"("value" to "sign")
1015 "arg"("value" to "--v3-signing-enabled")
1016 "arg"("value" to "true")
1017 "arg"("value" to "--v2-signing-enabled")
1018 "arg"("value" to "true")
1019 "arg"("value" to "--ks")
1020 "arg"("value" to keystorePath)
1021 "arg"("value" to "--ks-key-alias")
1022 "arg"("value" to keyAlias)
1023 "arg"("value" to "--ks-pass")
1024 "arg"("value" to "pass:$keystorePassword")
1025 "arg"("value" to "--key-pass")
1026 "arg"("value" to "pass:$keyPassword")
1027 "arg"("value" to apkFile.absolutePath)
1028 }
1029 }
1030}
1031
1032val scpServer: String = propOrEnv("SCP_HOST")
1033

Callers 1

recompressApkFunction · 0.85

Calls 9

errorFunction · 0.85
lowercaseMethod · 0.80
containsMethod · 0.65
getPropertyMethod · 0.65
resolveMethod · 0.65
lifecycleMethod · 0.45
filterMethod · 0.45
listFilesMethod · 0.45
existsMethod · 0.45

Tested by

no test coverage detected