2017-03-04 17 views
1

私はAWSMobileHubの使用を開始しましたが、統合手順を進めていますが、プロジェクトで使用する予定のcocoapodsとうまく一致しません。awsmobilehubとcocoapodsのインテグレーション

私は統合手順に従って、aws +ヘルパーコードからダウンロードしたフレームワークを追加しました。

AWS-Frameworks

私は、これはその後、私はポッドでプロジェクトにcocoapodsを追加するコンパイルし、

細かい動作しますので、

enter image description here

enter image description here

などの組み込みフレームワークとして、それらを追加しました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例

として

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

でコンパイル罰金以下を追加します。しかし、私は次のように追加した場合、それは-ObjCに追加し

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

すべてのエラーが発生します私はこれらのフレームワークを一緒に演奏するためにここで何をすべきですか?

私はAWSMobileHubに付属しているサンプルアプリにポッドファイルとして公開

編集2「MySampleApp」を追加しようと同じことが起こります:私はAWSMobileHubHelper.frameworkが含まれているAMazonAwsフォルダを削除してコンパイルする場合 をcocoapodsから追加されたawsファイルだけでうまく動作します。この問題は、AmazonAwsフォルダが追加されたときに発生するようです。

+1

AWSCognitoを既存のプログラムに追加しようとして同じエラーが発生しました。あなたは問題を解決しましたか? – user3239711

+0

@ user3239711申し訳ありません。私はAWSフレームワークを埋め込み、ポッドアップデートを実行した後で必ずpod xcconfigファイルから-ObjCを削除しなければならない – glogic

答えて

4

私は、Podファイルpod-projectname.debug.xcconfigに行き、OTHER_LDFLAGSから-ObjCを削除することで、上記で解決しました。

私はこのフラグが何をしているのかわかりませんが、私はまだそれを調べていますが、少なくとも今は私がプロジェクトをコンパイルして実行できるようにしています。誰かがこれについてもっと多くの情報を持っているなら、私はすべての耳です。

EDIT - このようにしないでください。それは他のバグにつながります。たとえば、Intercomというポッドに-ObjCフラグが必要です。それはなくてもうまくコンパイルされますが、実行中に後でクラッシュします。

私はこのバグをAmazonに記録しています。この問題を調べるサポートエンジニアがいます。その間、ヘルパーフレームワークを完全に削除しました。他のawsフレームワークを直接使用し、ポッドを使って追加しています。

アマゾンのサポートから役立つものがあれば、ここでこれを更新します。

1

よくわかりませんが、pod-projectname.debug.xcconfigファイルの-ObjCを削除すると問題が解決するようです。

AWS以外のものにはPodsを使用していません。ドキュメントごとに静的にAWS Frameworksをリンクしました。

関連する問題