Flutter+iOS 警告最小化設定ガイド
前回は最新Android StudioにおけるFlutterのAndroidビルドについてgradle更新の情報をまとめた。今回はiOSビルドについての記事だ。
FlutterでiOSビルドする際、Xcodeが謎の警告を出し、開発者を悩ませる。またFlutterではCocoapodを最適化する必要もある。無座なものを生成しているのである。これらの対策をGitHub ActionsやFastlaneに組み込むスクリプト例も挙げた。
Xcodeに出てくる謎の警告一覧(Flutter/iOS)
警告メッセージ例 | 意味・対応 |
---|---|
Failed to send CA Event for app launch measurements... |
Appleの起動メトリクス測定用。無視してOK |
Could not load the "..." image referenced from a nib in the bundle with identifier... |
Flutterとは無関係な古いXcode nib関連。Flutterでは発生しても影響なし |
Auto Layout still required after executing... |
iOSネイティブ側でUIが正しく構成されていない。Flutterからは無関係 |
Building for iOS Simulator, but the linked and embedded framework was built for iOS. |
ネイティブプラグインが古い形式でビルドされている。ライブラリアップデートで解消することが多い |
ld: warning: directory not found for option '-F...' |
CocoaPodsでFrameworkのパスがずれている。pod install 再実行で解消可能 |
Runner has conflicting provisioning settings. |
Appleアカウント設定の問題。ビルドや実行はできるが、App Store提出前に要調整 |
Flutter+iOSで警告を最小限に抑えるための設定
1. Xcode側のビルド設定
Product > Scheme > Edit Scheme... > Diagnostics
で以下をOFF:- Core Animation
- Performance Measurement
- Bitcode は「No」
- Build Active Architecture Only:
- Debug: Yes、Release: No
2. ios/Podfile の最適化
platform :ios, '13.0'
install! 'cocoapods',
:generate_multiple_pod_projects => false,
:disable_input_output_paths => true
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
end
end
end
3. Releaseビルド確認
flutter build ios --release
GitHub Actions への組み込み例
.github/workflows/flutter_ios.yml
name: Flutter iOS CI
on:
push:
branches: [ main ]
jobs:
build-ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.32.1'
- name: Install dependencies
run: flutter pub get
- name: CocoaPods install
run: |
cd ios
pod install
- name: Build iOS
run: flutter build ios --release
Fastlane 用組み込み例
Fastfile
default_platform(:ios)
platform :ios do
desc "Build for release"
lane :build_release do
capture_output = sh("flutter build ios --release")
puts capture_output
end
end
その他のチェック事項
flutter doctor
で診断flutter pub upgrade
で依存更新- Xcode の Command Line Tools を最新版に指定
以上だ。これで少しは安心してFlutterによるiOS開発が実施できるだろう。