ionic Cordova platform add iOS fails - ios

I'm trying to run the command
ionic cordova platform add ios#6.2.0
everything is updated, my versions are:
ionic - 6.17.1
npm - 7.21.1
node - 16.9.1
pod - 1.11.2
I have the last version of Xcode (13) just released 2 days ago. When running that command I get:
--save flag or autosave detected
Saving ios#~6.2.0 into config.xml file ...
Update IOS build setting SWIFT_OBJC_BRIDGING_HEADER to: "$(PROJECT_DIR)/$(PROJECT_NAME)/Bridging-Header.h" for build configuration Debug
Update IOS build setting SWIFT_OBJC_BRIDGING_HEADER to: "$(PROJECT_DIR)/$(PROJECT_NAME)/Bridging-Header.h" for build configuration Release
Update IOS build setting ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES to: YES for build configuration Debug
Use Swift language version 5
Update IOS build setting SWIFT_OPTIMIZATION_LEVEL to: -Onone for build configuration Debug
Update IOS build setting ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES to: YES for build configuration Release
Use Swift language version 5
[ERROR] An error occurred while running subprocess cordova.
cordova platform add ios#6.2.0 exited with exit code 1.
After reading every post I found, I included on my config.xml:
<preference name="UseSwiftLanguageVersion" value="5" />
Thinking I might had a non-supported Xcode version, I downgraded Xcode to v12.5.1, selected it on Xcode -> Preferences -> Locations, then restarted all terminals and processes, restarted the Mac, but still not working.
I tried to update CocoaPods with the commands:
pod install
pod setup
And still nothing was working so I decided to run the command
ionic cordova prepare ios
to see if I could go on anyway but got this error:
[error] Error: Cannot find module '#ionic/angular-toolkit/package.json'
Require stack:
- /usr/local/lib/node_modules/#angular/cli/node_modules/#angular-devkit/architect/node/node-modules-architect-host.js
- /usr/local/lib/node_modules/#angular/cli/node_modules/#angular-devkit/architect/node/index.js
- /usr/local/lib/node_modules/#angular/cli/models/architect-command.js
- /usr/local/lib/node_modules/#angular/cli/commands/run-impl.js
- /usr/local/lib/node_modules/#angular/cli/node_modules/#angular-devkit/schematics/tools/export-ref.js
- /usr/local/lib/node_modules/#angular/cli/node_modules/#angular-devkit/schematics/tools/index.js
- /usr/local/lib/node_modules/#angular/cli/utilities/json-schema.js
- /usr/local/lib/node_modules/#angular/cli/models/command-runner.js
- /usr/local/lib/node_modules/#angular/cli/lib/cli/index.js
- /usr/local/lib/node_modules/#angular/cli/lib/init.js
- /usr/local/lib/node_modules/#angular/cli/bin/ng
And yes, if you are wondering every time I updated or ran a command I did also deleted the platforms, plugins, node_modules and www folder, but anything is happening.

Coincidentally today I had to migrate a Cordova project to iOS 6.2 due to Apple's usual annoyance in updating hours before and leaving everything obsolete (the best in backward compatibility, it should be noted).
I'll share with you the short commands that work with cordova without digging too much:
0-) sudo npm install cordova-ios#latest
1-) sudo ionic cordova platform remove ios
2-) sudo ionic cordova platform add ios#latest // don't specify version, the last one already assumes this
3-) sudo chmod -R 777 platforms/ios // usually, I must enable read and write permissions, things on my computer but with that I ensure full permission.
4-) sudo ionic cordova build ios
5-) You open XCode again in the generated project and voila, you can compile it.
If step #1 fails you, run it 2 times (for some reason I always have to run it 2 times to get it done).
Best regards.

Well, at the end, after 15h of work and a lot of searching, it was all fixed by downgrading my Node version from 16.9.1 to 14.17.5.
I didn't know that this new Node version is not supported by Angular jet, but I found out, and you can too by just running the command
ng -v
which says at the end
Warning: The current version of Node (16.9.1) is not supported by Angular.
to downgrade your Node version you can follow the instructions on this post:
How to downgrade Node version
You can also see all the Node versions available here:
https://nodejs.org/es/about/releases/
Since Angular is a step behind of Node I suggest to download an Active version and not a current one.

Related

ionic 3 - cannot install onesignal plugin for ios using latest xcode

