@@ -294,26 +294,56 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService {
294
294
}
295
295
296
296
private async getRuntimeGradleVersions ( projectDir : string ) : Promise < IRuntimeGradleVersions > {
297
- const registryData = await this . $packageManager . getRegistryPackageData ( TNS_ANDROID_RUNTIME_NAME ) ;
298
297
let runtimeGradleVersions : IRuntimeGradleVersions = null ;
299
298
if ( projectDir ) {
300
299
const projectRuntimeVersion = this . $platformService . getCurrentPlatformVersion (
301
300
this . $devicePlatformsConstants . Android ,
302
301
this . $projectDataService . getProjectData ( projectDir ) ) ;
303
- runtimeGradleVersions = this . getGradleVersions ( registryData . versions [ projectRuntimeVersion ] ) ;
302
+ runtimeGradleVersions = await this . getGradleVersions ( projectRuntimeVersion ) ;
304
303
this . $logger . trace ( `Got gradle versions ${ JSON . stringify ( runtimeGradleVersions ) } from runtime v${ projectRuntimeVersion } ` ) ;
305
304
}
306
305
307
306
if ( ! runtimeGradleVersions ) {
308
- const latestRuntimeVersion = registryData [ "dist-tags" ] . latest ;
309
- runtimeGradleVersions = this . getGradleVersions ( registryData . versions [ latestRuntimeVersion ] ) ;
307
+ const latestRuntimeVersion = await this . getLatestRuntimeVersion ( ) ;
308
+ runtimeGradleVersions = await this . getGradleVersions ( latestRuntimeVersion ) ;
310
309
this . $logger . trace ( `Got gradle versions ${ JSON . stringify ( runtimeGradleVersions ) } from the latest runtime v${ latestRuntimeVersion } ` ) ;
311
310
}
312
311
313
312
return runtimeGradleVersions || { } ;
314
313
}
315
314
316
- private getGradleVersions ( packageData : { gradle : { version : string , android : string } } ) : IRuntimeGradleVersions {
315
+ private async getLatestRuntimeVersion ( ) : Promise < string > {
316
+ let runtimeVersion : string = null ;
317
+
318
+ try {
319
+ const result = await this . $packageManager . view ( TNS_ANDROID_RUNTIME_NAME , { "dist-tags" : true } ) ;
320
+ runtimeVersion = result . latest ;
321
+ } catch ( err ) {
322
+ this . $logger . trace ( `Error while getting latest android runtime version from view command: ${ err } ` ) ;
323
+ const registryData = await this . $packageManager . getRegistryPackageData ( TNS_ANDROID_RUNTIME_NAME ) ;
324
+ runtimeVersion = registryData [ "dist-tags" ] . latest ;
325
+ }
326
+
327
+ return runtimeVersion ;
328
+ }
329
+
330
+ private async getGradleVersions ( runtimeVersion : string ) : Promise < IRuntimeGradleVersions > {
331
+ let runtimeGradleVersions : { gradle : { version : string , android : string } } = null ;
332
+
333
+ try {
334
+ const output = await this . $packageManager . view ( `${ TNS_ANDROID_RUNTIME_NAME } @${ runtimeVersion } ` , { gradle : true } ) ;
335
+ runtimeGradleVersions = { gradle : output } ;
336
+ } catch ( err ) {
337
+ this . $logger . trace ( `Error while getting gradle data for android runtime from view command: ${ err } ` ) ;
338
+ const registryData = await this . $packageManager . getRegistryPackageData ( TNS_ANDROID_RUNTIME_NAME ) ;
339
+ runtimeGradleVersions = registryData . versions [ runtimeVersion ] ;
340
+ }
341
+
342
+ const result = this . getGradleVersionsCore ( runtimeGradleVersions ) ;
343
+ return result ;
344
+ }
345
+
346
+ private getGradleVersionsCore ( packageData : { gradle : { version : string , android : string } } ) : IRuntimeGradleVersions {
317
347
const packageJsonGradle = packageData && packageData . gradle ;
318
348
let runtimeVersions : IRuntimeGradleVersions = null ;
319
349
if ( packageJsonGradle && ( packageJsonGradle . version || packageJsonGradle . android ) ) {
0 commit comments