@@ -2,7 +2,7 @@ import { Config } from '../config';
2
2
import { checkPlatformVersions , logFatal , resolveNode , runTask } from '../common' ;
3
3
import { getAndroidPlugins } from './common' ;
4
4
import { checkAndInstallDependencies , handleCordovaPluginsJS , writeCordovaAndroidManifest } from '../cordova' ;
5
- import { convertToUnixPath , copySync , readFileAsync , removeSync , writeFileAsync } from '../util/fs' ;
5
+ import { convertToUnixPath , copySync , existsSync , readFileAsync , removeSync , writeFileAsync } from '../util/fs' ;
6
6
import { join , relative , resolve } from 'path' ;
7
7
import { Plugin , PluginType , getAllElements , getFilePath , getPlatformElement , getPluginPlatform , getPluginType , getPlugins , printPlugins } from '../plugin' ;
8
8
@@ -82,9 +82,7 @@ project(':${getGradlePackageName(p.id)}').projectDir = new File('${relativePlugi
82
82
prefsArray = prefsArray . concat ( getAllElements ( p , platform , 'preference' ) ) ;
83
83
} ) ;
84
84
let frameworkString = frameworksArray . join ( '\n' ) ;
85
- prefsArray . map ( ( preference : any ) => {
86
- frameworkString = frameworkString . replace ( new RegExp ( ( '$' + preference . $ . name ) . replace ( '$' , '\\$&' ) , 'g' ) , preference . $ . default ) ;
87
- } ) ;
85
+ frameworkString = await replaceFrameworkVariables ( config , prefsArray , frameworkString ) ;
88
86
const dependencyLines = `// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
89
87
90
88
android {
@@ -134,17 +132,15 @@ export async function handleCordovaPluginsGradle(config: Config, cordovaPlugins
134
132
let frameworkString = frameworksArray . map ( f => {
135
133
return ` implementation "${ f } "` ;
136
134
} ) . join ( '\n' ) ;
137
- prefsArray . map ( ( preference : any ) => {
138
- frameworkString = frameworkString . replace ( new RegExp ( ( '$' + preference . $ . name ) . replace ( '$' , '\\$&' ) , 'g' ) , preference . $ . default ) ;
139
- } ) ;
135
+ frameworkString = await replaceFrameworkVariables ( config , prefsArray , frameworkString ) ;
140
136
let applyString = applyArray . join ( '\n' ) ;
141
137
let buildGradle = await readFileAsync ( pluginsGradlePath , 'utf8' ) ;
142
138
buildGradle = buildGradle . replace ( / ( S U B - P R O J E C T D E P E N D E N C I E S S T A R T ) [ \s \S ] * ( \/ \/ S U B - P R O J E C T D E P E N D E N C I E S E N D ) / , '$1\n' + frameworkString . concat ( '\n' ) + ' $2' ) ;
143
139
buildGradle = buildGradle . replace ( / ( P L U G I N G R A D L E E X T E N S I O N S S T A R T ) [ \s \S ] * ( \/ \/ P L U G I N G R A D L E E X T E N S I O N S E N D ) / , '$1\n' + applyString . concat ( '\n' ) + '$2' ) ;
144
140
await writeFileAsync ( pluginsGradlePath , buildGradle ) ;
145
141
const cordovaVariables = `// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
146
142
ext {
147
- cdvMinSdkVersion = ${ config . android . minVersion }
143
+ cdvMinSdkVersion = rootProject.ext.minSdkVersion
148
144
// Plugin gradle extensions can append to this to have code run at the end.
149
145
cdvPluginPostBuildExtras = []
150
146
}` ;
@@ -201,3 +197,17 @@ async function getPluginsTask(config: Config) {
201
197
return androidPlugins ;
202
198
} ) ;
203
199
}
200
+
201
+ async function replaceFrameworkVariables ( config : Config , prefsArray : Array < any > , frameworkString : string ) {
202
+ const variablesFile = resolve ( config . app . rootDir , 'android' , 'variables.gradle' ) ;
203
+ let variablesGradle = '' ;
204
+ if ( existsSync ( variablesFile ) ) {
205
+ variablesGradle = await readFileAsync ( variablesFile , 'utf8' ) ;
206
+ }
207
+ prefsArray . map ( ( preference : any ) => {
208
+ if ( ! variablesGradle . includes ( preference . $ . name ) ) {
209
+ frameworkString = frameworkString . replace ( new RegExp ( ( '$' + preference . $ . name ) . replace ( '$' , '\\$&' ) , 'g' ) , preference . $ . default ) ;
210
+ }
211
+ } ) ;
212
+ return frameworkString ;
213
+ }
0 commit comments