@@ -13,12 +13,13 @@ gradle.projectsEvaluated {
1313 def start = name. startsWith(prefixes[0 ]) ? prefixes[0 ]. length() : prefixes[1 ]. length()
1414 def end = name. length() - suffix. length()
1515 def flavor = name. substring(start, end). uncapitalize()
16+ def defaultVersion = getDefaultVersion(flavor)
1617
17- task. finalizedBy createUploadSourcemapsTask(flavor)
18+ task. finalizedBy createUploadSourcemapsTask(flavor, defaultVersion . name, defaultVersion . code )
1819 }
1920}
2021
21- Task createUploadSourcemapsTask (String flavor ) {
22+ Task createUploadSourcemapsTask (String flavor , String defaultVersionName , String defaultVersionCode ) {
2223 def name = ' uploadSourcemaps' + flavor. capitalize()
2324
2425 // Don't recreate the task if it already exists.
@@ -47,9 +48,8 @@ Task createUploadSourcemapsTask(String flavor) {
4748 def inferredToken = executeShellScript(tokenShellFile, jsProjectDir)
4849 def appToken = resolveVar(' App Token' , ' INSTABUG_APP_TOKEN' , inferredToken)
4950
50- def projectConfig = appProject. android. defaultConfig
51- def versionName = resolveVar(' Version Name' , ' INSTABUG_VERSION_NAME' , " ${ projectConfig.versionName} " )
52- def versionCode = resolveVar(' Version Code' , ' INSTABUG_VERSION_CODE' , " ${ projectConfig.versionCode} " )
51+ def versionName = resolveVar(' Version Name' , ' INSTABUG_VERSION_NAME' , defaultVersionName)
52+ def versionCode = resolveVar(' Version Code' , ' INSTABUG_VERSION_CODE' , defaultVersionCode)
5353
5454 exec {
5555 def osCompatibility = Os . isFamily(Os . FAMILY_WINDOWS ) ? [' cmd' , ' /c' ] : []
@@ -100,6 +100,33 @@ File getSourceMapFile(File appDir, String flavor) {
100100 return fallbackSourceMapFile
101101}
102102
103+ /**
104+ * Infers the app version to use in source map upload based on the flavor.
105+ * This is needed since different flavors may have different version codes and names (e.g. version suffixes).
106+ *
107+ * It checks the version for the flavor's variant.
108+ * If no variant is found it falls back to the app's default config.
109+ *
110+ *
111+ * @param flavor The flavor to get the app version for.
112+ * @return A map containing the version code and version name.
113+ */
114+ Map<String , String > getDefaultVersion (String flavor ) {
115+ def appProject = project(' :app' )
116+ def defaultConfig = appProject. android. defaultConfig
117+
118+ def variants = appProject. android. applicationVariants
119+
120+ // uncapitalize is used to turn "Release" into "release" if the flavor is empty
121+ def variantName = " ${ flavor} Release" . uncapitalize()
122+ def variant = variants. find { it. name. uncapitalize() == variantName }
123+
124+ def versionName = variant?. versionName ?: defaultConfig. versionName
125+ def versionCode = variant?. versionCode ?: defaultConfig. versionCode
126+
127+ return [name : " ${ versionName} " , code : " ${ versionCode} " ]
128+ }
129+
103130boolean isUploadSourcemapsEnabled () {
104131 def envValue = System . getenv(' INSTABUG_SOURCEMAPS_UPLOAD_DISABLE' )?. toBoolean()
105132 def defaultValue = true
0 commit comments