「Unity/実機/iOS」の版間の差分
(→ビルド時にErrors were encountered while preparing your device for development. Please check the Devices and Simulators Window. のエラーが出るとき) |
(→No `Podfile' found in the project directory.エラー) |
||
(同じ利用者による、間の16版が非表示) | |||
行17: | 行17: | ||
$ pod setup | $ pod setup | ||
> Setup completed | > Setup completed | ||
+ | |||
+ | ==Linker command failed with exit code 1== | ||
+ | xcodeで、Unity-iPhone.xcodeprojではなく、Unity-iPhone.xcworkspace の方を開けば良い。 | ||
+ | "pod update"のコマンドで、作れる。Podfileが、ない場合は、以下テンプレで作る。 | ||
+ | |||
+ | Podfile | ||
+ | <pre> | ||
+ | source 'https://cdn.cocoapods.org/' | ||
+ | source 'https://github.com/CocoaPods/Specs' | ||
+ | |||
+ | platform :ios, '12.0' | ||
+ | |||
+ | target 'UnityFramework' do | ||
+ | end | ||
+ | target 'Unity-iPhone' do | ||
+ | end | ||
+ | use_frameworks! :linkage => :static | ||
+ | </pre> | ||
==Consider adding the following to ~/.profile: エラーの場合== | ==Consider adding the following to ~/.profile: エラーの場合== | ||
行41: | 行59: | ||
==which may not be supported by this version of Xcode.エラー== | ==which may not be supported by this version of Xcode.エラー== | ||
+ | unsupported os versionとでてる | ||
===This iPhone 6 is running iOS 11.4.1 (15G77), === | ===This iPhone 6 is running iOS 11.4.1 (15G77), === | ||
#開発端末のxcodeの中身を確認する | #開発端末のxcodeの中身を確認する | ||
行86: | 行105: | ||
==ビルド時にErrors were encountered while preparing your device for development. Please check the Devices and Simulators Window. のエラーが出るとき== | ==ビルド時にErrors were encountered while preparing your device for development. Please check the Devices and Simulators Window. のエラーが出るとき== | ||
iPhone端末を再起動すればよい。 | iPhone端末を再起動すればよい。 | ||
+ | |||
+ | ==iosビルド時に"Invalid bitcode version"エラーが出るとき== | ||
+ | 詳細エラー | ||
+ | ld: could not reparse object file in bitcode bundle: 'Invalid bitcode version (Producer: '1316.0.21.2.3_0' Reader: '1300.0.29.3_0')', using libLTO version 'LLVM version 13.0.0, (clang-1300.0.29.3)' for architecture arm64 | ||
+ | 対応方法はxcodeを13.0.0から13.4.1へバージョンアップすると直った。 | ||
+ | |||
+ | ==iosビルド時に"STATE_ERROR.VALIDATION_ERROR.90206"エラーが出るとき== | ||
+ | 詳細エラー | ||
+ | Invalid Bundle. The bundle at '~/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'. With error code STATE_ERROR.VALIDATION_ERROR.90206 for id | ||
+ | |||
+ | 対応方法:xcodeの部分のBuildSetttingのBuildOptionの"Always embed swift standard libraries"が、Yesになってるので、Noへ変更。 | ||
+ | |||
+ | 参考:https://zenn.dev/sukedon/articles/0454e2187b08c3 | ||
+ | |||
+ | ===自動修正する場合=== | ||
+ | 未検証だけど以下を追加でもなおるかも。 | ||
+ | |||
+ | Assets/Editor/XcodeSwiftVersionPostProcess.cs | ||
+ | <pre> | ||
+ | using UnityEditor; | ||
+ | using UnityEditor.Callbacks; | ||
+ | using UnityEditor.iOS.Xcode; | ||
+ | |||
+ | public static class XcodeSwiftVersionPostProcess | ||
+ | { | ||
+ | [PostProcessBuild] | ||
+ | public static void OnPostProcessBuild(BuildTarget target, string path) | ||
+ | { | ||
+ | if (target != BuildTarget.iOS) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | var project = new PBXProject(); | ||
+ | project.ReadFromFile(PBXProject.GetPBXProjectPath(path)); | ||
+ | project.SetBuildProperty(project.GetUnityMainTargetGuid(), "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO"); | ||
+ | project.SetBuildProperty(project.GetUnityFrameworkTargetGuid(), "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO"); | ||
+ | project.WriteToFile(PBXProject.GetPBXProjectPath(path)); | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ==iosビルド時に"NSPhotoLibraryUsageDescription"のエラーがメールできてるとき== | ||
+ | 詳細エラー | ||
+ | Missing Purpose String in Info.plist - Your app‘s code references one or more APIs that access sensitive user data. The app‘s Info.plist file should contain a NSPhotoLibraryUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. | ||
+ | |||
+ | 対応方法:NSPhotoLibraryUsageDescriptionをinfo.plistへ追加 | ||
+ | |||
+ | 参考:https://nobushiueshi.com/unityios%E3%83%93%E3%83%AB%E3%83%89%E6%99%82%E3%81%ABnsphotolibraryaddusagedescription%E3%81%A8nsphotolibraryusagedescription%E3%82%92%E8%87%AA%E5%8B%95%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/ | ||
+ | |||
+ | ==iosビルド時に"You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)"エラーとなる場合== | ||
+ | 詳細エラー | ||
+ | error build: 'Library/Developer/Xcode/DerivedData/Unity-iPhone-gmubznzegicgstbzezoypyxvvddz/Build/Products/ReleaseForRunning-iphoneos/PromisesObjC/FBLPromises.framework/FBLPromises(FBLPromise.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file 'Library/Developer/Xcode/DerivedData/Unity-iPhone-gmubznzegicgstbzezoypyxvvddz/Build/Products/ReleaseForRunning-iphoneos/PromisesObjC/FBLPromises.framework/FBLPromises' for architecture arm64 | ||
+ | |||
+ | Bitcodeを無効化すれば直る。やり方は、xcodeのTargetsをUnity-iPhone/BuildSettings/EnableBitcodeをNoにする。 | ||
+ | |||
+ | 参考:https://zenn.dev/dhirooka/scraps/f904ae5d101db6 | ||
==info.plistの言語を日本語にする== | ==info.plistの言語を日本語にする== | ||
行93: | 行168: | ||
CFBundleLocalizationsをjaへ | CFBundleLocalizationsをjaへ | ||
− | ==unityで自動で設定する場合=== | + | ===unityで自動で設定する場合=== |
Assets/Editor/XcodeProjectUpdater.cs | Assets/Editor/XcodeProjectUpdater.cs | ||
<pre> | <pre> | ||
行118: | 行193: | ||
参考:https://kimizuka.hatenablog.com/entry/2018/09/27/201054 | 参考:https://kimizuka.hatenablog.com/entry/2018/09/27/201054 | ||
+ | |||
+ | xcodeのInfoPlistのTargetMembershipのUnityiPhoneにチェックを付ける | ||
+ | |||
+ | 参考:https://nekosuko.jp/1802/ | ||
+ | |||
+ | ==xcodeのbitcodeを自動でnoにする場合== | ||
+ | Assets/Editor/XcodeBitCodeNoPostProcess.cs | ||
+ | <pre> | ||
+ | using UnityEditor; | ||
+ | using UnityEditor.Callbacks; | ||
+ | using UnityEditor.iOS.Xcode; | ||
+ | |||
+ | public static class XcodeBitCodeNoPostProcess | ||
+ | { | ||
+ | [PostProcessBuild] | ||
+ | public static void OnPostProcessBuild(BuildTarget target, string path) | ||
+ | { | ||
+ | if (target != BuildTarget.iOS) | ||
+ | { | ||
+ | return; | ||
+ | } | ||
+ | var project = new PBXProject(); | ||
+ | project.ReadFromFile(PBXProject.GetPBXProjectPath(path)); | ||
+ | project.SetBuildProperty(project.GetUnityMainTargetGuid(), "ENABLE_BITCODE", "NO"); | ||
+ | project.SetBuildProperty(project.GetUnityFrameworkTargetGuid(), "ENABLE_BITCODE", "NO"); | ||
+ | project.WriteToFile(PBXProject.GetPBXProjectPath(path)); | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | 参考:https://waken.hatenablog.com/ |
2024年9月9日 (月) 12:23時点における最新版
目次
- 1 iOS実機で動かす
- 2 No `Podfile' found in the project directory.エラー
- 3 Linker command failed with exit code 1
- 4 Consider adding the following to ~/.profile: エラーの場合
- 5 After the failure, "pod repo update" was executed and succeeded. "pod install" was then attempted again, and still failed. エラーの場合
- 6 Bundle Identifier has not been set up correctly
- 7 Code Signing Error: Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor.
- 8 Verify the Developer App certificate for your account is trusted on your device. Open Settings on and navigate to General -> Device Management, then select your Developer App certificate to trust it.
- 9 which may not be supported by this version of Xcode.エラー
- 10 "'autorelease' is unavailable: not available in automatic reference counting mode"エラーとなるとき
- 11 iosで"dyld_shared_cache_extract_dylibs failed"エラーとなる時
- 12 ios14対応
- 13 ビルド時にErrors were encountered while preparing your device for development. Please check the Devices and Simulators Window. のエラーが出るとき
- 14 iosビルド時に"Invalid bitcode version"エラーが出るとき
- 15 iosビルド時に"STATE_ERROR.VALIDATION_ERROR.90206"エラーが出るとき
- 16 iosビルド時に"NSPhotoLibraryUsageDescription"のエラーがメールできてるとき
- 17 iosビルド時に"You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)"エラーとなる場合
- 18 info.plistの言語を日本語にする
- 19 xcodeのbitcodeを自動でnoにする場合
iOS実機で動かす
- File/BuildSettingsを選択
- iOSを選択
- OpenDownloadPageからプレイヤーをDL
- Edit/ProjectSetting/Playerを選択しPlayerSettingsを開く
- Inspector/端末マークタブ選択/OtherSetting
- Bundle Identifierの"com.company.ProjectName"を適宜変更する(デフォから変えないとbuild時にエラーとなる)
- File/BuildSettingsからbuildボタンを押しiPhone用のxcodeプロジェクトDir一式を作成する
- あとはxcodeプロジェクトを実機で動作させる方法と同じ
- 最新xcodeを起動する
- 縦向き・横向きで確認する
No `Podfile' found in the project directory.エラー
cocoapodsが入ってるか確認。
$ sudo gem update --system $ sudo gem install cocoapods $ pod setup > Setup completed
Linker command failed with exit code 1
xcodeで、Unity-iPhone.xcodeprojではなく、Unity-iPhone.xcworkspace の方を開けば良い。 "pod update"のコマンドで、作れる。Podfileが、ない場合は、以下テンプレで作る。
Podfile
source 'https://cdn.cocoapods.org/' source 'https://github.com/CocoaPods/Specs' platform :ios, '12.0' target 'UnityFramework' do end target 'Unity-iPhone' do end use_frameworks! :linkage => :static
Consider adding the following to ~/.profile: エラーの場合
デフォだとja_JP.UTF-8になるっぽいのでutf8に変更してあげる
$ vi ~/.profile export LANG=en_US.UTF-8 $ source ~/.profile $ echo $LANG en_US.UTF-8
After the failure, "pod repo update" was executed and succeeded. "pod install" was then attempted again, and still failed. エラーの場合
xcodeのプロジェクトのdirに入って以下実行
$ pod repo update $ pod install
Bundle Identifier has not been set up correctly
- 上記のBundle Identifierがデフォルトの"com.company.ProjectName"だと起こるエラー。適宜変更する
Code Signing Error: Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor.
- xcodeのgeneralのteamが選択されてない
- 実機の設定/一般/デバイス管理/アプリを許可する
which may not be supported by this version of Xcode.エラー
unsupported os versionとでてる
This iPhone 6 is running iOS 11.4.1 (15G77),
- 開発端末のxcodeの中身を確認する
$ cd ~/Library/Developer/Xcode/iOS\ DeviceSupport/ $ ls 10.0.2 (14A456) 10.3.1 (14E304)
もしくは
$ cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport $ ls 10.0 10.1 10.2
- https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport から
- 上記どちか存在するDIRに11.4.1をいれてビルド、もしくはxcode再起動すれば良い。
- 11.4 (15F79) と 11.4 を入れたら動いた。
参考:https://qiita.com/_CHUBURA/items/ffd280e50ed623989045
This iPhone XS is running iOS 13.3 (17C54),
- こちらに ~/Library/Developer/Xcode/iOS\ DeviceSupport/
- https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport
- 13.3 (17C54).zipを解凍して入れると良い。
target/BuildPhases/CopileSourcesの適用したいmmなどのファイルを選択して、以下をいれる。
-fno-objc-arc
macの容量が足りない可能性があるので、不要なファイルを消して容量を増やす。
参考:https://rils-k.hatenablog.com/entry/2019/03/03/002057
ios14対応
以下エラーが出るとき
This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSUserTrackingUsageDescription key with a string value explaining to the user how the app uses this data.
以下をinfo.plistに追加
<key>NSUserTrackingUsageDescription</key> <string>Dummy</string>
ビルド時にErrors were encountered while preparing your device for development. Please check the Devices and Simulators Window. のエラーが出るとき
iPhone端末を再起動すればよい。
iosビルド時に"Invalid bitcode version"エラーが出るとき
詳細エラー
ld: could not reparse object file in bitcode bundle: 'Invalid bitcode version (Producer: '1316.0.21.2.3_0' Reader: '1300.0.29.3_0')', using libLTO version 'LLVM version 13.0.0, (clang-1300.0.29.3)' for architecture arm64
対応方法はxcodeを13.0.0から13.4.1へバージョンアップすると直った。
iosビルド時に"STATE_ERROR.VALIDATION_ERROR.90206"エラーが出るとき
詳細エラー
Invalid Bundle. The bundle at '~/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'. With error code STATE_ERROR.VALIDATION_ERROR.90206 for id
対応方法:xcodeの部分のBuildSetttingのBuildOptionの"Always embed swift standard libraries"が、Yesになってるので、Noへ変更。
参考:https://zenn.dev/sukedon/articles/0454e2187b08c3
自動修正する場合
未検証だけど以下を追加でもなおるかも。
Assets/Editor/XcodeSwiftVersionPostProcess.cs
using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; public static class XcodeSwiftVersionPostProcess { [PostProcessBuild] public static void OnPostProcessBuild(BuildTarget target, string path) { if (target != BuildTarget.iOS) { return; } var project = new PBXProject(); project.ReadFromFile(PBXProject.GetPBXProjectPath(path)); project.SetBuildProperty(project.GetUnityMainTargetGuid(), "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO"); project.SetBuildProperty(project.GetUnityFrameworkTargetGuid(), "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO"); project.WriteToFile(PBXProject.GetPBXProjectPath(path)); } }
iosビルド時に"NSPhotoLibraryUsageDescription"のエラーがメールできてるとき
詳細エラー
Missing Purpose String in Info.plist - Your app‘s code references one or more APIs that access sensitive user data. The app‘s Info.plist file should contain a NSPhotoLibraryUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required.
対応方法:NSPhotoLibraryUsageDescriptionをinfo.plistへ追加
iosビルド時に"You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)"エラーとなる場合
詳細エラー
error build: 'Library/Developer/Xcode/DerivedData/Unity-iPhone-gmubznzegicgstbzezoypyxvvddz/Build/Products/ReleaseForRunning-iphoneos/PromisesObjC/FBLPromises.framework/FBLPromises(FBLPromise.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file 'Library/Developer/Xcode/DerivedData/Unity-iPhone-gmubznzegicgstbzezoypyxvvddz/Build/Products/ReleaseForRunning-iphoneos/PromisesObjC/FBLPromises.framework/FBLPromises' for architecture arm64
Bitcodeを無効化すれば直る。やり方は、xcodeのTargetsをUnity-iPhone/BuildSettings/EnableBitcodeをNoにする。
参考:https://zenn.dev/dhirooka/scraps/f904ae5d101db6
info.plistの言語を日本語にする
手動設定する場合
info.plistの CFBundleDevelopmentRegionをjaへ CFBundleLocalizationsをjaへ
unityで自動で設定する場合
Assets/Editor/XcodeProjectUpdater.cs
using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; using System.IO; public class XcodeProjectUpdater { [PostProcessBuild] static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget != BuildTarget.iOS) return; string plistPath = Path.Combine(path, "Info.plist"); PlistDocument plist = new PlistDocument(); plist.ReadFromFile(plistPath); plist.root.SetString ("CFBundleDevelopmentRegion", "ja"); plist.WriteToFile(plistPath); } }
参考:https://kimizuka.hatenablog.com/entry/2018/09/27/201054
xcodeのInfoPlistのTargetMembershipのUnityiPhoneにチェックを付ける
xcodeのbitcodeを自動でnoにする場合
Assets/Editor/XcodeBitCodeNoPostProcess.cs
using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; public static class XcodeBitCodeNoPostProcess { [PostProcessBuild] public static void OnPostProcessBuild(BuildTarget target, string path) { if (target != BuildTarget.iOS) { return; } var project = new PBXProject(); project.ReadFromFile(PBXProject.GetPBXProjectPath(path)); project.SetBuildProperty(project.GetUnityMainTargetGuid(), "ENABLE_BITCODE", "NO"); project.SetBuildProperty(project.GetUnityFrameworkTargetGuid(), "ENABLE_BITCODE", "NO"); project.WriteToFile(PBXProject.GetPBXProjectPath(path)); } }