I cannot create add ios platform for onesignal plugin. With android build its fine.
I did this:
$ ionic cordova platform add ios
the following errors failed.
apple-ios version check failed ("/Users/megasap/Documents/project/railerdotcom/railercom_parent/platforms/ios/cordova/apple_ios_version"), continuing anyways.
Failed to install 'onesignal-cordova-plugin': undefined
Failed to restore plugin "onesignal-cordova-plugin" from config.xml. You might need to try adding it again. Error: /Users/megasap/.rbenv/shims/pod: line 21: /usr/local/Cellar/rbenv/1.0.0/libexec/rbenv: No such file or directory
--save flag or autosave detected
Saving ios#~4.5.4 into config.xml file ...
[ERROR] Exception:
Full execution and error here:
https://gist.github.com/axilaris/a926c54eb515bef5eb2f7019e36aa40f
This used to work, i just update to latest xcode 9.2 to compile other things. Is it something wrong with using the latest xcode ?
install and update cocoapods fix the problem
sudo gem install cocoapods
pod setup
You may need to rm and add ios platform to make it work
The actual issue is here:
Error: /Users/megasap/.rbenv/shims/pod: line 21: /usr/local/Cellar/rbenv/1.0.0/libexec/rbenv: No such file or directory
Just update/install cocoapods to latest version as your xcode is also updated.
sudo gem install cocoapods

Unable to resolve module react/lib/ReactUpdates

I'm cloning a proyect:
The steps are:
npm i
react-native link
When i run it react-native run-ios i have a problem with RCTWebSocket library. This problem is easy to resolve if you search a little just need remove 2 compiler flags, in Custom Compiler Flags.
Later just i run again react-native run-ios and works fine, but when the app is open, show the next error:
Searching i found that is related to upgrade, source here
but i'm using that command and not works.
When this command is executed, it starts showing me some overrides to some files and at the end of this process, the problem persists.
My react info:
react-native-cli: 1.0.0
react-native: 0.32.1
I'm running in Xcode 8 and ios 10.0
PDTA: When I start a new project works perfect
UPDATES:
When clone on another mac works, I am ensuring to have the same versions of both xcode and node.
Could it be some mac configuration problem?
The only difference between the 2 macs is the cli version:
`react-native-cli: 1.1.0` --> my mac
`react-native-cli: 1.2.0` --> the other mac
Will this be enough to cause all this problem?
With React 0.32~0.37: The problem is most likely that you are using React 15.4.x instead of 15.3.x. One of the changes between 15.3 and 15.4 was that many of the modules under react/lib were moved to react-dom/lib, which is why the packager can't find react/lib/ReactUpdates.
Ensure that your package.json file locks React to 15.3.x:
"dependencies": {
"react": "~15.3.2"
}
Then delete your node_modules folder and run yarn or npm install again. Verify that you installed React 15.3.x:
$ npm ls react
app#1.0.0 /code/app
└── react#15.3.2
Last, restart the React Native server and load your bundle again.
This has been fixed!
Update your dependencies and use react-native ^0.38.0 or newer.
Run react-native upgrade after all react-native version upgrades.

Missing dependency target "CordovaLib (from CordovaLib.xcodeproj)"

