初めてのMacでFlutterの環境を構築するときにつまづいたこと

先日、Macbook Air のM1 Macを貸与され、初めてMacを使っています。
Flutterで開発をしているので、Macでもビルドできるようにと環境を作っているのですが・・・なかなか大変。

という訳で、つまずいたことやその時参考にしたページのリンクをメモ代わりに残しておきます。

# Android Studio / Flutter関係

## Automatically assigning platform `` `iOS` `` with version
以下の記事を参考に解決
[【Flutter】ビルドした際にAutomatically assigning platform `` `iOS` `` with version …が出た時の対処法](https://gakogako.com/automatically_assigning_platform_ios/)

## pod installに失敗 
pod installに失敗して、arch -x86_64 sudo gem install ffi やれとAndroid StudioのRunタブに出てきたのでやってみたけどダメだったので以下を参考に解決
- [【Rosettaなし】M1 Macでpod installが失敗する問題の解決](https://toritakashi.com/archives/2307)
- [Homebrewのインストール](https://qiita.com/zaburo/items/29fe23c1ceb6056109fd)
    - ↑はrubyのバージョンアップするためにHomebrewをインストール

ios/Flutter/Release.xcconfigに
`#include "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"`
を追加してターミナルでiosディレクトリに移動して以下を実行
```
arch -x86_64 pod update
```

## 【根本はこれじゃなかった】Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS

以下のエラーが解決しない

そもそも注目すべきところはこれではなかった。
これを解決すれば問題なかった
```
Error (Xcode): Building for iOS Simulator, but linking in dylib built for iOS, file '/Users/[username]/AndroidStudioProjects/[projectname]/ios/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Mapbox' for architecture arm64
```

### 見当違いだったけど、せっかくなので残しておく

```
Error output from Xcode build:
↳
    2022-08-15 23:24:04.645 xcodebuild[10515:115490] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
    2022-08-15 23:24:04.645 xcodebuild[10515:115490] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
    ** BUILD FAILED **
```

以下２つの記事を参考にしてみたが解決せず
- [[Flutter]iOSアプリとしてビルドすると「Requested but did not find extension point with identifier Xcode.・・・」というエラーが発生する場合の対処法（動画なし）](https://minpro.net/requested-but-did-not-find-extension-point-with-identifier-xcode)
- [【Flutter】cloud_firestoreパッケージを追加して、ビルドすると「Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications.....」とエラーが出る](https://qiita.com/yoshikoba/items/03b29f5f9a46d0096e52)

以下を試してもだめ
- flutter 2.10.5にする
    - flutter_mapbox_glがflutter 3.xでAndroidでの挙動がおかしくなるのでちょうどよかったかもしれない。
    - ちなみに、flutter downgrade 2.10.5 を実行してもダウングレードできなかったので、バイナリをダウンロードして対応した。
- xcodeを13.2.1にする
    - [ここ](https://scrapbox.io/ebiken/Requested_but_did_not_find_extension_point_with_identifier_Xcode.IDEKit.ExtensionSentinelHostApplications_for_extension_Xcode.DebuggerFoundation.AppExtensionHosts.watchOS_of_plug-in_com.apple.dt.IDEWatchSupportCore)を見ると、xcode 13.2.1にダウングレードすると使える可能性があるようなので、試すしたがエラーが増えた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277984/1b001d67-15de-c8b3-c9e6-12cf00c9348d.png)
- コマンドラインツールを入れ直してもダメ
- そもそもxcodebuildだけ実行してもエラー出るからflutter関係ない？
- `sudo xcode-select -s /Library/Developer/CommandLineTools` 
これで治ったみたいなコメント見た。
xcodebuildコマンドを実行すると確かに出なくなる。
ただ、Android StudioでiOSのシミュレータを認識しなくなるので注意。
やっちゃった場合、
`sudo xcode-select -s /Applications/Xcode.app/Contents/Developer`　
で治る

## 【これ大事】Error (Xcode): Building for iOS Simulator, but linking in dylib built for iOS, file '/Users/[username]/AndroidStudioProjects/[projectname]/ios/Pods/Mapbox-iOS-SDK/dynamic/Mapbox.framework/Mapbox' for architecture arm64

```
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end
```
を以下のように変更する
```
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
      installer.pods_project.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
    end
  end
end
```

これで以下のエラーも出なくなり、ビルドに成功した


## brew doctor

brew doctorやったら以下のエラーが出たのでbrew link --overwrite cocoapodsした


```
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause formulae that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  cocoapods
```

## warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0
関係ないけど、以下のワーニングも気になったからとりあえず出ないように直した（正しいことかどうかはわからん）
```
/.../ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.5.99. (in target 'FMDB' from project 'Pods')
```

なんか、色々やってたらこれまた出たので、直すだけ無駄かもしれない。

# Failed to register bundle identifier
xcodeで開いてTARGETS→Signing & Capabilitiesの中のBundle Identifierの末尾にyyyymmdd形式の日付を入れることで回避

# Mapbox関係

## シークレットトークン
[Cocoapods – Error installing Mapbox-iOS-SDK – Code Utility](https://codeutility.org/cocoapods-error-installing-mapbox-ios-sdk-stack-overflow/)
ビルド中にMapbox SDK for iOSのダウンロードが発生し、その為にシークレットトークンの設定が必要だった
  
## アクセストークン
Androidの時とは違ったので。
Android StudioのメニューからRun→Edit Configurations...を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277984/7fb22f72-0c3f-1f2d-01cb-384eef9ed50d.png)

Additional Run Argsにビルドオプションを記載する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277984/2631bd31-d0e3-adc6-0244-490a3a73312d.png)

今回の場合は
```--dart-define=ACCESS_TOKEN=<アクセストークン>```
を指定する。