2020年09月20日

[iOS] Xcode12.0で「building for iOS Simulator, but linking in object file ... for architecture arm64」エラーの対処法

Xcode12.0にバージョンアップして作業していたところ、ビルドが実機では通るのにシミュレーターに切り替えたらエラーになる事があったので解決方法をメモ。

FIrebaseのSDKがひっかかった。
--------------------------------------------
ld: in /Users/[ユーザー名]/[プロジェクト名)/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector(FIRAnalyticsConnector_e321ed8e3db06efc9803f6c008e67a34.o), building for iOS Simulator, but linking in object file (/Users/[ユーザー名]/[プロジェクト名)/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector(FIRAnalyticsConnector_e321ed8e3db06efc9803f6c008e67a34.o)) built for iOS, file '/Users/[ユーザー名]/[プロジェクト名)/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
--------------------------------------------

TARGET > Build Settings > Excluded Architectures
の Debug と Release のに「Any iOS Simulator SDK > arm64」を追記することで、シミュレーターでもビルドが通った。

スクリーンショット 2020-09-20 12.51.09.png

参考:
https://stackoverflow.com/questions/63607158/xcode-12-building-for-ios-simulator-but-linking-in-object-file-built-for-ios
posted by be-style at 12:59| Comment(0) | iOS

2020年03月27日

[iOS] iOS13でTerminating app due to uncaught exception 'NSInternalInconsistencyException'で落ちる

Xcode 11.3.1でビルドして、iOS13.3のiPhoneでアプリ起動時にエラーで落ちる事象が出ました。

↓エラ〜メッセージ
------------------------------------
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<TableViewController: 0x1419b1a00> returned nil from -traitCollection, which is not allowed.'
*** First throw call stack:
(0x18cb9896c 0x18c8b1028 0x18ca954fc 0x18cf284e4 0x1909060b0 0x191107c60 0x1911079cc 0x190e44980 0x190e7d9f8 0x1000a04c0 0x19063d550 0x190642184 0x190642570 0x10012e0bc 0x1016db27c 0x1016dcc88 0x10012cd58 0x1911397e0 0x18c8aca4c 0x19374fa9c 0x19374feec 0x193762614 0x1936a71c4 0x1936d1fd0 0x1936d2ba4 0x18cb13524 0x18cb0e1c4 0x18cb0e774 0x18cb0df40 0x196d8b534 0x190c86a60 0x100115c8c 0x18c98ce18)
------------------------------------

ネットで情報を探しても見当たらなくて困っていたら、ある一文を発見。

self.tableViewController = [TableViewController alloc];
↓ 修正
self.tableViewController = [TableViewController new];

本来は alloc と init をセットで書くべきところを、allocだけで動いていたので油断していました。
allocとinitが一緒になったような「new」に変えたところエラーが解消しました。

こんな事があるんだなー。
posted by be-style at 13:34| Comment(0) | iOS

2018年12月23日

[iOS] iOS10にターゲットを上げたらビルドエラー(Multiple commands produce)

Xcodeで既存のプロジェクトを更新しようとして、まずターゲットをiOS9からiOS10に上げただけでビルドしてみたらビルドエラーが出ました。

------------------------------------
:-1: Multiple commands produce '/Users/[ユーザー名]/Library/Developer/Xcode/DerivedData/[プロジェクト名]-fwvixniobkrxbdakjlradoaanpkk/Build/Products/Debug-iphonesimulator/[プロジェクト名].app/Info.plist':
1) Target '[プロジェクト名]' (project '[プロジェクト名]') has copy command from '/Users/[ユーザー名]/Desktop/MyProject/[プロジェクト名]/[プロジェクト名]/Info.plist' to '/Users/[ユーザー名]/Library/Developer/Xcode/DerivedData/[プロジェクト名]-fwvixniobkrxbdakjlradoaanpkk/Build/Products/Debug-iphonesimulator/[プロジェクト名].app/Info.plist'
2) Target '[プロジェクト名]' (project '[プロジェクト名]') has process command with output '/Users/[ユーザー名]/Library/Developer/Xcode/DerivedData/[プロジェクト名]-fwvixniobkrxbdakjlradoaanpkk/Build/Products/Debug-iphonesimulator/[プロジェクト名].app/Info.plist'
------------------------------------

