はじめに
普通にビルドすればアップロードされると信じていたが、
悉くはじかれたのでそのときに上げられるようにした対策を残しておく
環境
- Xcode10.3
- Unity2018.2.20f1
起こった現象
**ITMS-90428: Invalid Swift Support**~~ ~~
というエラーが返ってくるという報告が上がりました。
調べてみたところ、どうやらこの症状は様々な対処法があるようです。
下記に対処方法があるサイトを列挙しておきます。
- https://forums.developer.apple.com/message/342607#342607
- https://developer.apple.com/library/archive/qa/qa1881/_index.html
- https://stackoverflow.com/questions/53214530/invalid-swift-support-files-dont-match-xcode-10-1
- https://qiita.com/daikon/items/b2824649484f812fd62c
- https://stackoverflow.com/questions/32526526/invalid-swift-support-files-don-t-match?rq=1
・・・etc
さて今回私が1週間はまった内容はこのどのサイトの事象でもありませんでした。
結果からいいますと
XcodeのBuildSettingで
EMBEDDED_CONTENT_CONTAINS_SWIFTを**NO**に変更するです。
下記にEMBEDDED_CONTENT_CONTAINS_SWIFTについて記載がありますが、端的に言うとビルド後に標準Swiftファイルを含めないようにする機能っぽいです。~~
https://kitoko552.hatenablog.com/entry/20160118/1453120577
そもそも怒られていたのがSwiftFolderがないとかdoes not matchだとか言われていたので、入れなければいいんじゃないの?が発端です。
上記の方法で一旦はアップロードできましたが、別のエラーが返ってこないかが心配ではあります。
アップロードするまでの方法を書きます。
2019/09/18更新
対応方法が違いました。
上記の方法でアップロードした場合iOS10,11でクラッシュするようになりました。
原因はSwift(今回はLineSDK)を使用しているのにSiwftSupport folderがなく動作できないことが原因のようでした。
(試しにSwiftを含めたipaは動作しました。)
最終的に成功した対応方法といたしましては
provisioningprofileをAdd-HocからApp-Storeに変更するが正しい修正でした。
この修正で、ビルド時にSwiftSupoportフォルダが作成されて、正常に動作するようになります。
↓
懸念点としましては、容量がほぼ倍になること
2019/06から200MBまでならモバイル通信でダウンロードができるのでそれ以下にできれば・・・
この修正で提出が正常にできたため、一旦は事なきを得ました。
もし同現象で困っている方がいらっしゃいましたら一度この方法でお試しください。
[PostProcessBuild(任意の数値)]
public static void ChangeXcodeProject(BuildTarget buildTarget,string path)
{
if(buildTarget != BuildTarget.iOS)
{
return;
}
// Xcodeのプロジェクト情報を取得します。
var proj = new PBXProject();
string projectPath =path+"foo.xcodeproj/bar.pbxproj"
proj.ReadFromString(File.ReadAllText(projectPath));
string targetGuid = proj.TargetGuidByName("foo");
~~
略
~~
// EMBEDDED_CONTENT_CONTAINS_SWIFTをYESにする
{
proj.SetBuildProperty(targetGuid, "EMBEDDED_CONTENT_CONTAINS_SWIFT", "NO");
}
//設定したデータを書きこむ
File.WriteAllText(projPath, proj.WriteToString());
}
下記に色々やったことの手法をメモ書き程度ですが残しておきます。
-
ipaファイルの中身を確認する
unzip < App name >.ipa -
zipコマンドでipa化する
zip -r < new app name >.ipa Payload < folder name >
*folder nameは任意 -
MacOSでコピーした際に発生するDS_Storeファイルの削除
これがあると
ITMS-90430: Invalid Swift Support - The file .DS_Store doesn’t
がでるので削除する。
ls- a
このコマンドで確認できる。
find . -name ".DS_Support" | xargs rm
これで特定のカレントディレクトリ以下のフォルダの中身を消せる