How to generate .ipa file from command line with watchkit app

I have a jenkins instance that does a release build using xcodebuild. I then have a script (on Jenkins) to create the .ipa file using xcrun. this worked fine for us until now. Now we have a watchkit app and the .ipa file that is created from this process is not the same as the one that is created if you do an archive build and export it from Xcode.

The exported .ipa from Xcode has a ‘Payload’ folder, a ‘Symbols’ folder (probably optional) and a ‘WatchKitSupport’ folder. The ipa generated from the xcrun doesnt have the ‘Symbols’ or the ‘WatchKitSupport’ folder. See more about the structure here : https://stackoverflow.com/a/29400301/327386

  • How to organize large project in several GIT repositories?
  • Gradle: How to perform git pull through gradle?
  • vNext build on TFS 2015 hangs on MSBuild step and produces no log files
  • Configure a Jenkins job to select an application and trunk/tags/branches from SVN
  • Jenkins: Get build numbers range on a particular day
  • netbeans cordova- error while building my project
  • I saw this post on SO : https://stackoverflow.com/a/19856005/327386 that has commands to archive and export the .ipa build (similar to the Xcode process) but even that didn’t create the new folders in question.

    Does anyone know if there is a way to use the command line tools to create an .ipa file that is equivalent to the one created by Xcode? I didn’t find any official documentation on this

  • Export SVN repository over FTP to a remote server
  • Cocoapods project.pbxproj merge conflicts
  • svn doesn't commit .o files, but why?
  • fatal error: Could not create a path to the bundle
  • Naive Git setup, Is it possible to untrack files which are listed on my .gitignore?
  • Using diffstat with subversion?
  • 2 Solutions collect form web for “How to generate .ipa file from command line with watchkit app”

    Exact problem

    xcodebuild -exportArchive cannot make valid IPA with Watch Extension, it’s an Apple bug (http://openradar.appspot.com/20898925).

    Official (Xcode 7) solution

    Apple solved this problem in Xcode 7 with the -exportOptionsPlist flag of the xcodebuild -exportArchive command. You can find more details about it in this article.

    Not-official (Xcode 6) solutions

    There are workarounds for the problem. If it’s urgent then you can play with them, but I couldn’t find a workaround which was working for everybody (based on forum discussions).

    1. Adding WatchKitSupport and Symbols folders. More details here and here. It was not working for me.
    2. Resigning the whole application. More details here. It’s hacky, but working better than the previously mentioned solution.

    I too faced the same issue. The command line tool exportArchive misses the required Watchkit support folders while exporting the archive to ipa. I tried figured it out using the below shell script.

    https://gist.github.com/phatblat/6eb8895e2202f796960e

    You can call the above shellscript from your Jenkins buildscript like below.

    <exec executable="/bin/bash" failonerror="true">
                <arg value="${root.dir}/buildscripts/package-ida.sh" />
                <arg value="${build.dir}/APP_NAME.xcarchive" />
                <arg value="${build.dir}/APP_NAME.ipa" />
            </exec>
    

    Now You will be able to see the WatchKit support folder in your ipa payload and your appstore app validation will also get succeeded using the generated Jenkins build.

    Git Baby is a git and github fan, let's start git clone.