简体   繁体   中英

Cordova ios adding extension - Error: could not find -Info.plist file, or config.xml file

I recently encountered a problem on Cordova with adding a new target app extension. What I have is a Cordova app and a custom Cordova plugin I created. When I add an extension to my ios app (with XCode -> file -> new -> target ... Application Extension: Custom keyboard) And then I try to install my plugin, I get the following error:

Failed to install 'paykey-plugin':CordovaError: could not find -Info.plist file, or config.xml file. at Object.parseProjectFile [as parse] (/Users/Yariv/Development/workspace/paykey/paykeyCordova/platforms/ios/cordova/lib/projectFile.js:50:15) at Plugman.addPlugin (/Users/Yariv/Development/workspace/paykey/paykeyCordova/platforms/ios/cordova/lib/plugman/Plugman.js:68:31) at Api.addPlugin (/Users/Yariv/Development/workspace/paykey/paykeyCordova/platforms/ios/cordova/Api.js:202:40) at handleInstall (/Users/Yariv/npm/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/install.js:605:6) at /Users/Yariv/npm/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/install.js:403:28 at _fulfilled (/Users/Yariv/npm/lib/node_modules/cordova/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/Users/Yariv/npm/lib/node_modules/cordova/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/Users/Yariv/npm/lib/node_modules/cordova/node_modules/q/q.js:749:13) at /Users/Yariv/npm/lib/node_modules/cordova/node_modules/q/q.js:509:49 at flush (/Users/Yariv/npm/lib/node_mo dules/cordova/node_modules/q/q.js:108:17) Error: could not find -Info.plist file, or config.xml file. [12:38:19] 'installPlugins' errored after 1.39 s [12:38:19] Error: Command cordova plugin add ../paykeyCordovaPlugin failed with exit code 1 at ChildProcess.exithandler (child_process.js:203:12) at emitTwo (events.js:87:13) at ChildProcess.emit (events.js:172:7) at maybeClose (internal/child_process.js:818:16) at Socket. (internal/child_process.js:319:11) at emitOne (events.js:77:13) at Socket.emit (events.js:169:7) at Pipe._onclose (net.js:469:12)

Thanks in advance

It might because your plugin does not use the right path for *-Info.plist.

try to remove or add "$(SRCROOT)" before project name in project.pbxproj which locates in platforms/ios/YourAppName.xcodeproj/project.pbxproj when you open it with a text editor such as "Subline Text".

eg:

INFOPLIST_FILE = "$(SRCROOT)/YourAppName/YourAppName-Info.plist";

try to remove "$(SRCROOT)/" or add "$(SRCROOT)/"

The cordova found the wrong Info.plist. Maybe you manually created something in the platforms/ios, like some extensions or appclip.

Modify platforms/ios/cordova/lib/projectFile.js line 42,43:

 const xcBuildConfiguration = xcodeproj.pbxXCBuildConfigurationSection();
 const plist_file_entry = _.find(xcBuildConfiguration, entry => entry.buildSettings && entry.buildSettings.INFOPLIST_FILE);

to:

var projectName = fs
    .readdirSync(project_dir)
    .find(d => d.includes(".xcworkspace"))
    .replace(".xcworkspace", "");

    var xcBuildConfiguration = xcodeproj.pbxXCBuildConfigurationSection();
    var plist_file_entry = _.find(xcBuildConfiguration, function(entry) {
        return (
            entry.buildSettings &&
            entry.buildSettings.INFOPLIST_FILE &&
            entry.buildSettings.INFOPLIST_FILE.includes(projectName+'-Info.plist')
        );
    });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM