johnno1962 / injectionforxcode

Runtime Code Injection for Objective-C & Swift
MIT License
6.55k stars 565 forks source link

frame work not found SwiftyJSON for architecture x86_64 #63

Open kazuki229 opened 8 years ago

kazuki229 commented 8 years ago

Hi,

I looked through some of the other issues that had similar problems such as #52 but I haven't been able to find an answer.

I have a project that uses SwiftyJSON (along with a few others installed through CocoaPods). I installed Injection through Alcatraz, and when I tried following the instructions (building the Injection project) I receive the error: framework not found SwifyJSON for architecture x86_64.

In order to fix this , I tried the following, but I received same error.

2015-10-23 14 27 00 2015-10-23 14 26 32

Do you have any ideas how to fix this?

johnno1962 commented 8 years ago

Can you paste in your Podfile please.

kazuki229 commented 8 years ago

It is as follows.

2015-10-23 18 30 10

johnno1962 commented 8 years ago

Hi, I’m unable to replicate this this end. You probably shouldn’t be adding pods to the injection project, it should find them in your app executable. To look at this further can you send the link command of your main app and the link command listed in the injection console just before the error to support at injectionforxcode.com.

kazuki229 commented 8 years ago

It is output in the injection console just before error as follows.

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk -L/Users/***MYNAME***/Documents/iPhoneApp/OstomateNaviSwift/iOSInjectionProject/build/Debug-iphonesimulator -F/Users/***MYNAME***/Documents/iPhoneApp/OstomateNaviSwift/iOSInjectionProject/build/Debug-iphonesimulator -F/Users/***MYNAME***/Documents/iPhoneApp/OstomateNaviSwift/iOSInjectionProject -filelist /Users/***MYNAME***/Documents/iPhoneApp/OstomateNaviSwift/iOSInjectionProject/build/InjectionBundle.build/Debug-iphonesimulator/InjectionBundle.build/Objects-normal/x86_64/InjectionBundle.LinkFileList -mios-simulator-version-min=8.3 -Xlinker -objc_abi_version -Xlinker 2 x86_64/injecting_class.o -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -F/Users/***MYNAME***/Library/Developer/Xcode/DerivedData/OstomateNaviSwift-ewzvxxetvqseisgxzvzbfifivfbj/Logs/Build/../../Build//Products/Debug-iphonesimulator -undefined dynamic_lookup -fobjc-arc -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -Xlinker -add_ast_path -Xlinker /Users/***MYNAME***/Documents/iPhoneApp/OstomateNaviSwift/iOSInjectionProject/build/InjectionBundle.build/Debug-iphonesimulator/InjectionBundle.build/Objects-normal/x86_64/InjectionBundle.swiftmodule -framework GoogleMaps -framework UIKit -framework QuartzCore -framework OpenGLES -framework Foundation -framework CoreGraphics -Xlinker -dependency_info -Xlinker /Users/***MYNAME***/Documents/iPhoneApp/OstomateNaviSwift/iOSInjectionProject/build/InjectionBundle.build/Debug-iphonesimulator/InjectionBundle.build/Objects-normal/x86_64/InjectionBundle_dependency_info.dat -o /Users/***MYNAME***/Documents/iPhoneApp/OstomateNaviSwift/iOSInjectionProject/build/Debug-iphonesimulator/InjectionBundle.bundle/InjectionBundle
ld: warning: directory not found for option '-F/Users/***MYNAME***/Library/Developer/Xcode/DerivedData/OstomateNaviSwift-ewzvxxetvqseisgxzvzbfifivfbj/Logs/Build/../../Build//Products/Debug-iphonesimulator'
ld: framework not found SwiftyJSON for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

real    0m0.077s
user 0m0.038s
sys  0m0.050s

