@@ -13,12 +13,7 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
1313 private static VALUES_VERSION_DIRNAME_PREFIX = AndroidProjectService . VALUES_DIRNAME + "-v" ;
1414 private static ANDROID_PLATFORM_NAME = "android" ;
1515 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" ;
2217
2318 private isAndroidStudioTemplate : boolean ;
2419
@@ -41,7 +36,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
4136 this . isAndroidStudioTemplate = false ;
4237 }
4338
44- private _platformsDirCache : string = null ;
4539 private _platformData : IPlatformData = null ;
4640 public getPlatformData ( projectData : IProjectData ) : IPlatformData {
4741 if ( ! projectData && ! this . _platformData ) {
@@ -71,7 +65,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
7165 }
7266 deviceBuildOutputArr . push ( constants . BUILD_DIR , constants . OUTPUTS_DIR , constants . APK_DIR ) ;
7367
74- this . _platformsDirCache = projectData . platformsDir ;
7568 const packageName = this . getProjectNameFromId ( projectData ) ;
7669
7770 this . _platformData = {
@@ -178,6 +171,19 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
178171
179172 this . cleanResValues ( targetSdkVersion , projectData ) ;
180173
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+
181187 const npmConfig : INodePackageManagerInstallOptions = {
182188 save : true ,
183189 "save-dev" : true ,
@@ -190,23 +196,23 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject
190196
191197 const projectPackageJson : any = this . $fs . readJson ( projectData . projectFilePath ) ;
192198
193- for ( const dependency of AndroidProjectService . REQUIRED_DEV_DEPENDENCIES ) {
199+ for ( const dependency of requiredDevDependencies ) {
194200 let dependencyVersionInProject = ( projectPackageJson . dependencies && projectPackageJson . dependencies [ dependency . name ] ) ||
195201 ( projectPackageJson . devDependencies && projectPackageJson . devDependencies [ dependency . name ] ) ;
196202
197203 if ( ! dependencyVersionInProject ) {
198204 await this . $npm . install ( `${ dependency . name } @${ dependency . version } ` , projectData . projectDir , npmConfig ) ;
199205 } else {
200- const cleanedVerson = semver . clean ( dependencyVersionInProject ) ;
206+ const cleanedVersion = semver . clean ( dependencyVersionInProject ) ;
201207
202208 // The plugin version is not valid. Check node_modules for the valid version.
203- if ( ! cleanedVerson ) {
209+ if ( ! cleanedVersion ) {
204210 const pathToPluginPackageJson = path . join ( projectData . projectDir , constants . NODE_MODULES_FOLDER_NAME , dependency . name , constants . PACKAGE_JSON_FILE_NAME ) ;
205211 dependencyVersionInProject = this . $fs . exists ( pathToPluginPackageJson ) && this . $fs . readJson ( pathToPluginPackageJson ) . version ;
206212 }
207213
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 } .` ) ;
210216 }
211217 }
212218 }
0 commit comments