The previous email was broken due to Ctrl+Enter, sorry ☹

I’m looking into the tests failures on OS X, caused by PlatformApi refactoring 
and it seems they caused by double caching of ios pbxproj files: first time in 
ios_parser [1] and second time in PlatformMunger (through ConfigKeeper class) 
[2], [3]. It seems that at some time one file get cached twice and then saving 
one cached instance we’re overwriting changes, saved from another cache.

So I have a question: What is the idea of dealing with xcode files and, in 
particular , with non-custom frameworks in PlatformMunger instead of ios plugin 
handler, along with custom frameworks. The one reason I see is that we need to 
count references to these frameworks, so if two or more plugins references same 
frameworks, removal of one of them won’t remove framework reference from 
pbxproj file.

However, if this this is the only reason, would it make sense to move 
non-custom frameworks related logic  to plugin handler? This will resolve those 
caching issues and looks more intuitive and easier to maintain for me.

I’ve made some prototype work on this refactoring and it seems to work fine. 
See this commit for details: [4]

-----
[1] 
https://github.com/MSOpenTech/cordova-lib/blob/master/cordova-lib/src/plugman/platforms/ios.js#L210
 
[2] 
https://github.com/MSOpenTech/cordova-lib/blob/master/cordova-common/src/ConfigChanges/ConfigChanges.js#L91
[3] 
https://github.com/MSOpenTech/cordova-lib/blob/master/cordova-common/src/ConfigChanges/ConfigKeeper.js#L47
 

[4] 
https://github.com/MSOpenTech/cordova-lib/commit/699bfe44a917b264815dc99efa0d770b766fa3a9

-
Best regards, Vladimir

From: Vladimir Kotikov (Akvelon) 
Sent: Friday, October 2, 2015 6:04 PM
To: dev@cordova.apache.org
Subject: Question about ios non-custom frameworks

Hi, guys. I’m looking into the tests failures on OS X, caused by PlatformApi 
refactoring and it seems they caused by double caching of ios pbxproj files: 
first time in ios_parser [1] and second time in PlatformMunger (through 
ConfigFile class) [2], [3]. It seems that at some time one file get cached 
twice and then saving one cached instance we’re overwriting changes, saved from 
another cache.

[1] 
https://github.com/MSOpenTech/cordova-lib/blob/master/cordova-lib/src/plugman/platforms/ios.js#L210

Reply via email to