LoginSignup
3
5

More than 5 years have passed since last update.

[Swift] Podfileにuse_frameworks!を追加したらAWS SDK for iOSのS3が読み込めなくなった

Last updated at Posted at 2015-08-30

CocoaPodでAlamofireをインストールしたところ、AWSのS3が使えなくなってしまった。
原因は、AlamofireをインストールしたときにPodfileにuse_frameworks!を書いたことのようである(以下)。

Podfile
(略)
pod 'AWSCore'
pod 'AWSS3'
pod 'AWSiOSSDKv2'
pod 'AWSCognito'

# new rows
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire', '~> 1.3'
(略)

これでターミナルでpod installしてからアプリを走らせたところ、以下のようなエラー。

error
/Users/*****/Pods/AWSCore/AWSCore/FMDB/AWSFMDatabase.h:2:9: Include of non-modular header inside framework module 'AWSCore.AWSFMDatabase'

AWSCoreがuse_frameworks!に対応していないversion 2.2.0だった。

pod updateで更新をかけてAWS系を最新版のversion 2.2.4に更新した。
これで走らせたところ、以下のエラー。

error
Use of undeclared type 'AWSS3TransferManagerUploadRequest'
Use of undeclared type 'AWSS3TransferManager'

どうやらS3だけ読み込めていない様子。
アプリ名-Bridging-Headerで以下のように、直接パスを指定してあげたところ、読み込んでくれるようになった。

Bridging-Header変更前
#import <AWSCore/AWSCore.h>
#import <AWSCognito/AWSCognito.h>
#import <AWSS3/AWSS3.h>
Bridging-Header変更後
#import <AWSCore/AWSCore.h>
#import <AWSCognito/AWSCognito.h>
#import "/Users/****/****/****/Pods/AWSS3/AWSS3/AWSS3.h"

これで解決したが、疑問は残る。

なぜ#import <AWSS3/AWSS3.h>で読めないのか不明だし、
このように絶対パスを書くのは賢い方法ではない。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5