@@ -13,12 +13,13 @@ gradle.projectsEvaluated {
13
13
def start = name. startsWith(prefixes[0 ]) ? prefixes[0 ]. length() : prefixes[1 ]. length()
14
14
def end = name. length() - suffix. length()
15
15
def flavor = name. substring(start, end). uncapitalize()
16
+ def defaultVersion = getDefaultVersion(flavor)
16
17
17
- task. finalizedBy createUploadSourcemapsTask(flavor)
18
+ task. finalizedBy createUploadSourcemapsTask(flavor, defaultVersion . name, defaultVersion . code )
18
19
}
19
20
}
20
21
21
- Task createUploadSourcemapsTask (String flavor ) {
22
+ Task createUploadSourcemapsTask (String flavor , String defaultVersionName , String defaultVersionCode ) {
22
23
def name = ' uploadSourcemaps' + flavor. capitalize()
23
24
24
25
// Don't recreate the task if it already exists.
@@ -47,9 +48,8 @@ Task createUploadSourcemapsTask(String flavor) {
47
48
def inferredToken = executeShellScript(tokenShellFile, jsProjectDir)
48
49
def appToken = resolveVar(' App Token' , ' INSTABUG_APP_TOKEN' , inferredToken)
49
50
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)
53
53
54
54
exec {
55
55
def osCompatibility = Os . isFamily(Os . FAMILY_WINDOWS ) ? [' cmd' , ' /c' ] : []
@@ -100,6 +100,33 @@ File getSourceMapFile(File appDir, String flavor) {
100
100
return fallbackSourceMapFile
101
101
}
102
102
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
+
103
130
boolean isUploadSourcemapsEnabled () {
104
131
def envValue = System . getenv(' INSTABUG_SOURCEMAPS_UPLOAD_DISABLE' )?. toBoolean()
105
132
def defaultValue = true
0 commit comments