Calabash-ios link error: “_kSecAttrSynchronizableA

2019-09-06 18:59发布

问题:

I got a link error when trying to run a ..-cal target of calabash-ios project.

The error is:

     `Ld /Users/balaiyan/Library/Developer/Xcode/DerivedData/delete-fdnlnapawhvvmpgxjbbzoopkiefe/Build/Products/Debug-iphonesimulator/delete-cal.app/delete-cal normal i386
        cd /Users/balaiyan/dev/automation/apps/delete
        setenv IPHONEOS_DEPLOYMENT_TARGET 6.1
        setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk -L/Users/balaiyan/Library/Developer/Xcode/DerivedData/delete-fdnlnapawhvvmpgxjbbzoopkiefe/Build/Products/Debug-iphonesimulator -F/Users/balaiyan/Library/Developer/Xcode/DerivedData/delete-fdnlnapawhvvmpgxjbbzoopkiefe/Build/Products/Debug-iphonesimulator -F/Users/balaiyan/dev/automation/apps/delete -filelist /Users/balaiyan/Library/Developer/Xcode/DerivedData/delete-fdnlnapawhvvmpgxjbbzoopkiefe/Build/Intermediates/delete.build/Debug-iphonesimulator/delete-cal.build/Objects-normal/i386/delete-cal.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -force_load /Users/balaiyan/dev/automation/apps/delete/calabash.framework/calabash -lstdc++ -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=6.1 -framework Security -framework CFNetwork -framework UIKit -framework Foundation -framework CoreGraphics -framework calabash -o /Users/balaiyan/Library/Developer/Xcode/DerivedData/delete-fdnlnapawhvvmpgxjbbzoopkiefe/Build/Products/Debug-iphonesimulator/delete-cal.app/delete-cal

    Undefined symbols for architecture i386:
      "_kSecAttrSynchronizableAny", referenced from:
          -[LPSSKeychainQuery query] in calabash(LPSSKeychainQuery.o)
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    `

Got the above error after solving the one in picture below

Calabash link error after following steps at https://github.com/calabash/calabash-ios


I am doing first time calabash setup for iOS at my Home iMac, that runs on OS X Lion,
XCode version 4.6.2,
updated ruby to ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin12.5.0]

While installing ruby found this on terminal

   ruby-2.0.0-p451 - #generating default wrappers........
   Updating certificates in '/etc/openssl/cert.pem'.
   mkdir: /etc/openssl: Permission denied
   apples-iMac:~ balaiyan$ rvm osx-ssl-certs status all
   Certificates for /etc/openssl/cert.pem: Up to date.

not sure if this is creating the problem.

I had previously done these steps on a office Macbook pro running Mavericks, and didnt find any problem. Does it mean the latest calabash-ios has any backwards compatibility issue, or is it something to do with my keychain. Need some help.

回答1:

The current version of calabash, 0.9.169, contains iOS 7 symbols. One of which is kSecAttrSynchronizableAny.

To use this version, the base SDK must be at least 7.0. The minimum deployment target can still be as low as 5.1.1.

The last version that support a base SDK of 6.0 was 0.9.167.

0.9.168 was released in March. We decided to drop support for base SDK < 7.0 because Apple stopped accepting AppStore submissions that used base SDK < 7.0.

Can you upgrade your Xcode to 5.1.1 and bump your base SDK to 7.0?

If you must downgrade your gem version, please make sure to replace your existing calabash.framework and link in the version that is compatible with your version.

  • https://github.com/calabash/calabash-ios/wiki/B1-Updating-your-Calabash-iOS-version