bignerdranch / Freddy

A reusable framework for parsing JSON in Swift.
MIT License
1.09k stars 120 forks source link

dyld library not loaded..image not found #233

Closed manojmahapatra closed 7 years ago

manojmahapatra commented 7 years ago

Hi there,

I'm working on an enterprise dynamic framework where we're using Freddy as one of the dependencies for JSON serialization/de-serialization. There is strange issue happening currently when I'm trying to use the enterprise framework via Carthage's (it's a private repo) Cartfile. After running carthage update I don't see Freddy in the Build/iOS folder (in a sample project) whereas there are other dependent frameworks (e.g. Alamofire, CocoaLumberjack etc) are working/building as expected.

What I did - In my enterprise framework, Freddy is added via Carthage and Checkouts folder is updated via git submodule. To confirm all the shared schemes/frameworks are working seamlessly, I run this command, carthage build --no-skip-current, which shows Freddy is built for iOS and for other targets(tvOS, watchOS etc.) as well and I can verify in Build/iOS folder in the enterprise project.

Post observation - While trying to add/use the enterprise framework via Carthage, Freddy does not show up while others frameworks working fine. I've spent quite a time on this but unfortunately could not figure it out what's going on.

Any help is appreciated.

davidahouse commented 7 years ago

On the surface I don't believe this is a Freddy problem as we are doing exactly this in some of our projects. One difference I see is that we aren't managing the Checkouts folder using a git submodule. I would say that the enterprise framework should not be keeping any kind of Checkouts folder reference. This is due to how Carthage works. In your app, when you pull in the enterprise framework via Carthage, it will automatically find the dependencies of the Enterprise framework and pull them into the APPS Checkouts folder and build them. So to the app it has all the dependencies in Checkouts and should proceed to build them. For example I would expect to see your enterprise framework, Freddy, Alamofire, CocoaLumberjack all in the same Checkouts folder under the apps Carthage folder.

--verbose might help on your Carthage command. Try removing the Checkouts git submodule and let Carthage do a full update, pulling in all the dependencies. You should see everything in Checkouts and your Build folder should have them all built.

manojmahapatra commented 7 years ago

@davidahouse Thank you David for your response. To my surprise it started working y'day w/o doing any change. Also I still have the Checkouts reference via git submodule, initially I thought of just ignoring, however I did otherwise. Do you see any issues or is it just not a good practice?

Thanks again!

manojmahapatra commented 7 years ago

May be I'll just close the issue. 😄