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

2016年09月01日

[iOS] ITMS-90617 が出て、iTunes Connect にアップロードできない

・macOS Sierra (10.12 Beta) (16A313a)
・Xcode7.3.1

でビルドして、アーカイブまでは成功。
でも、アップロードしようとすると ITMS-90617 のエラーが出てしまいました。

スクリーンショット 2016-09-01 22.25.08.png

理由は、macOS Sierra だからのようです。

参考:
http://stackoverflow.com/questions/37838487/error-itms-90167-no-app-bundles-found-in-the-package

困ったなー。

追記:
Xcode 8 Betaでビルドしたらうまくいきました。
Beta版だけど、審査大丈夫かなー。

追記:
審査以前に、iTunes Connectにアップした後に審査ボタンを押したら
Beta版ではダメというメッセージが出て申請できませんでした。
もっと早い段階で言って!

スクリーンショット 2016-09-02 1.05.56.png

追記:
OrganizerでExportして、Application Loaderでアップロードを試みましたが、
ダメでした。


アーカイブファイルの中身開いてinfo.plistを書き替える方法で上手くいったという情報があるけど、
怖くて真似できない。。。
https://forums.developer.apple.com/thread/49004


開発者用の「macOS Sierra Developer Beta」じゃなくて
一般公開されている「macOS Sierra Public Beta」を試してみよう。

macOS Sierra Public Beta:
https://beta.apple.com/sp/ja/betaprogram/welcome?locale=ja

ダメだったので、macのOSをsierra以前のもの(EI Capitan)に戻すことにしました。
https://www.macxdvd.com/blog/smart-how-to-downgrade-macos-10-12-sierra.htm

そして、やっとITCにアップロードできました!

スクリーンショット 2016-09-03 23.07.42.png

長かった。。。
EI Capitan に戻す前に、タイムマシーンで保存した後に作業した分を
きっちりバックアップとっておいて、EI Capitan に戻した後にプログラム等を
更新することをお忘れなく。

無事、アップルの審査にも提出できました。

今後、β版にするときは、申請の予定がないときにしよう。。。
今回で懲りました。
タグ:Xcode SIERRA MacOS
posted by be-style at 22:31| Comment(0) | iOS