@@ -18,7 +18,10 @@ import {
1818 CONFIG_FILE_NAME_TS ,
1919 PACKAGE_JSON_FILE_NAME ,
2020 PLATFORMS_DIR_NAME ,
21+ PlatformTypes ,
2122 PREPARE_READY_EVENT_NAME ,
23+ SCOPED_ANDROID_RUNTIME_NAME ,
24+ SCOPED_IOS_RUNTIME_NAME ,
2225 SupportedPlatform ,
2326 TrackActionNames ,
2427} from "../constants" ;
@@ -36,6 +39,7 @@ import {
3639 IProjectDataService ,
3740 IProjectService ,
3841} from "../definitions/project" ;
42+ import { resolvePackageJSONPath } from "@rigor789/resolve-package-path" ;
3943
4044interface IPlatformWatcherData {
4145 hasWebpackCompilerProcess : boolean ;
@@ -447,30 +451,72 @@ export class PrepareController extends EventEmitter {
447451 this . $logger . info (
448452 "Updating runtime package.json with configuration values..." ,
449453 ) ;
450- const nsConfig = this . $projectConfigService . readConfig (
451- projectData . projectDir ,
454+
455+
456+ const { hooks, ignoredNativeDependencies, webpackPackageName, webpackConfigPath, appResourcesPath, buildPath, appPath, ...nsConfig } = this . $projectConfigService . readConfig (
457+ projectData . projectDir
458+ ) ;
459+
460+ const platform = platformData . platformNameLowerCase ;
461+ let installedRuntimePackageJSON ;
462+ let runtimePackageName : string ;
463+ if ( platform === PlatformTypes . ios ) {
464+ runtimePackageName = projectData . nsConfig . ios ?. runtimePackageName || SCOPED_IOS_RUNTIME_NAME ;
465+ } else if ( platform === PlatformTypes . android ) {
466+ runtimePackageName = projectData . nsConfig . android ?. runtimePackageName || SCOPED_ANDROID_RUNTIME_NAME ;
467+ }
468+ // try reading from installed runtime first before reading from the npm registry...
469+ const installedRuntimePackageJSONPath = resolvePackageJSONPath (
470+ runtimePackageName ,
471+ {
472+ paths : [ projectData . projectDir ] ,
473+ }
452474 ) ;
475+
476+ if ( installedRuntimePackageJSONPath ) {
477+ installedRuntimePackageJSON = this . $fs . readJson (
478+ installedRuntimePackageJSONPath
479+ ) ;
480+ }
453481 const packageData : any = {
454482 ..._ . pick ( projectData . packageJsonData , [ "name" ] ) ,
455483 ...nsConfig ,
456484 main : "bundle" ,
485+ ...( installedRuntimePackageJSON ? { } :{ } )
457486 } ;
458-
459487 if (
460- platformData . platformNameLowerCase === "ios" &&
461- packageData . ios &&
462- packageData . ios . discardUncaughtJsExceptions
488+ platform === PlatformTypes . ios
463489 ) {
464- packageData . discardUncaughtJsExceptions =
490+ if ( installedRuntimePackageJSON ) {
491+ packageData . ios = packageData . ios || { } ;
492+ packageData . ios . runtime = {
493+ version : installedRuntimePackageJSON . version
494+ } ;
495+ }
496+ if ( packageData . ios &&
497+ packageData . ios . discardUncaughtJsExceptions ) {
498+ packageData . discardUncaughtJsExceptions =
465499 packageData . ios . discardUncaughtJsExceptions ;
500+ }
501+ delete packageData . android ;
466502 }
467503 if (
468- platformData . platformNameLowerCase === "android" &&
469- packageData . android &&
470- packageData . android . discardUncaughtJsExceptions
504+ platform === PlatformTypes . android
471505 ) {
472- packageData . discardUncaughtJsExceptions =
473- packageData . android . discardUncaughtJsExceptions ;
506+ if ( installedRuntimePackageJSON ) {
507+ packageData . android = packageData . android || { } ;
508+ packageData . android . runtime = {
509+ version : installedRuntimePackageJSON . version ,
510+ version_info : installedRuntimePackageJSON . version_info ,
511+ gradle :installedRuntimePackageJSON . gradle
512+ } ;
513+ }
514+ if ( packageData . android &&
515+ packageData . android . discardUncaughtJsExceptions ) {
516+ packageData . discardUncaughtJsExceptions =
517+ packageData . android . discardUncaughtJsExceptions ;
518+ }
519+ delete packageData . ios ;
474520 }
475521 let packagePath : string ;
476522 if (
0 commit comments