2017-03-04 3 views
1

AWSMobileHub를 사용하기 시작했으며 통합 단계를 진행하고 있지만 프로젝트에서 사용하려는 cocoapods와 잘 작동하지 않습니다.awsmobilehub 및 cocoapods 통합

나는 통합 단계를 따라 aws + 헬퍼 코드에서 다운로드 한 프레임 워크를 추가했다.

AWS-Frameworks

그래서

enter image description here

enter image description here

이 컴파일 같은 임베디드 프레임 워크로 추가하고

가 그럼 난 포드 프로젝트에 cocoapods를 추가

잘 실행했다 init, podfile을 다음과 같이 수정하고 저작물을 만든다. 공간.

source 'https://github.com/CocoaPods/Specs.git' 

platform :ios, '9.0' 

use_frameworks! 

target 'ProjectName' do 
project 'ProjectName' 

pod 'Fabric' 
pod 'Crashlytics' 

end 

다음으로 pod install을 추가하면 podfile에 추가 한 프레임 워크가 추가됩니다.

하지만 지금 컴파일하면 다음과 같은 오류가 발생합니다.

Undefined symbols for architecture x86_64: 
"_OBJC_CLASS_$_AWSS3PreSignedURLBuilder", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSContentManager.o) 
"_OBJC_CLASS_$_AWSS3ListObjectsOutput", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSContentManager.o) 
"_OBJC_CLASS_$_AWSS3GetPreSignedURLRequest", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSContentManager.o) 
"_OBJC_CLASS_$_AWSS3", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSContentManager.o) 
(maybe you meant: _OBJC_CLASS_$_AWSS3ContentProvider) 
"_OBJC_CLASS_$_FBSDKLoginManager", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSFacebookSignInProvider.o) 
"_OBJC_CLASS_$_AWSLambdaInvoker", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSCloudLogic.o) 
"_OBJC_CLASS_$_AWSSNSGetEndpointAttributesInput", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSPushManager.o) 
"_OBJC_CLASS_$_FBSDKApplicationDelegate", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSFacebookSignInProvider.o) 
"_OBJC_CLASS_$_AWSSNSSubscribeInput", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSPushManager.o) 
"_OBJC_CLASS_$_GIDSignIn", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSGoogleSignInProvider.o) 
"_OBJC_CLASS_$_AWSSNSSetEndpointAttributesInput", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSPushManager.o) 
"_OBJC_CLASS_$_FBSDKAccessToken", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSFacebookSignInProvider.o) 
"_OBJC_CLASS_$_AWSSNS", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSPushManager.o) 
"_OBJC_CLASS_$_FBSDKGraphRequest", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSFacebookSignInProvider.o) 
"_OBJC_CLASS_$_AWSS3ListObjectsRequest", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSContentManager.o) 
"_OBJC_CLASS_$_AWSSNSCreatePlatformEndpointInput", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSPushManager.o) 
"_OBJC_CLASS_$_AWSSNSUnsubscribeInput", referenced from: 
    objc-class-ref in AWSMobileHubHelper(AWSPushManager.o) 
"_AWSSNSErrorDomain", referenced from: 
    ___88-[AWSPushManager interceptApplication:didRegisterForRemoteNotificationsWithDeviceToken:]_block_invoke.237 in AWSMobileHubHelper(AWSPushManager.o) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

내가 포함 된 프레임 워크를 제거하고 podfile에 추가하면

대신

나는 같은 오류를 얻을.

이 디버그에 대한 내 다른 링커 플래그

//:configuration = Debug 
OTHER_LDFLAGS = $(inherited) -l"c++" 
-l"sqlite3" 
-l"stdc++" 
-l"z" 
-framework "AVFoundation" 
-framework "AWSCognitoIdentityProvider" 
-framework "AWSCore" 
-framework "AddressBook" 
-framework "AssetsLibrary" 
-framework "CFNetwork" 
-framework "CoreFoundation" 
-framework "CoreGraphics" 
-framework "CoreLocation" 
-framework "CoreMedia" 
-framework "CoreMotion" 
-framework "CoreText" 
-framework "CoreVideo" 
-framework "MessageUI" 
-framework "QuartzCore" 
-framework "SafariServices" 
-framework "Security" 
-framework "StoreKit" 
-framework "SystemConfiguration" 
-framework "UIKit" 

