I've created a React-Native application as of 0.70.6, went through the grief of cocoapods and everything that comes with development on Apple's silicon chips (M2) and got it working and have done quite a bit of work on the project, and then (after creating a GitHub repo) handed it off to a coworker to do some design work (who is on an M1) ...had many issues on their machine as well, but eventually got it working. Now, React-Native 0.71.0 has been released and I ran through all of the steps to upgrade it and got it working on my M2 machine, no issues at all, but after pushing and getting it on their machine, I have not been able to find a solution to the pod install failing due to the hermes-engine not being able to load, a couple of the errors that pop up are,
[!] Failed to load 'hermes-engine' podspec:
[!] Invalid `hermes-engine.podspec` file: undefined method 'exists?' for FileClass.
I have been searching all day for what this means (I am fairly new to React-Native ...and mobile development in general) and I've gathered that 'exists?' has been deprecated as of certain versions of ruby (I'm on 3.2.0) although, it runs fine on my machine, so I am confused as to what could be missing. I've been using chruby to install ruby, and the only difference there is that I have ruby versions 2.7.5 and 2.7.7 on my machine ... but of course, there are flags that I had to set in order to actually be able to install them on my machine and I don't believe they affect my project since bundle install and pod install works using 3.2.0.
To list out what all I have installed on these machines:
bundler -> 2.4.1
cocoapods -> 1.11.3
ruby -> 3.2.0
node -> 18.13.0
xcode -> 14.2 (with command line tools)
Another bit of error reporting, in case it is useful:
Command `pod install` failed.
└─ Cause: Failed to load 'hermes-engine' podspec:
[!] Invalid `hermes-engine.podspec` file: undefined method `exists?' for File:Class.
# from /Users/<user>/projects/<app_dir>/node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec:46
# -------------------------------------------
# source[:http] = "file://#{destination_path}"
> elsif File.exists?(hermestag_file) && isInCI
# Pod::UI.puts '[Hermes] Detected that you are on a React Native release branch, building Hermes from source but fetched from tag...'.yellow if Object.const_defined?("Pod::UI")
# -------------------------------------------
If there is any information that I need to include for clarity, I will update this post as need-be.
I've tried removing the Pods file, and then pod install... same error
Removed Podfile.lock, cache clean AND removing Pods... same error
Removing node_modules/ npm cache clean --force && npm install
then doing npx pod-install to hopefully let node handle things... same error
Ran pod deintegrate and pod install... was scary, broke things, so reverted, back to square 1
There are other things that I've tried earlier today that I cannot remember, and they've gone home, so I can't access all the commands I ran, but these were the freshest, and until I get a more clear view, I'll be trying to get those flags that need to be set to install the older versions of ruby to see if that does anything
One last mention though, we also recently got an M1 Mac Mini, and I ran through all of the steps to get the project working...ended up in the same rut as the other M1, but again, will be trying those LD_FLAGS or whatever it may be and update this thread if that is what fixes the issue
Looking at older issues related to these, people found work-arounds using -x86_64 commands, and I've managed to get this far without any since maintainers have released newer versions with arm64 support, but if I need it anywhere, so be it, I'll take what I can get at this point
Without needing to install other versions of ruby or anything, I got it install the hermes-engine pod by doing something I find dirty...which is just go into that file it mentions and remove the 's' in exists? so it just says exist? and then I also downgraded cocoapods from 1.11.3 to 1.11.2 and seeing how that .podspec file is laid out, it conditionally loads the engine by first seeing if is downloaded on the machine, and then once it sees that it is not, that's where it eventually hits this problem code with the exists conditional...so it downloaded everything and worked fine and I was able to build and run my app on the mac mini...but when trying the same steps on the other m1 machine, I got a very useful error -- Oh no, an error occured ...perfect, and now I am questioning if these changes I have made will effect the M2 pod commands
If there is no better answer provided in the next few days, I'll assume this is the best possible fix until react-native upgrades their ruby version to 3.2.0 which after some more digging...is the exact release that this exists? file method was removed
But would still love feedback for anyone else using an M1 MacBook who has had these issues on the stable release of React-Native 0.71.0
Related
recently I bought new macbook 16(intel, catalina)
I have started new project, I cannot install pods in my xcode project.
I successfully installed cocoapods and pod init.
but I cannot run command pod install.
This is what I get when I type command
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0
Please help if you have similar experience or good guess.
Thank you.
I had the same message about no 'Podfile'. I've solved this by moving my project to different directory with simple path. The previous one was too complicated - with backspaces, foreign language characters, with special characters.I think, the installer didn't like something about that.
I know similar questions has been asked before but nothing seems to work for me.
Im using CocoaPods and installing framework "X". This can be anything that can be edited directly in the Storyboard. Two examples are "MBCircularProgressBar" and "UICircularProgressRing".
Im adding it to a UIView and getting this error instantly. It messes up my storbyboard but the app is running fine.
I'm using the newest version of Xcode, newest MAC OS.
What have i tried?
Deleted everything in DerivedData for Xcode
Clean, build, refresh views ++
Removing the problem pods and reinstalling/trying a different one
Disabled "Automatic code signing" in "General" and set it manually to my company
Error at the moment shows :
Main.storyboard: error: IB Designables: Failed to render and update auto layout status for Dashboard_UsageVC (mqT-RZ-029): dlopen(MBCircularProgressBar.framework, 1): no suitable image found. Did find:
MBCircularProgressBar.framework: required code signature missing for 'MBCircularProgressBar.framework'
UPDATE 23.04.2018 - Still not solved
Still having this problem. I have gone to the extreme and fully reset my MAC. Reinstalled everything. Same problem. Even when downgrading CocoaPods to 1.4.0 and Xcode to previous version. To avoid pulling all my hair out Im now finishing the rest of the app where nothing special is needed and hoping for a magic solution for this closer to app release.
It has been fixed with Cocoapods 1.5.2 (and probably 1.5.1 but I have upgrade directly from 1.5.0 to 1.5.2).
UPDATE
I may have spoken too fast.
The error re-appears after a few builds.
However, this workaround seems to work (applies to Cocoapods 1.5.x) until the bug fix is merged:
clean your project
close Xcode and delete DerivedData
open Podfile in your project , and add this:
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete('CODE_SIGNING_ALLOWED')
config.build_settings.delete('CODE_SIGNING_REQUIRED')
end
end
then in command line do a:
pod update or pod install
Sources:
https://github.com/CocoaPods/CocoaPods/issues/7606#issuecomment-381279098
https://github.com/evgenyneu/Cosmos/issues/105
https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
Same bug for me.
For me, it cames after installing the last version cocoapods 1.5.0. So I downgraded it to 1.4.0 and the bug disappear.
sudo gem uninstall cocoapods
sudo gem install cocoapods -v 1.4.0
Hoped it will helped you too.
This works fine for me.When I downgrade cocoapods to 1.4.0,the problem disapper.
I am using DownloadButton.
My current project using cocoa pods of version 0.39.1, and my current pod version in my system is 1.1.1, so when i try to install the cocoa pods in my project path, it gave me warning saying
[!] Invalid Podfile file: [!] Unsupported options {:exclusive=>true} for target Xxx Xxx XxxxTests..
so i have uninstalled pod v1.1.1 and installed 0.39.1. Now when i run install command i get another warning
[!] The master repo requires CocoaPods 1.0.0 - (currently using 0.39.0) Update Cocoapods, or checkout the appropriate tag in the repo.
i'm aware that Xcode 8: Only works with CocoaPods 1.1.0
Should i update my project pod file to latest pod version or should i work with lower version of xcode so it supports v0.39.0
I recently completed a project where I had to migrate a dozen or so (private) Cocoapods from 0.39 up to 1.1.X.
It's actually not that hard, once you get the hang of it (and, at least in my case, the Podfile I put together for 1.1.X continued to work the occasional times I had to drop back down to Pods 0.39)
As you've discovered, you do need to remove ":exclusive => true" and "link_with" (which gets replaced with abstract_target). More information can be found in this Pods migration guide. Here is another "mini" example.
And other people have asked related questions here before. My recommendation is to go up to Xcode 8, otherwise you'll won't be able to do pod update and keep up to date with the latest changes in the Pods you're trying to leverage in your code.
I'm seriously stuck with CocoaPods. Please help!
Can someone please tell me where i'm going wrong? I'm doing an online Objective-C course. I've been stuck on CocoaPods for far too long. I completed the CocoaPods course and seem to have installed everything correctly.
I have followed these steps in line with this tutorial:
1) I created a podfile within the PhotoBombers Xcode project.
2) Within Xcode I clicked on the podfile, then entered: pod 'SimpleAuth/Instagram'
3) I then searched for the Terminal using Spotlight. Within the terminal I then entered 'pod' and pressed enter (as shown in the tutorial), however the following code appeared and looked nothing like the code in the tutorial:
Usage:
$ pod COMMAND
CocoaPods, the Cocoa library package manager.
Commands:
cache Manipulate the CocoaPods cache
init Generate a Podfile for the current directory.
install Install project dependencies to Podfile.lock versions
ipc Inter-process communication
lib Develop pods
list List pods
outdated Show outdated project dependencies
plugins Show available CocoaPods plugins
repo Manage spec-repositories
search Search for pods.
setup Setup the CocoaPods environment
spec Manage pod specs
trunk Interact with the CocoaPods API (e.g. publishing new specs)
try Try a Pod!
update Update outdated project dependencies and create new
Podfile.lock
Options:
--silent Show nothing
--version Show the version of the tool
--verbose Show more debugging information
--no-ansi Show output without ANSI codes
--help Show help banner of specified command
I am trying to install a pod, which I have done several 100 times before, never got this error before. Started getting this error, not sure what's wrong with it.
Here is my Podfile
platform :ios, '7.0'
pod 'MBProgressHUD'
Here is the error:
Setting up CocoaPods master repo
Setup completed (read-only access)
Analyzing dependencies
Downloading dependencies
Installing MBProgressHUD (0.8)
[!] Pod::Executable fetch origin tags/0.8 2>&1
fatal: Couldn't find remote ref tags/0.8
Unexpected end of command stream
I tried uninstalling cocoapods and reinstalled them, still the same
I tried removing the cache and tried to re install, still the same issue
i tried this as well, still same error.
It appears that your remote repository does not have the tag 0.8.
git push origin 0.8
Also, if you think the tag has already been pushed, make sure your podfile is looking at the correct remote. A fork may not have the correct tag.