0
0

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.

Unity+XcodeでTestFlightへアップロードしようとしたときにはまった話

Last updated at Posted at 2019-08-02

はじめに

普通にビルドすればアップロードされると信じていたが、
悉くはじかれたのでそのときに上げられるようにした対策を残しておく

環境

  • 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

これで特定のカレントディレクトリ以下のフォルダの中身を消せる

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?