iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

Xcode

【Xcode】Xcodeのドロップダウンメニューは基本フィルターできるんですね

本日はXcodeの小ネタです Xcodeのドロップダウンメニューはフィルターできる Xcodeでよく見る下記のようなドロップダウンメニュー。実は文字を入力するとフィルターできるらしい(知らんかった)。 こんな感じで、結構便利。 てな感じで本日は以上となります…

【Xcode】ファイル内の特定の文字列を置き換えよう

皆さんこんにちは。最近ネタがなくて困っているYamatoです ということで、本日はXcodeを使いたての人に使って欲しい、ファイル内の文字列をリプレースする方法を紹介します。 やっていく 1.まずは、⌘Fでファインダーを開きます。 2.左上のメニューから、repl…

【Xcode】PlaygroundでSwiftPackageを使ってみる

PlaygroundでSwiftPackage使えるようにしてみたので、手順を備忘録として残しておきます‍♀️ ちなみにXcode12以上が必要で、本記事はXcode12.4で作業を行っています。 やっていく まずは、File > New > Workspace...でワークスペースを作成します。 次に、ワ…

【Xcode】必要なバイナリのみ生成するようにする

結論 XcodeのBuild Active Architecture Onlyを有効にすることで、開発時などに使う端末のアーキテクチャのバイナリのみを生成できるようになり、ビルド時間を削減することができるようになります。基本的には、デフォルトで有効になっています。(なぜかstag…

【Xcode】バンドルリソースコピー時に.gitディレクトリを除外する

結論 REMOVE_GIT_FROM_RESOURCESをtrueに設定することで、バンドルリソースのコピー時に.gitディレクトリが除外されるようになります‍♀️ REMOVE_GIT_FROM_RESOURCES=true てな感じで本日も以上になります その他の記事 yamato8010.hatenablog.com yamato8010…

【Xcode】特定のファイルをビルド時に除外する

結論 Build Optionsで除外したいファイルのパターンリストをEXCLUDED_SOURCE_FILE_NAMESに設定することで、ビルド時に特定のファイルを除外することができるようになります。 例えば、Mockという名前がついているファイル群を本番環境で除きたい場合は下記の…

XCFrameworkとは?

最近巷で聞く XCFramework がなんなのかをよく理解していなかったので、超簡単に概要を調べました✍️ XCFramework とは? Xcode11からバイナリフレークワークの配信のために新たにサポートされた方法で、下記のようにAppleプラットフォームの様々なターゲット…

【Swift】Compilation Mode とは?

今回もSwift コンパイラ周りの小ネタです‍♀️ Compilation Mode とは? Compilation Mode は、プロジェクト内のファイルを全てコンパイルするか、変更されたファイルのみをコンパイルするかをコンパイラに指示します。 Xcode では、下記のように Build Settin…

Swiftコンパイラの最適化レベル

今回はSwiftコンパイラのOptimization Level (最適化レベル)について調べる機会があったので、それらを簡単にまとめてみます‍ 結論 結論、Swiftコンパイラには下記のような最適化レベルがあります。 Level 内容 -Onone 開発時のデフォルトレベルで、最小限の…

Xcodeのテンプレートファイルを作ってみた

最近 Clean Architecture の実装をしている時などに、新しいファイルを作るたびに Protocol と Class の設定をするのが面倒になってきたので、Xcode のテンプレート機能を使ってファイルの作成をちょっと楽にしてみたいと思います‍♂️ それではやっていく と…

【SwifPM】Swift package product '' is linked as a static library by '' and ''. This will result in duplication of library code. をどう対処する?

先日に引き続き、Carthage を剥がして Swift Package Manager への移行作業をしている際に下記のようなエラーに遭遇しました。 具体的には、マルチモジュール化しているプロジェクトのメインターゲット以外にも、SwiftPM で導入したライブラリを Frameworks …

Building for iOS Simulator, but the linked and embedded framework 'xxx.framework' was built for iOS + iOS Simulator 対処法

先日開発を行っているプロジェクトの Xcode バージョンを 12.0.1 から 12.4 に更新すると下記のようなエラーが発生していました 「シュミレーターのビルドでこけてるん?」と思い実機ビルドを試してみましたが、同じようなエラーが発生してビルドできません…

Apple から送信されたクラッシュログを解析するメモ

本日はタイトルの通りクラッシュログを解析する方法を自分用にメモしておきます(他にもっといいい方法あれば教えてください!!)。 それではやっていく みなさんご存知の通りアプリのクラッシュログは通常だと、16進数でレポートされるため一見しただけだと、…

【Xcode12】Double-quoted include “pb.h” in framework header, expected angle-bracketed instead の対処法

久しぶりに Cocoa Pods で、インストールしているライブラリを更新し Xcode12.0.1 でビルドしたところ下記のような見慣れないエラーに遭遇しました。 Double-quoted include “pb.h” in framework header, expected angle-bracketed instead 色々ググって見る…

【iOS】Fastlane で iOS の Build Number をインクリメント

今日はタイトルの通り Fastlane で、Xcode プロジェクトの build number をインクリメントする方法を紹介したいと思います。 それではやっていきましょ 結論 まずは、build number をインクリメントするためのレーンを Fastfile に追記します。ensure_git_st…

【Xcode】〇〇 is not available. please reconnect the device の対処法

Xcode12.1 + iOS14.1 の実機で、いつものごとく実機にアプリをインストールしようとすると何やら見覚えのあるエラーが、 〇〇 is not available. please reconnect the device Xcode11.xx 系では、iOS14 以降のペアリング暗号化の問題で、実機へのインストー…

【iOS】Fastlane で Version と Build Number を取得して使えるようにする

今回は、Fastlane でアプリの Version や Build Number を取得したい時の Tips を紹介します‍ Version の取得 PlistBuddy を使用することで、Info.plist の値を操作しやすくすることができます。CFBundleShortVersionString はアプリのバージョンを指してい…

【Xcode】ソースのインデントを直す

今回は3秒で終わってしまう記事ですが、Xcode でソースコードの再インデントを行う方法を紹介します‍♀️ やっていく この汚いインデントを extension Array { public subscript (safe index: Index) -> Element? { return indices.contains(index) ? self[ind…

Xcode11.x(12未満) で iOS14.x の実機インストールができない

あるプロジェクトで、Xcode11.4.1 を使用していて iOS14.1 にバージョンアップした iPhone で実機インストールができないという問題が発生していました。 Failed to start remote service on device. Please check your connection to your device. 以前紹介…

Xcode CLI の切り替えを簡単にする

みなさん、Xcode12 への移行は済みましたか?僕はライブラリの更新などにかなり苦しめられましたがなんとか、Xcode12 の住人になることができました‍♀️ また、Xcode の移行によって他のプロジェクトと Xcode のバージョンの差異があり、Xcode CLI を切り替え…

Xcode のバージョンを上げる前に、実機の iOS バージョンを上げてしまった時の対処法

iOS アプリ開発をしていると、Xcode が対応していない iOS バージョンに端末の OS を上げてしまうことが多々あるかと思います。そんな時は、下記の手順で Xcode のサポートする iOS バージョンを追加します。 まずは、iOS のサポートファイルをまとめてくれ…

Error: Illegal instruction: 4 (in target '' from project '') の対処法

今回は、Xcode11.7 から Xcode12.0.1(GM) への移行中に発生した、タイトルのエラーで原因だったポイントと、改善方法を簡単にまとめます。なお、error: Illegal instruction: 4 は SwiftCompiler ではなく、OS によって出力されている Error のようですので…

Compilation Mode とは?

Xcode で設定できる Compilation Mode はProject のビルド方法を、速度を最適化する必要があるか、それらの最適化をスキップする必要があるかを設定することができます。簡潔に言い換えると、変更されたファイルのみをコンパイルするか、全体をコンパイルす…

Xcode12.0(GM) で carthage build ができない

Xcode12(swift5.2.4 -> swift5.3) への以降に伴い、Carthage で build していたライブラリを swift5.3 で build 使用とすると失敗するようになってしまいました $ carthage build XCGLogger --no-use-binaries --platform iOS *** xcodebuild output can be …

arm64?x86_64?

今回は、iOS・WatchOS デバイス CPU の ISA(Instruction Set Architecture) について簡単にまとめてみようかと思います。 ISA とは? ソフトウェアとハードウェアのインターフェースで、あるマイクロプロセッサ(CPU/MPU) を動作させるための命令語の体系です…

Attributes Inspector でカスタムプロパティを指定できるようにする

今回は、Storyboard や xib などの Interface Builder を使ってレイアウトを設計する際などに知っておくと少し便利な、@IBDesignable・@IBInspectable について簡単にまとめていこうかと思います。 @IBDesignable とは? Storyboard や xib などの Interface…