Missing dependency target "CordovaLib (from CordovaLib.xcodeproj)" When running ios with Xcode
A different solution
Before reading this MAKE SURE you are opening YourProject.xcworkspace and NOT YourProject.xcodeproj
I couldn't get this to work using #manzapanza 's solution
The Problem
CordovaLib.xcodeproj is missing from your xcode project
Solution (for mac users)
Download a copy of CordovaLib.xcodeproj and drag it into your xcode project.
$ sudo npm install -g cordova (installs a "global" copy of cordova to your computer, you might be able to skip this step)
$ find ~/ -name 'CordovaLib.xcodeproj' (mine was at /Users/Jackson//.cordova/lib/npm_cache/cordova-ios/4.3.1/package/tests/spec/unit/fixtures/ios-config-xml/CordovaLib/CordovaLib.xcodeproj)
Open folder the folder path found above $ open [path] (open /Users/Jackson//.cordova/lib/npm_cache/cordova-ios/4.3.1/package/tests/spec/unit/fixtures/ios-config-xml/CordovaLib/)
Drag CordovaLib.xcodeproj to your xcode project
This is what your file navigator should look like at this point:
Delete red (missing) file
Select your app in the navigator (very top of file tree). Go to Targets > [Your Project Name] > Build Phases > Link Binary With Libraries > "+"
type in / look for libCordova.a and add it
Compile project
For some reasons the xcode project was corrupted. Generally, to solve this kind of problems, you can try removing and re-adding the platform ios:
ionic platform rm ios
ionic platform add ios
ionic build ios
Attention: Any changes that you applied directly from xcode will be lost and you will need to apply manually after you will have run these commands. Do a backup of platforms/ios before.
Same solution for Apache Cordova project.
Remove platform and re-add:
cordova platform remove ios
cordova platform add ios
cordova prepare ios
cordova run ios
Successful!
I downgraded my Cordova version to 6.2.0 and it started working.
I had multiple issues with my app that I was able to resolve when I was missing CordovaLib from my XCode project.
First I ran
cordova requirements ios
and found that I was missing ios-deploy and CocoaPods. These were not requirements for Cordova 6.2.0 but are as of Cordova 6.4.0. I did not try 6.3.0 so I do not know the status for that version.
In addition, I had some icon files in my config.xml for iOS that did not exist because I was using a 3rd party cordova-icon maker to generate them and the fact that they were missing was apparently breaking the add platform command mid-process. Again 6.2.0 did not have this issue with the same config file, but 6.4.0 is definitely strict about not having any errors. My guess is that they were either continuing past the errors in prior version of Cordova or they re-arranged the way things are built so that the CordovaLib is now last and if there are any errors before that step, you will be missing the folder and its contents.

Error building ios with cordova

I have a problem when I build the ios platform with cordova. I have all the certificates for the app and device, but when I try to run in my ios device, doing ionic run ios, the console return this error:
Error: Source path does not exist: resources/ios/icon/icon-40#3x.png
This path is written in config.xml file.
I tried to run it in xCode but the problem there was:
Cordova/CDVViewController.h not found
I read a lot of possible solutions but any works for me.
My xCode version is 7.3.1, the cordova version is 6.3.0 and the cordova ios version is 4.2.0.
If you are missing the icon you can run the command
ionic resources --icon
This will generate all the icons with the pixels needed to run on any device.
To simulate on the device you first need to
ionic build ios
and then
ionic simulate ios
It is also a good practice to have xcode up to date.
If you are still getting the error you can paste this line
"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"
on Build Settings > Header Search Paths.
Do not remove the similar line, just add it at the end.
Update - 03-08-2017
> ionic cordova resources
Old CLI command:
I had the same error, and after re-running ionic resources it went away.
The problem was that I had Windows-style slashes (backslashes) in the path of the icon, i.e. the error I had was this:
Error: Source path does not exist: resources\ios\icon\icon-40.png
So, converting backslashes into slashes resolved it for me.
Update:
And regarding your second error, it helped me to reset the state:
ionic state reset
Make sure you have ios listed under cordovaPlatforms in your package.json before running this command. Then ionic automatically re-downloads your plugins afresh and is ready to build.
Hope that helps. Take care!
I've had same error only with other image:
Source path does not exist: resources/ios/icon/icon-40#2x.png
This happened after upgrading to Cordova 6.3.0 and I've solved it downgrading Cordova.
Quickfix for now:
npm uninstall -g cordova
npm install -g cordova#6.2.0
Just use:
Remove platform
cordova platform remove ios
And add ios platform with old one
cordova platform add ios#4.0.0 --save
It worked for me..
#4.0.0 will select previous version automatically
I have try some times, finally success.
use ionic resources --icon , maybe met the new problem
"Unable to generate images due to an error Failed to upload source image: Error: read ECONNRESET"
don't worry , try it later
use ionic platform remove ios
when execute successfully
use ionic platform add ios
DON'T USEionic state reset
Try to replace the "\" with "/" (backslash and slash) in the config.xml.
If you create the project on a Windows system and move to macOS for iOS compilation, it still has the Windows URI format.
I've found this issue in several occasions and some of the provided answers worked quite well till today, when no one worked.
My environment: MacOS high Sierra 10.13, ionic cli 3.18.0 and cordova 7.1.0.
My problem was that if I run ionic cordova prepare it fails saying that I need to add a platform and if a I add a platform with ionic cordova platform add ios it fails with the error specified in the answer:
Error: Source path does not exist: resources/ios/icon/icon-40#3x.png
What solved my issue was manually creating the platforms folder: mkdir platforms. After creating this folder, adding a platform worked as usual.
I hope it could help someone out there.
I got similar issue with cordova-ios#~4.5.1
ionic cordova build ios
> cordova build ios
Error: Source path does not exist: resources\android\icon\drawable-xhdpi-icon.png
[ERROR] An error occurred while running cordova build ios (exit code 1).
ionic cordova platform add ios
> cordova platform add ios --save
Using cordova-fetch for cordova-ios#~4.5.1
Adding ios project...
Creating Cordova project for the iOS platform:
Path: platforms/ios
Package: -
Name: -
iOS project created with cordova-ios#4.5.4
Error: Source path does not exist: resources\android\icon\drawable-xhdpi-icon.png
I remove ios platform
ionic cordova platform remove ios
And add ios platform with old one
ionic cordova platform add ios#4.0.0
This worked for me, waiting for an Cordova update :)
it's a cat and mouse problem,
the icon resources aren't built because the platform isn't added and
platform can't be added because the icon resource isn't there
ionic/cordova is pretty unstable and a nightmare to work with in CI pipeline.
this kept crashing out CI pipeline. just keep removing and adding the android/ios platform and build the resources using ionic cordova resources --force
Running these commands solved it for me:
ionic platform rm ios
ionic resources
ionic platform add ios
I had to manually copy the files from any another project repo
such as https://github.com/sphilee/eTAS_GPS/tree/master/resources/ios
It says that the resources directory only contained empty folders. Downloading this repo (https://github.com/ionic-team/ionic2-app-base/tree/master/resources)
and replace the resources directory
Run again the "ionic cordova resources".
You just need to update the cordova to fix this error: to update the cordova run below command
$sudo npm install -g cordova#6.2.0
once you update the cordova type below command to remove the platform
$sudo ionic cordova platform rm ios --save
And then add platform again using below command
$sudo ionic cordova platform add ios --save
I hope this will help you.
I ran into the same problem:
Error: Source path does not exist: resources/ios/icon/icon-40#3x.png
Looks like the relative path is in reference to the config.xml. If the resources folder exists inside of 'www', then you may need to update the relative path.
I was able to resolve this by updating the relative path to "www/resources/...".
It's likely that your resources haven't been run.
Run:
npm i -g cordova-ionic platform rm ios
ionic platform rm ios // You want to do this just so when you recreate you have necessary resouces
ionic cordova resources
ionic cordova build --release <ios/android>
There should be more answers with this solution, since ionic is a project based on npm and this command will install the necessary libraries.
I used the no brain way, but it works. I added the ressources temporarily with the name they ask for.
Like I copy and past an image icon-20 copy.png then rename it into my needed ressources like icon-small#2x.png
use
ionic cordova resources --icon
if permission required use sudo
sudo ionic cordova resources --icon
it will Generated 28 resources for iOS and Generated 6 resources for Android.
make sure you add:
xmlns:cdv="http://cordova.apache.org/ns/1.0
to the widget section(on the very top) of your config.xml
This will add all necessary Cordova components.

Nothing at all happens when running cordova prepare ios

I am in a ionic app at its root folder. I have a config.xml file and am having trouble getting it to build. I had no issues a few weeks ago, but I've screwed something up on my system I think. I have reinstalled both cordova and ionic and re-pulled the repo.
However, when I run ionic prepare ios --verbose literally nothing happens.
This is the only output:
ConfigXml.setConfigXml /Users/ben/code/project/app resetContent=true, errorWhenNotFound=false
ANY guidance as to what I should try next is very much appreciated.
cordova version is 5.2.0
npm version is 3.3.12
node version is v5.4.1
ionic version is 1.7.14
cordova platform ls outputs:
Installed platforms: ios 3.9.1
Available platforms: amazon-fireos, android, blackberry10, browser, firefoxos, webos
As mentioned in this thread on Github, there is an issue in Node v5 that makes ionic prepare fail.
In order to solve it you can try a couple of things.
One would be to update your cordova installation to version 5.4 or later, since it includes a fix for the Node v5 problem. You can do that using following code:
npm install -g cordova
The other suggested solution in the link is to reset the state of your ionic installation. Be aware that issuing this command will do following (as specified in Ionic-cli github page):
The ionic state reset method will first remove your platforms and
plugins folders. Then it will look at your package.json file to
re-install the platforms and plugins as specified there.
This command can be helpful for you to reinstall your plugins and
platforms to get a fresh start.
If you are willing to try, you can do it with following command:
ionic state reset
Personally I would try first to upgrade Cordova.
Try:
sudo ionic prepare ios --verbose
Whenever you install new plugins or platforms you must also change the read/write permissions on root folder for your project.

Resources