@CocoaPodsを使っているので、念のため関連するフレームワークを最新版にアップデート。
$ pod update
※対象プロジェクトのディレクトリに移動してから実行

AXcodeの操作(その1)
プロジェクト > TARGETS > [プロジェクト名] > Build Phases > Copy Bundle Resources
から、「Info.plist」を削除。

BXcodeの操作(その2)
(1) Podsプロジェクトの Build Settings > Valid Architectures > arm64 arm64e armv7 armv7s に変更
(2) Podsプロジェクトの Build Settings > Build Active Architecture Only > No に変更

これでビルドが通りました。

参考:
https://stackoverflow.com/questions/50718018/xcode-10-error-multiple-commands-produce
posted by be-style at 18:55| Comment(0) | iOS

2017年11月14日

[iOS] Xcode9でiOS Simulatorsを選択するとビルドエラー(Lexical or preprocessor issue)になる

Xcode9.1になって、iPhoneX向けにビルドできるようになりました。
iPhoneXを持っていないので、シミュレーターで動作確認する必要がありました。

Xcodeのアプデート説明:
スクリーンショット 2017-11-14 16.04.15.png

Xcode9.1にして、いざ出力先をiPhoneX(シミュレーター)にしてビルドしたところ、
Lexical or preprocessor issue
というビルドエラーが出てしまいました。
実機だとビルドできたのに!
CocoaPodsのせいかと思って設定を見直してみたのですがダメでした。

【参考】
.hをimportしているところで「lexical or preprocessor issue file not found」ビルドエラー:
http://anton0825.hatenablog.com/entry/20140815/1413252144

ふと、他の警告文に目がいったので、そちらを読んでみると、

-----------------------------------------------
Showing All Messages
Target 'Pods-[プロジェクト名]' of project 'Pods' was rejected as an implicit dependency for 'Pods_[プロジェクト名].framework' because its architectures 'x86_64' didn't contain all required architectures 'i386 x86_64'
-----------------------------------------------

とあったので、
Podsプロジェクトの「Supported Platforms」「Valid Architectures」をiOS用に変えてみたり
したのですがダメでした。

実は、これが惜しところを見ていたのでした。
Build Active Architecture Only > Debug > Yes
を「No」に変えればよかったのでした。

スクリーンショット 2017-11-14 21.21.17.png

シミュレーターはMacなので、Valid ArchitecturesをiOSにしてたら、そりゃビルドエラーになるわ。
ということで、これで無事アプリをiPhoneXのシミュレーターで動作確認することができました。
posted by be-style at 21:27| Comment(0) | iOS

[iOS] Xcode9でアーカイブしたプロジェクトをValidateしようとして警告やエラーが出るときの対処法

Xcode9.1にしてみたら、アプリを申請するときに警告が出ました。

スクリーンショット 2017-11-14 20.28.35.png

気持ち悪かったので原因を調べていたら、
これまでiTunes Connectの管理画面で設定したいて1024x1024サイズのアイコンが
Xcodeで設定できるようになったということでした。

参考:
http://gootara.org/library/2017/10/x9micon.html

早速、Xcodeのプロジェクトを選択して、
TARGETS > プロジェクト名 > App Icons and Launch Images > App Icon Source > →

スクリーンショット 2017-11-14 21.03.02.png

から、カタログ画面を確認。
すると、1024x1024用の枠が出来てた!
ので、早速アイコンを入れました。

スクリーンショット 2017-11-14 20.32.28.png

ちなみに、アイコンファイルにアルファチャンネルが含まれていると
Validateのときにエラーが出るので、アルファチャンネルは決しておきましょう。

スクリーンショット 2017-11-14 20.39.00.png


[iOS] iTunes Connect の申請でPNGファイルにアルファチャンネルが含まれていて申請に使えないときの対処
http://blog.be-style.jpn.com/article/105597923.html

Xcodeが新しくなる度に何か設定ミスってないか心配になるわー。
posted by be-style at 21:09| Comment(0) | iOS