4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Deployment Targetを11.0以上にしたらArchive Buildできなくなった

Last updated at Posted at 2019-04-17

対象になりそうなプロジェクトの条件

  1. iOS 10以下のサポートを切るためにDeployment Targetを11.0にしようとしている
  2. ProjectのみでDeployment Targetを指定し、各Targetでは参照(未指定)にしている
  3. OSSをCarthageで利用している
  4. Embedded Framework をプロジェクト内で自作して利用している。
  5. OSSのframeworkもembedded frameworkもFrameworkフォルダに書き出している。
  6. Build PhasesのRun Script*1にてlipoコマンドを利用しFrameworkフォルダ内のframeworkをすべてSlicing をしている(-extractなどを利用)

Archive Buildできなくなった原因

  • arm64アーキテクチャのみでbuildされたembedded frameworkをslicingしようとしたから。

Deployment TargetのversionがbuildされるBinaryのarchitectureに影響する

Release build時のDeployment Targetが11.0以上の場合はarm64non fat fileとしてbuildされる。(10.x以下だとarmv7,arm64fat file)
そのため、embedded frameworkarm64non fat fileでbuildされ、*1のslicingのscriptでerrorとなる。(スクリプトの書き方にもよる)

(注)10.x以下の説明はdefaultのarchitectureとvalid architecturesの場合です。10.x以下でも設定次第でarm64のみのbuild可。

通常のアプリの最低動作保証バージョン変更方法

  • Project(もしくはTarget)のDeployment targetを最低動作保証バージョンに設定する

iOS10.x以下からiOS11.xにする場合の変更方法

  • 対応方法
    • ProjectのDeployment targetを最低動作保証バージョンに設定する
    • アプリのTargetのDeployment targetを最低動作保証バージョンに設定する
    • 自作Embedded frameworkのtargetは11.0未満にする(指定されていなければtargetに設定しfat fileにする)

その他、Deployment targetを11以上に設定してビルドエラーのとき確認したいこと

  1. 32bitのArchitecture(armv7,armv7s...)をProject or Target -> ArchitectureValid Architecturesに同時に設定していないか。(Architecture${ARCHS_STANDARD}の場合確認不要)
  2. Carthageでbuildされたbinaryを取得し、そのまま利用していないか。
  3. Embedded Frameworkのdeployment targetがarchitectureにbuild時の影響しないか

現時点で不要だった対応(2019/04/17)

  • info.plistのRequired Device Capabilityarmv7からarm64への変更
4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?