2017-03-04 74 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安装,它增加了我添加到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'] 

任何想法我应该在这里做什么来让这些框架一起玩?如果我尝试添加显示为POD文件放入带有AWSMobileHub“MySampleApp”

编辑2示例应用程序

同样的情况: 当我删除包含AWSMobileHubHelper.framework的AMazonAws文件夹,并与编译只是从cocoapods添加的aws文件工作正常。当添加AmazonAws文件夹时,问题似乎就会发生。

+1

我尝试将AWSCognito添加到现有程序时出现同样的错误。你解决了这个问题吗? – user3239711

+0

@ user3239711没有抱歉。我必须嵌入AWS框架,并且始终确保在运行pod更新后从pod xcconfig文件中删除-ObjC – glogic

回答

4

我通过转到Pod文件pod-projectname.debug.xcconfig并从OTHER_LDFLAGS中删除-ObjC来解决上述问题。

我不知道这个标志是干什么的,我仍在研究它,但至少现在它让我编译和运行我的项目。如果有人对此有更多的信息,我全都听过。

编辑 - 好的人请不要这样做。它导致了其他的错误。例如,我添加了一个名为Intercom的pod,它需要-ObjC标志。它没有编译好,但稍后会在运行时崩溃。

我已经记录了这个错误到亚马逊,我有一个支持工程师看着这个问题。同时,我完全删除了Helper框架,并直接使用其他aws框架​​并使用pod添加它们。

如果我从亚马逊支持听到有用的东西,我会在这里更新。

1

嗯,我不知道为什么,但似乎删除-ObjCpod-projectname.debug.xcconfig文件解决问题。

对于除AWS以外的其他东西,我不使用Pods。根据文档,我只是静态链接AWS Frameworks