Skip to content

Commit 862f14e

Browse files
committed
fix: added support for cordova 7.0.0
1 parent de7cc9d commit 862f14e

File tree

3 files changed

+51
-7
lines changed

3 files changed

+51
-7
lines changed

src/scripts/ios/enableEntitlements.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
// updates the xcode preferences to allow associated domains
1616
function enableAssociatedDomains (preferences) {
1717
var entitlementsFile = path.join(preferences.projectRoot, 'platforms', 'ios', preferences.projectName, 'Resources', preferences.projectName + '.entitlements')
18-
var projectFile = preferences.iosProjectModule.parseProjectFile(path.join(preferences.projectRoot, 'platforms', 'ios'))
1918

20-
activateAssociativeDomains(projectFile.xcode, entitlementsFile)
21-
addPbxReference(projectFile.xcode, entitlementsFile)
22-
projectFile.write()
19+
activateAssociativeDomains(preferences.iosProjectModule.xcode, entitlementsFile)
20+
addPbxReference(preferences.iosProjectModule.xcode, entitlementsFile)
21+
preferences.iosProjectModule.write()
2322
}
2423

2524
// adds entitlement files to the xcode project

src/scripts/npm/processConfigXml.js

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,58 @@
105105

106106
// read iOS project module from cordova context
107107
function getProjectModule (context) {
108-
// try pre-5.0 cordova structure
108+
var projectRoot = getProjectRoot(context)
109+
var projectPath = path.join(projectRoot, 'platforms', 'ios')
110+
111+
// try pre 5.0 cordova structure
109112
try {
110-
return context.requireCordovaModule('cordova-lib/src/plugman/platforms').ios
113+
return context.requireCordovaModule('cordova-lib/src/plugman/platforms').ios.parseProjectFile(projectPath)
111114
} catch (e) {
112-
return context.requireCordovaModule('cordova-lib/src/plugman/platforms/ios')
115+
// try pre 7.0 cordova structure
116+
try {
117+
return context.requireCordovaModule('cordova-lib/src/plugman/platforms/ios').parseProjectFile(projectPath)
118+
} catch (e) {
119+
return getProjectModulePlugman(context)
120+
}
113121
}
114122
}
115123

124+
function getProjectModulePlugman (context) {
125+
var projectRoot = getProjectRoot(context)
126+
var projectPath = path.join(projectRoot, 'platforms', 'ios')
127+
var projectFiles = context.requireCordovaModule('glob').sync(path.join(projectPath, '*.xcodeproj', 'project.pbxproj'))
128+
129+
if (projectFiles.length === 0) {
130+
throw new Error('BRANCH SDK: Unable to locate the Xcode project file.')
131+
}
132+
133+
var pbxPath = projectFiles[0]
134+
var xcodeproj = context.requireCordovaModule('xcode').project(pbxPath)
135+
xcodeproj.parseSync()
136+
137+
var xCodeProjectFile = {
138+
'xcode': xcodeproj,
139+
'write': function () {
140+
var fs = context.requireCordovaModule('fs')
141+
var frameworksFile = path.join(projectPath, 'frameworks.json')
142+
var frameworks = {}
143+
try {
144+
frameworks = context.requireCordovaModule(frameworksFile)
145+
} catch (e) {}
146+
147+
fs.writeFileSync(pbxPath, xcodeproj.writeSync())
148+
if (Object.keys(frameworks).length === 0) {
149+
// If there is no framework references remain in the project, just remove this file
150+
context.requireCordovaModule('shelljs').rm('-rf', frameworksFile)
151+
return
152+
}
153+
fs.writeFileSync(frameworksFile, JSON.stringify(this.frameworks, null, 4))
154+
}
155+
}
156+
157+
return xCodeProjectFile
158+
}
159+
116160
// validate <branch-config> properties within config.xml
117161
function validateBranchPreferences (preferences) {
118162
if (preferences.projectRoot === null) {

testbed/init.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ main() {
6262
npm uninstall mkpath node-version-compare plist xml2js
6363
fi
6464
rm -rf ../.installed
65+
rm -rf ./node_modules
6566
rm -rf ./plugins
6667
rm -rf ./platforms
6768
rm -rf ./build.json

0 commit comments

Comments
 (0)