Xamarin Forms IPA generation on Jenkins - ios

I'm having some trouble to generate an IPA for my Xamarin Forms iOS project on Jenkins. I follow the documentation (http://developer.xamarin.com/guides/cross-platform/ci/jenkins_walkthrough/) and post a question on the xamarin forums for my problem, but it's really difficult to have an answer there so i'll try here.
I'm able to build the application with mdtool but there isn't any IPA file in my project after the end of Jenkins' job.
I see some discussion on the forum that tell to use the archive method instead of the build for mdtool. But that didn't change anything either.
I also try to use xcrun to create the IPA file after the application build, but i have that kind of error :
error: Unable to copy application 'iOS/bin/iPhone/Release/Application.iOS.app/' into '/var/folders/v2/gnnclzrd2g98zqc89qn204km00007h/T/VXEBXe7WNV/Payload'
There's not a lot of explanation on how the IPA is generated on the documentation so i'd like to have a clarification on that.
Is anyone manage to create an IPA in Jenkins for their iOS Xamarin Forms project ?
If so how do you do it ? I could give you more information about the Jenkins' job i use, ... if necessary.
Regards

I just find an answer after hours of search and it's kinda dumb.
xcrun give me an that error because my app path had a / in the end (like explained in that post Xcrun PackageApplication, failed unable to copy application).
But then i had another error :
error: Unable to create 'iOS/bin/iPhone/Release/volunteer.ipa'
The output option of xcrun need to be an absolute path not a relative one inside the project.
By using an absolute one, the IPA is generated :)

Related

How do I track down this error message "could not find upload server" in Xcode?

I have recently inherited an iOS project within our company. It is written in Objective-C and all of those who have previously worked on it are no longer in the company.
Anytime I use the Product -> Clean Build Folder or Product -> Build I get an error message pop up at the end of the build that says "could not find upload server".
I have searched the code and do not see this anywhere, I have went though the build settings and do not see this anywhere either, and I have went through the build phases and rules and just can't figure out where this message is coming from.
Does anyone have a clue what this error message means or where I could look to figure it out?
The app compiles and builds fine, but I'd like to resolve this issue.
We do have a report upload project within the app so I'm not sure if it's related to that or if Xcode is trying to upload the project to some type of build server somewhere on our network. From some digging around, I was able to learn we used to have a MacMini that did builds but it hasn't been used for years and is no longer online.
Where can I look to find this issue?
I found the issue after searching through GitHub. It seems there was a PostBuild script on the Scheme file which I was not aware existed.

Xcode export localization throws error "Argument list too long"

