@@ -175,55 +175,51 @@ private fun BaseAppModuleExtension.setupPackagingResourcesDeduplication() {
175175}
176176
177177private fun BaseAppModuleExtension.setupSigningAndBuildTypes () {
178- signingConfigs {
179- create(" releaseSigningConfig" ) {
180- // Only initialise the signing config when a Release or Bundle task is being executed.
181- // This prevents Gradle sync or debug builds from attempting to load the keystore,
182- // which could fail if the keystore or environment variables are not available.
183- // SigningConfig itself is only wired to the 'release' build type, so this guard avoids unnecessary setup.
184- val isReleaseBuild =
185- gradle.startParameter.taskNames.any {
186- it.contains(" Release" , ignoreCase = true ) ||
187- it.contains(" Bundle" , ignoreCase = true ) ||
188- it.equals(" build" , ignoreCase = true )
189- }
178+ val releaseSigningConfigName = " releaseSigningConfig"
179+ val timestamp = SimpleDateFormat (" yyyyMMdd-HHmmss" ).format(Date ())
180+ val baseName = " $productApkName -${libs.versions.versionName.get()} -$timestamp "
181+ val isReleaseBuild = gradle.startParameter.taskNames.any {
182+ it.contains(" Release" , ignoreCase = true )
183+ || it.contains(" Bundle" , ignoreCase = true )
184+ || it.equals(" build" , ignoreCase = true )
185+ }
190186
191- if (isReleaseBuild || isRunningOnCI) {
192- val keystorePropertiesFile = file(" ../../keystore.properties" )
187+ extensions.configure<BasePluginExtension > { archivesName.set(baseName) }
193188
194- if (isRunningOnCI || ! keystorePropertiesFile.exists()) {
195- println (" ⚠\uFE0F Signing Config: using environment variables" )
196- keyAlias = System .getenv(" CI_ANDROID_KEYSTORE_ALIAS" )
197- keyPassword = System .getenv(" CI_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD" )
198- storeFile = file(System .getenv(" KEYSTORE_LOCATION" ))
199- storePassword = System .getenv(" CI_ANDROID_KEYSTORE_PASSWORD" )
200- } else {
201- println (" ⚠\uFE0F Signing Config: using keystore properties" )
202- val properties = Properties ()
203- InputStreamReader (
204- FileInputStream (keystorePropertiesFile),
205- Charsets .UTF_8 ,
206- ).use { reader ->
207- properties.load(reader)
208- }
189+ signingConfigs.create(releaseSigningConfigName) {
190+ // Only initialise the signing config when a Release or Bundle task is being executed.
191+ // This prevents Gradle sync or debug builds from attempting to load the keystore,
192+ // which could fail if the keystore or environment variables are not available.
193+ // SigningConfig itself is only wired to the 'release' build type, so this guard avoids unnecessary setup.
194+ if (isReleaseBuild) {
195+ val keystorePropertiesFile = file(" ../../keystore.properties" )
209196
210- keyAlias = properties.getProperty(" alias" )
211- keyPassword = properties.getProperty(" pass" )
212- storeFile = file(properties.getProperty(" store" ))
213- storePassword = properties.getProperty(" storePass" )
214- }
197+ if (isRunningOnCI || ! keystorePropertiesFile.exists()) {
198+ println (" ⚠\uFE0F Signing Config: using environment variables" )
199+ keyAlias = System .getenv(" CI_ANDROID_KEYSTORE_ALIAS" )
200+ keyPassword = System .getenv(" CI_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD" )
201+ storeFile = file(System .getenv(" KEYSTORE_LOCATION" ))
202+ storePassword = System .getenv(" CI_ANDROID_KEYSTORE_PASSWORD" )
215203 } else {
216- println (" ⚠\uFE0F Warning: Signing Config not created for non-release builds." )
204+ println (" ⚠\uFE0F Signing Config: using keystore properties" )
205+ val properties = Properties ()
206+ InputStreamReader (
207+ FileInputStream (keystorePropertiesFile),
208+ Charsets .UTF_8 ,
209+ ).use { reader ->
210+ properties.load(reader)
211+ }
212+
213+ keyAlias = properties.getProperty(" alias" )
214+ keyPassword = properties.getProperty(" pass" )
215+ storeFile = file(properties.getProperty(" store" ))
216+ storePassword = properties.getProperty(" storePass" )
217217 }
218+ } else {
219+ println (" ⚠\uFE0F Signing Config: not created for non-release builds." )
218220 }
219221 }
220222
221- val timestamp = SimpleDateFormat (" yyyyMMdd-HHmmss" ).format(Date ())
222- val baseName = " $productApkName -${libs.versions.versionName.get()} -$timestamp "
223- extensions.configure<BasePluginExtension > {
224- archivesName.set(baseName)
225- }
226-
227223 buildTypes {
228224 fun setOutputFileName () {
229225 applicationVariants.all {
@@ -253,7 +249,7 @@ private fun BaseAppModuleExtension.setupSigningAndBuildTypes() {
253249 " proguard-rules.pro" ,
254250 ),
255251 )
256- signingConfig = signingConfigs.getByName(" releaseSigningConfig " )
252+ signingConfig = signingConfigs.getByName(name = releaseSigningConfigName )
257253 setOutputFileName()
258254 }
259255 }
0 commit comments