Skip to main content

Building xCode project and generating IPA file using Ant

Following is the procedure to generate IPA file.

Under “project settings” change “derived data location” to “project-relative”, and make it "DerivedData/dist/". If you want any other location, change the same in the code. This will be the location where ".app" file and all other project info is stored.

Set the values to the fields in CAPITAL LETTERS, and save the file as build.xml

-----------------------------------------------
<project default="buildAndPackage" basedir="." name="APP-FOLDER">
<property name="local.projectPath" location="WHERE THE PROJECT IS LOCATED" />
<property name="local.ipaPath" location="WHERE TO SAVE THE IPA FILE" />

<property name="app.id" value="APP-ID" />
<property name="scheme" value="APP-SCHEME(MOSTLY APP-ID)" />
<property name="version" value="VERSION-NO" />
<property name="distributorName" value="NAME USED IN IOS PROVISIONING PORTAL" />

<property name="ProvisioningProfile" location="WHERE YOU KEPT THE FILE" />
<property name="configuration" value="Release/debug/AdHocDistribution/AppStore SELECT THE APPROPRIATE" />

<target name="buildAndPackage">
<exec executable="/Developer/usr/bin/xcodebuild">
<arg value="-project" />
<arg value="${local.projectPath}/${app.id}.xcodeproj" />
<arg value="-scheme" />
<arg value="${scheme}" />
<arg value="-configuration" />
<arg value="${configuration}" />
<arg value="clean" />
<arg value="build" />
</exec>

<exec executable="xcrun">
<arg value="-sdk" />
<arg value="iphoneos" />
<arg value="PackageApplication" />
<arg value="-v" />
<arg value="${local.projectPath}/DerivedData/dist/Products/${configuration}-iphoneos/${app.id}.app" />
<arg value="-o" />
<arg value="${local.ipaPath}/${app.id}-${version}.ipa" />
<arg value="--sign" />
<arg value="iPhone Distribution: ${distributorName}" />
<arg value="--embed" />
<arg value="${ProvisioningProfile}" />
</exec>
</target>
</project>

--------------------------------

Then run it from command line by typing "ant"

Comments

Popular posts from this blog

Java: Use BigInteger in for-loop

In my previous post , I mentioned a way to handle large integers by using BigInteger. Now I'm going to provide a very important usage of it. We often use for-loop. So here is the way to use it: Ordinary integers: for(int i = 1; i <= n; i++) {  //Task to do } BigInteger: for (BigInteger bi = BigInteger.valueOf(1);                 bi.compareTo(n) <= 0;                 bi = bi.add(BigInteger.ONE)) { //Task to do } here n is a BigInteger variable.

OS X 10.8 Mountain Lion bootable USB (without MAC)

Download the raw file from here . How to use: 1 - Copy the .raw file to an USB stick using  SUSE Studio Image Writer . If you have error during copy, eject and re-connect the pen drive. When Windows asks if you want to format it, cancel and run Image Writer again. If the problem persists, disable your anti-virus software, it may be blocking raw write to the drive. Another Image Writer for Windows, if SUSE doesn't work https://launchpad.net/win32-image-writer/+download 2 - Boot the USB drive and install. If you need, type  boot options , for example: -v (verbose boot) [default] -x (safe) -s (single user) GraphicsEnabler=yes (enable graphics card drivers) [default] USBBusFix=yes (fix problems with USB devices) npci=0x2000 (use if boot stops at "PCI configuration begin") cpus=1 If you need, use  TransMac  to remove kexts which are causing problems (System/Library/Extensions) and use the flag -f (ignore caches) at boot, or remove /System/Libra...

Anagram search from a file

// All the words are in the file Dictionary.txt import java.io.*; import java.util.*; public class Anag {     static String[] words;     public static void main(String args[]) throws IOException     {         Hashtable<String, List> ht;         try {             FileInputStream fstream = new FileInputStream("Dictionary.txt");             DataInputStream in = new DataInputStream(fstream);             BufferedReader br = new BufferedReader(new InputStreamReader(in));             List<String> lines = new ArrayList<String>();             String ele;             while ((ele = br.readLine...