@@ -13,12 +13,7 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
13
13
private static VALUES_VERSION_DIRNAME_PREFIX = AndroidProjectService . VALUES_DIRNAME + "-v" ;
14
14
private static ANDROID_PLATFORM_NAME = "android" ;
15
15
private static MIN_RUNTIME_VERSION_WITH_GRADLE = "1.5.0" ;
16
- private static REQUIRED_DEV_DEPENDENCIES = [
17
- { name : "babel-traverse" , version : "^6.4.5" } ,
18
- { name : "babel-types" , version : "^6.4.5" } ,
19
- { name : "babylon" , version : "^6.4.5" } ,
20
- { name : "lazy" , version : "^1.0.11" }
21
- ] ;
16
+ private static MIN_RUNTIME_VERSION_WITHOUT_DEPS = "4.2.0-2018-06-29-02" ;
22
17
23
18
private isAndroidStudioTemplate : boolean ;
24
19
@@ -41,7 +36,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
41
36
this . isAndroidStudioTemplate = false ;
42
37
}
43
38
44
- private _platformsDirCache : string = null ;
45
39
private _platformData : IPlatformData = null ;
46
40
public getPlatformData ( projectData : IProjectData ) : IPlatformData {
47
41
if ( ! projectData && ! this . _platformData ) {
@@ -71,7 +65,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
71
65
}
72
66
deviceBuildOutputArr . push ( constants . BUILD_DIR , constants . OUTPUTS_DIR , constants . APK_DIR ) ;
73
67
74
- this . _platformsDirCache = projectData . platformsDir ;
75
68
const packageName = this . getProjectNameFromId ( projectData ) ;
76
69
77
70
this . _platformData = {
@@ -178,6 +171,19 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
178
171
179
172
this . cleanResValues ( targetSdkVersion , projectData ) ;
180
173
174
+ if ( semver . lt ( frameworkVersion , AndroidProjectService . MIN_RUNTIME_VERSION_WITHOUT_DEPS ) ) {
175
+ await this . installRuntimeDeps ( projectData , config ) ;
176
+ }
177
+ }
178
+
179
+ private async installRuntimeDeps ( projectData : IProjectData , config : ICreateProjectOptions ) {
180
+ const requiredDevDependencies = [
181
+ { name : "babel-traverse" , version : "^6.4.5" } ,
182
+ { name : "babel-types" , version : "^6.4.5" } ,
183
+ { name : "babylon" , version : "^6.4.5" } ,
184
+ { name : "lazy" , version : "^1.0.11" }
185
+ ] ;
186
+
181
187
const npmConfig : INodePackageManagerInstallOptions = {
182
188
save : true ,
183
189
"save-dev" : true ,
@@ -190,23 +196,23 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
190
196
191
197
const projectPackageJson : any = this . $fs . readJson ( projectData . projectFilePath ) ;
192
198
193
- for ( const dependency of AndroidProjectService . REQUIRED_DEV_DEPENDENCIES ) {
199
+ for ( const dependency of requiredDevDependencies ) {
194
200
let dependencyVersionInProject = ( projectPackageJson . dependencies && projectPackageJson . dependencies [ dependency . name ] ) ||
195
201
( projectPackageJson . devDependencies && projectPackageJson . devDependencies [ dependency . name ] ) ;
196
202
197
203
if ( ! dependencyVersionInProject ) {
198
204
await this . $npm . install ( `${ dependency . name } @${ dependency . version } ` , projectData . projectDir , npmConfig ) ;
199
205
} else {
200
- const cleanedVerson = semver . clean ( dependencyVersionInProject ) ;
206
+ const cleanedVersion = semver . clean ( dependencyVersionInProject ) ;
201
207
202
208
// The plugin version is not valid. Check node_modules for the valid version.
203
- if ( ! cleanedVerson ) {
209
+ if ( ! cleanedVersion ) {
204
210
const pathToPluginPackageJson = path . join ( projectData . projectDir , constants . NODE_MODULES_FOLDER_NAME , dependency . name , constants . PACKAGE_JSON_FILE_NAME ) ;
205
211
dependencyVersionInProject = this . $fs . exists ( pathToPluginPackageJson ) && this . $fs . readJson ( pathToPluginPackageJson ) . version ;
206
212
}
207
213
208
- if ( ! semver . satisfies ( dependencyVersionInProject || cleanedVerson , dependency . version ) ) {
209
- this . $errors . failWithoutHelp ( `Your project have installed ${ dependency . name } version ${ cleanedVerson } but Android platform requires version ${ dependency . version } .` ) ;
214
+ if ( ! semver . satisfies ( dependencyVersionInProject || cleanedVersion , dependency . version ) ) {
215
+ this . $errors . failWithoutHelp ( `Your project have installed ${ dependency . name } version ${ cleanedVersion } but Android platform requires version ${ dependency . version } .` ) ;
210
216
}
211
217
}
212
218
}
0 commit comments