2017年04月05日

[iOS] CocoaPod で GoogleAnalyticsを追加した後でエラー「_OBJC_CLASS_$_GGLContext」

CocoaPod を使って手順通りにGoogleAnalyticsのSDKをプロジェクトに
追加したはずなのにビルドエラーになりハマったのでメモ。

Google Analyticsの導入手順
https://developers.google.com/analytics/devguides/collection/ios/v3/?hl=ja

エラー:
_OBJC_CLASS_$_GGLContext

原因は、手順にあるこのプログラムの部分。

NSError *configureError;
[[GGLContext sharedInstance] configureWithError:&configureError];

どうも「GGLContext」が見つからないようでした。

解決策は、
Xcode の Build Setting で OTHER_LDFLAGS で検索し、Other Linker Flags に
$(inherited)
を追記することでした。

スクショ20170405.png

参考:
http://stackoverflow.com/questions/31108868/undefined-symbols-for-architecture-armv7-objc-class-gglcontext-referenced

pod install コマンドを実行した後に、そんなメッセージ出てたわー。
--------------------
[!] The `プロジェクト名 [Release]` target overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Target Support Files/Pods-プロジェクト名/Pods-プロジェクト名.release.xcconfig'. This can lead to problems with the CocoaPods installation
- Use the `$(inherited)` flag, or
- Remove the build settings from the target.
--------------------
posted by be-style at 00:16| Comment(0) | iOS

2017年03月29日

[iOS] AWSでビルドエラー(Undefined symbols for architecture arm64)になる

前回、XcodeプロジェクトにCocoaPodsを使ってAWS SDK を追加することに成功しました。

[iOS] CocoaPodsを初めて使ってみたら「linker command failed with exit code 1」でビルドエラーになる

いざ、Congnitoを使って認証しようかとプログラムを書き始めたところ
リンクエラーのようなものが出ました。

↓プログラム
------------------------------------------------------
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionAPNortheast1
identityPoolId:CONGNITO_POOL_ID];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
------------------------------------------------------

↓エラー内容
------------------------------------------------------
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_AWSServiceManager", referenced from:
objc-class-ref in HundredSquaresCalcAppDelegate.o
"_OBJC_CLASS_$_AWSServiceConfiguration", referenced from:
objc-class-ref in HundredSquaresCalcAppDelegate.o
"_OBJC_CLASS_$_AWSCognitoCredentialsProvider", referenced from:
objc-class-ref in HundredSquaresCalcAppDelegate.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
------------------------------------------------------

プログラム参考:
http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/step1-getting-started.html

なんと、前回CocoaPodsでAWS SDKを追加が完了したと思いきや、
元のプロジェクトに対してCongnitoのフレームワークの追加が必要なのでした。

リンクエラー修正.png

こうやって元のプロジェクトにAWS SDKのフレームワークを追加することで、
無事ビルドが通ったのでした。

初めてのことは、必ずハマる箇所があるなー。
posted by be-style at 10:17| Comment(0) | iOS

[iOS] CocoaPodsを初めて使ってみたら「linker command failed with exit code 1」でビルドエラーになる

AWSのiOS用SDKを使うために、CocoaPodsを使う必要が出てきました。

http://qiita.com/SoyaTakahashi/items/fdb0d87597eb276056d8
http://docs.aws.amazon.com/ja_jp/mobile/sdkforios/developerguide/setup-aws-sdk-for-ios.html

を参考にして、既存のXcodeプロジェクトに適用し、
出来た「.xcworkspace」ファイルをダブルクリックして
Xcodeを立ち上げたところ、

linker command failed with exit code 1

というビルドエラーが出て、AWSに関するリンクエラーが表示されました。
原因は、新しくできた「Pods」プロジェクトの設定が、元のプロジェクトの設定と
一致していないことでした。

↓赤で囲った部分が、元のプロジェクトと違っていたので修正した

cocoapod20170329.png

これでビルドが通って、無事iPhoneでも起動確認ができました。

参考:
http://qiita.com/sutchan/items/0a78042261ca3f0a7d91

環境まわりって、いつも設定に時間がかかるなー。
posted by be-style at 09:09| Comment(0) | iOS