*** Build Failed with status: 1. You may need to open and edit the bundle project to resolve issues with either header include paths or Frameworks the bundle links against. ***

 
at /Users/***MYNAME***/Library/Application Support/Developer/Shared/Xcode/Plug-ins/InjectionPlugin.xcplugin/Contents/Resources/common.pm line 55.
    main::error('Build Failed with status: 1. You may need to open and edit th...') called at /Users/***MYNAME***

/Library/Application Support/Developer/Shared/Xcode/Plug-ins/InjectionPlugin.xcplugin/Contents/Resources/injectSource.pl line 445
 * Bundle build failed *

I can't understand what "link command" means. So I paste my project information for your refference.

2015-10-24 14 25 24 2015-10-24 14 26 00 2015-10-24 14 26 10

johnno1962 commented 8 years ago

HI, what you have pastes contains the link command I need for the bundle thanks. What I need now is the link command for your app. You’lll find it in the build logs (right hand tab on the left hand panel where if says “”Link …”

kazuki229 commented 8 years ago

Hi, I think below is "link command", will this do?

Ld /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/OstomateNaviSwift.app/OstomateNaviSwift normal x86_64 cd /Users/MY NAME/Documents/iPhoneApp/OstomateNaviSwift export IPHONEOS_DEPLOYMENT_TARGET=8.0 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk -L/Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator -F/Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator -F/Users/MY NAME/Documents/iPhoneApp/OstomateNaviSwift/Pods/GoogleMaps/Frameworks -F/Users/MY NAME/Documents/iPhoneApp/OstomateNaviSwift -filelist /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Intermediates/OstomateNaviSwift.build/Debug-iphonesimulator/OstomateNaviSwift.build/Objects-normal/x86_64/OstomateNaviSwift.LinkFileList -Xlinker -rpath -Xlinker @loader_path/Frameworks -mios-simulator-version-min=8.0 -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lAXRatingView -lFontAwesomeKit -lQBImagePickerController -lSDWebImage -lc++ -licucore -lz -framework AVFoundation -framework Accelerate -framework CoreBluetooth -framework CoreData -framework CoreGraphics -framework CoreLocation -framework CoreText -framework GLKit -framework GoogleMaps -framework ImageIO -framework OpenGLES -framework Photos -framework QuartzCore -framework Security -framework SystemConfiguration -framework UIKit -fobjc-arc -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -Xlinker -add_ast_path -Xlinker /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Intermediates/OstomateNaviSwift.build/Debug-iphonesimulator/OstomateNaviSwift.build/Objects-normal/x86_64/OstomateNaviSwift.swiftmodule -framework CFNetwork -framework Accelerate -framework CoreBluetooth /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/SwiftyJSON.framework/SwiftyJSON /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/Alamofire.framework/Alamofire -lPods -Xlinker -dependency_info -Xlinker /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Intermediates/OstomateNaviSwift.build/Debug-iphonesimulator/OstomateNaviSwift.build/Objects-normal/x86_64/OstomateNaviSwift_dependency_info.dat -o /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/OstomateNaviSwift.app/OstomateNaviSwift

johnno1962 commented 8 years ago

Hi, You seem to have a non-default build preference set up in Xcode as the build directory is not what I expect. This is the reason you get the warning "ld: warning: directory not found for option -F/Users/_MYNAME_/Library/Developer/Xcode/DerivedData/OstomateNaviSwift-ewzvxxetvqseisgxzvzbfifivfbj/Logs/Build/../../Build//Products/Debug-iphonesimulator“ which is important for finding the frameworks. Can you try “Locations”/DerivedData/Advanced/Unique” in your Xcode preferences and it should work.

Out of curiosity at the top of the “Injection Console” it should print the “buildRoot:” and “logDir:” can you tell me what they are?

If you want to keep your Xcode preferences how all you need to do is add /Users/MY NAME/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/OstomateNaviSwift.app/Frameworks to your framework search path build settings in the bundle project.

cdoky commented 8 years ago

@johnno1962 hi, i have the same question, i use pod too

//Injection Console * BUILD FAILED 


The following build commands failed:
 Ld build/Debug-iphonesimulator/InjectionBundle.bundle/InjectionBundle normal x86_64
(1 failure)

\ Build Failed with status: 65. You may need to open and edit the bundle project to resolve issues with either header include paths or Frameworks the bundle links against. ***


 at /Users/phil/Library/Application Support/Developer/Shared/Xcode/Plug-ins/InjectionPlugin.xcplugin/Contents/Resources/common.pm line 57.
 main::error('Build Failed with status: 65. You may need to open and edit t...') called at /Users/phil/Library/Application Support/Developer/Shared/Xcode/Plug-ins/InjectionPlugin.xcplugin/Contents/Resources/injectSource.pl line 460
* Bundle build failed *



// I build the InjectionBundle project: ld: framework not found IQKeyboardManagerSwift for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

cdoky commented 8 years ago

ok,I solve this question. just build the pods-Project~~~

image

johnno1962 commented 8 years ago

I may have found the answer to this with another user. It can crop up if you use a scheme name other than “Debug” for running your project.