I've got a very curious error to share regarding Xcode localization process. I will try to share as much detail as legally possible.
From Xcode, I am trying to export an XLIFF file to send to our translators, via "Editor > Export for Localizations". However, this immediately throws error with the message:
The operation couldn't be completed. Argument list too long
This is indeed confusing, as I cannot find a more verbose log anywhere (I have already tried checking my Console.app). So, I spent quite a few time googling – to no avail. I couldn't find similar case like this. The error itself happens only when I am trying to export for localization. I can build and run the app just fine.
Facts
~ $ xcodebuild -version
Xcode 8.2
Build version 8C38
~ $ xcode-select -version
xcode-select version 2347.
~ $ echo $PATH
/Users/david.christiandy/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/david.christiandy/arctools/arcanist/bin:/usr/local/go/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
I am using Xcode 8.2 on macOS Sierra 10.12.5.
The error happens only when I try exporting from localization. This is also true when I run the localization process via xcodebuild -exportLocalizations.
I can build and run the app just fine. (I believe) there's no problem with my header search paths.
Attempts
Thought there was something wrong in the code, so I tried to run the export process (via xcodebuild command) in a CI. Somehow, it's working. For the record, I am using Bitrise CI with the same stack as my system (Xcode 8.2.x, macOS 10.12)
Asked colleagues to run export process on their machines, and they have the same error.
This leads me to think that there must be something wrong with the configuration. So I made a standalone project to confirm that the export process fails consistently. Turns out, it works just fine!
So, the hypothesis I got currently is:
There's probably something wrong in the code, and
There might be tools/software (that most of our iOS engineers installed) that might contribute to the error (since the CI completes just fine).
I don't know why the CI can run the export process just fine, and I don't know when it might suddenly stop functioning (just like our local machines).
Appreciate any help on this matter. Thank you!
I also asked this question on Apple developer forums, here is the link: https://forums.developer.apple.com/thread/86762
“Argument list too long” sounds like E2BIG, which you get when you try to run a child process with a huge argument list (I believe the current limit is 256 KiB). I suspect that Export for Localizations is running some sort of command line tool to do that work (probably the extractLocStrings tool, which you’ll find lurking within Xcode’s app bundle) and passing it full paths to each of the files in your project. Depending on how many files you have and how long those paths are, it’s easy to run into problems like this.
One of the ‘fun’ things about bugs like this is that they are dependent on where you place your project. Things might work if the project is at the top of your home directory but fail if it’s nested deep inside a subdirectory.
That also suggests a potential workaround, namely, to move your project further up in the directory hierarchy.
Finally, you should definitely file a bug about this. I believe we’ve seen this before (r. 30703294) but your report will help reinforce that this is causing problems for developers in the field. Please post your bug number, just for the record.
Several days ago before I read this answer, I managed to get the export working by deleting some folders via Xcode (remove references only). Initially I suspected that there's an invalid format within the folders that I deleted, but when I tried deleting other folders, the export process works just fine.
I also tried exporting strings using Xcode 9, and I didn't encounter the problem. So hopefully this bug is only for Xcode 8.3.3 and below.

IOS Broadcast Framework

Can someone point me in the right direction to find the tools to be able to build a really simple broadcasting app on ios.
I am looking to mimic what has been done here.
Been googling around for a while now and can't really find anything to get me started.
Found this:
http://olobonsoft.com/products
Can anyone help or tried to do something similar?
Never try but I know this project (for cine.io) on Github, check source code of project, probably will be not different that what you're looking for.
Example app : https://github.com/cine-io/cineio-broadcast-ios-example-app
Sample iOS application to demonstrate broadcasting and playback using
the cine.io Broadcast iOS SDK.
How to Use
Clone the repository. Create a cineio-settings.plist file based on the
SAMPLE-cineio- settings.plist file. You'll need to create a (free)
account at cine.io. Change into the Example directory: cd Example
Install the necessary CocoaPods: pod install Build and run the project
as you usually would, making sure to use the .xcworkspace file and not
the .xcproject file when building using xcodebuild or when opening
with Xcode.
project : https://github.com/cine-io/cineio-broadcast-ios

What is the exact build process of an ios app in XCode?

I am making an iOS app and I wanted to know what the build process is exactly. I don't mean want something like, it compiles, then it links and then its done. I want to know exactly what each step does like android has build steps viz. resource manager, pre-compiler, java builder, package builder, How are these steps taken care of in IOS. Secondly, what is the importance of .app file which is created with xcodebuild command to eventually create .ipa file.
Here are some links that might help:
Joshua Davies walks through building a simple Hello World app outside of Xcode:
http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art024
A .ipa file is just a zip archive with a predefined structure. The iPhone wiki describes it well:
http://theiphonewiki.com/wiki/IPA_File_Format

Command line tool to analyze a .app or .ipa file

In a script I'm writing, I want a way to be able to analyze a .ipa or .app file to determine some of its internals, such as which SDK it was built with. Is there a command line tool that allows you to do this? If so, what other information can you get from it?
Have a look at this: https://github.com/apperian/iOS-checkIPA (it's a tool named iOS IPA Validator, originally by G. Gold, maintained by James Seibel)
It helped me.
This also looks interested: https://github.com/sjmulder/ipa

Resources