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

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

Related

Xenmobile IOS wrapping

I'm Trying to wrap a very simple Objective-C app all it does is display the Username to the screen if it's inside Citrix managed space otherwise it should write that it's not inside Citrix managed space.
However when I try to wrap it after Exporting the IPA file from Xcode. then I try to wrap that IPA file with the MDX toolkit. and this is what happens..
I have no Idea what to do to make this work ? I do not believe I've done any wrapping before this point. and I've just followed a tutorial from Citrix on youtube the newest one I could find.
it's called "Tutorial - Develop with Citrix WorxSDK part 1"
Edit
forgot to mention I'm using
Xcode 8.2.1
MDX toolkit 10.4.10
Newest Java jdk I could pull
I found the problem. MDX 10.4.10 is in my setup trying to wrap at compile time as I didn't supply the script in build phases it didn't know how to create the mdx file. which resulted in simply creating only the IPA file. The script creates a MDX file that I then later can imbed the IPA file into. this is the script that soleved it all for me:
export APPTYPE="Enterprise"
export STOREURL="http://example.com"
export DATE=`date +%Y-%m-%d_%H-%M-%S`
export POLICYFILE="/Path/to/Policyfile.xml"
/Applications/Citrix/MDXToolkit/CGAppCLPrepTool SdkPrep -in "${CODESIGNING_FOLDER_PATH}" -out "/Users/Udvikling/Documents/Debug Builds/${EXECUTABLE_NAME}_${DATE}.mdx" -storeUrl "${STOREURL}" -appIdPrefix "ABCDEFGH" -policyXML "${POLICYFILE}" -appType "${APPTYPE}" -entitlements "${CODE_SIGN_ENTITLEMENTS}"

Xamarin Forms IPA generation on Jenkins

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 :)

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

iOS: How to modify .app file?

I've to de-compile iOS .app file and then insert my code and then re-package back to ipa file.
Can you please suggest some pointers how to do it?
You simply can't do this.
Once the app is compiled down to machine code, the best you can get from reverse engineering it is just assembly and unless you are willing to write your fix in assembly I don't see how you are going to integrate your code.
Also the code signing will be corrupted by doing this as well.
Unless you have valid provisioning set up on your machine you can't repackage the app with the original code signing.
Try to get the source or similar source to write an app with the functionality you need.
Yes you can if the device is jailbroken and the signature check is removed.
Here there is one case:
Is it possible to edit and recompile an iOS Binary?
In the reply they suggest that the modifications have been taken directly on the binary (by replacing some functions with other of the same size). However, I believe that you can do more advanced things.
You could, for instance, include the assembly of the application into your own objective-c code using XCode:
Compiling Assembly (.S) file alongside iPhone project
Or directly compile the modified assembly into the binary (mach-o) and then repackage.
How to create an iPhone mach-o file?
Maybe GNU ARM or LLVM toolchain can assit you on doing this: Compile, Assemble and Disassemble Using the LLVM Tool Chain
There are just some approaches which I'm currently investigating on. It is not straightforward, so any other know-how on the topic will be very appreciated.

QMake and a .pro file

I've downloaded a package and am trying to build/install it. The project's wiki page has a command that looks like
qmake VAR=/path/to/something/ project.pro
It says that this command should tell qmake to generate a make file. Instead, I'm getting
qmake: Nothing to be done for `project.pro'.
Why is qmake not generating the make file like it's supposed to?
Without knowing the project in questions or the contents of the project (.pro) file, it is difficult to diagnose. One possibility is that qmake was already run, or that the files it is to generate are included with your download. In these circumstances, there really is nothing to be done for said project.
As a side note, may I recommend downloading "Qt Creator" and opening the project file in there? Qt Creator tends to make Qt development and project building a lot easier.
I just answered my own question... apparently there is more than one qmake. On my system, we're using a qmake: distributed parallel make, scheduling by Grid Engine. I found /etc/alternatives/qmake which is the QT qmake...

Resources