//:completeSettings = none 

편집을 구축 할 수 있습니다 : 어떤 프레임 워크가 잘 cocoapods에 추가 할 수 있다는 나타납니다

문제가 프레임 워크가 -ObjC을 필요로 할 때 발생하는 것 같습니다 다른 링커 플래그

OTHER_LDFLAGS = $(inherited) -ObjC -l"z" -framework "AFNetworking" -framework "AWSCognitoIdentityProvider" -framework "AWSCore" -framework "Bolts" -framework "CFNetwork" -framework "CoreGraphics" -framework "FBSDKCoreKit" -framework "FBSDKLoginKit" -framework "PureLayout" -framework "QuartzCore" -framework "Reveal" 

pod.debug.xcconfig 파일에 추가 할

나는 AWS로 컴파일 미세 다음 추가 할 때 예

하지만 내가 추가 할 경우이 -ObjC에 추가하고 원인 다음 모든 오류

pod 'Reveal-iOS-SDK', :configurations => ['Debug'] 

pod 'FBSDKCoreKit' 
pod 'FBSDKLoginKit' 
pod 'PureLayout' 
pod 'AFNetworking', '3.1.0' 

이러한 프레임 워크를 함께 사용하기 위해 내가해야 할 아이디어가 있습니까? 내가 AWSMobileHub "MySampleApp"

편집 2와 함께 제공되는 샘플 응용 프로그램에 포드 파일로 밝혀 추가하려고하면

같은 상황이 발생합니다 나는 AWSMobileHubHelper.framework 들어있는 AMazonAws 폴더를 제거하고 컴파일 할 때 그냥 aws 파일을 cocoapods에서 잘 작동합니다. 이 문제는 AmazonAws 폴더가 추가 될 때 발생하는 것으로 보입니다.

+1

기존 프로그램에 AWSCognito를 추가 할 때도 동일한 오류가 발생합니다. 문제를 해결 했습니까? – user3239711

+0

@ user3239711 죄송합니다. AWS 프레임 워크를 임베드해야하고 항상 포드 업데이트를 실행 한 후 포드 xcconfig 파일에서 -ObjC를 제거해야합니다. – glogic

답변

4

위의 코드는 pod-projectname.debug.xcconfig로 이동하고 OTHER_LDFLAGS에서 -ObjC를 제거하여 해결되었습니다.

나는이 플래그가 무엇을하고 있는지 아직 알지 못하지만 적어도 지금은 내 프로젝트를 컴파일하고 실행하도록하고 있습니다. 누군가가 이것에 대한 더 많은 정보를 가지고 있다면 나는 모든 귀입니다.

편집 -이 사람들은 이것을하지 마십시오. 그것은 도로 아래 다른 버그로 이어집니다. 예를 들어 Intercom이라는 -pod에 -ObjC 플래그가 필요합니다. 그것은없이 잘 컴파일하지만 나중에 실행하는 동안 충돌합니다.

나는이 버그를 Amazon에 기록했으며이 문제를보고하는 기술 지원 담당자가 있습니다. 그 동안 Helper 프레임 워크를 완전히 제거했으며 다른 aws 프레임 워크를 직접 사용하고 포드를 사용하여 추가합니다.

아마존 지원에서 유용한 정보가 있으면 여기서이를 업데이트 할 것입니다.

1

글쎄, 왜 모르겠지만, pod-projectname.debug.xcconfig 파일을 제거하면 문제를 해결할 수 있습니다.

AWS 이외의 다른 내용에는 Pods이 사용되지 않습니다. 방금 문서별로 AWS Frameworks을 정적으로 연결했습니다.