Xcode: Difference between revisions

From iPhone Development Wiki
No edit summary
(Entire page has been obsolete since iOS 9)
Tag: Replaced
 
(53 intermediate revisions by 23 users not shown)
Line 1: Line 1:
Xcode is ''the'' IDE endorsed by Apple for iPhoneOS development. The latest version 3.2.1. It comes with the official iPhone SDK.
'''Xcode''' is ''the'' IDE endorsed by Apple for iOS development. The latest stable version is 13.4.1. It comes with the official iOS SDK.  


== Developing without Provisioning Profile ==
Since iOS 9 / XCode 7, it is now possible by default to deploy and develop apps for your device without a $99/year developer account.
To develop for the devices one should first obtain a provisioning profile by joining the iPhone Developer Program (which costs $99). However, some simple tricks can be used to make Xcode compile and debug on jailbroken devices without provisioning profiles.


These steps are only tested for Xcode 3.2.x and iPhone SDK 3.x. If for some reason you are stuck with Xcode 3.1.x, try [http://iphonesdkdev.blogspot.com/2009/06/use-xcode-312-to-build-sdk-30-app-to-30.html].
For bypassing restrictions on 7 day signing windows, see [[AppSync Unified]]


=== Compiling ===
For notes about using Logos and Theos with Xcode, see [[Xcode Logos]].  
Performing these steps allows you to use Xcode to compile any applications and deploy it yourself.


* '''1.''' Create a self-signed code-signing certificate on the “login” (default) keychain using Keychain Access<ref>Procedures can be found in http://developer.apple.com/mac/library/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html</ref>.
App Store Download Link: https://apps.apple.com/us/app/xcode/id497799835?mt=12
* '''2.''' Open <tt>/Developer/Platforms/iPhoneOS.platform/Info.plist</tt>
* '''3.''' Replace all occurrences of <tt>XCiPhoneOSCodeSignContext</tt> by <tt>XCCodeSignContext</tt>. There should be two of them, one around line 46 and another around line 79.
* '''4.''' Save the file and restart Xcode.


If you upgrade the iPhone SDK, you need to perform steps 2 – 4 again.
The latest stable and beta versions can also be downloaded directly from:
https://developer.apple.com/download/applications/


=== Replacing codesign with ldid ===
Note this page also requires signing in with your Apple ID.
These steps are necessary for debugging, since the entitlement can no longer be inserted by performing steps 1 – 4. To actually debug your app, make sure you have add <tt>-gta</tt> to '''Other Code Signing Flags''' of your target.


* '''5.''' Make sure you have ldid on your Mac<ref>If not, you can install from Fink unstable, compile it from http://svn.telesphoreo.org/trunk/data/ldid/, or just download http://code.google.com/p/networkpx/downloads/detail?name=ldid</ref>. Place a copy in <tt>/usr/local/bin</tt>.
* '''6.''' Create the file /usr/local/bin/ldid2. Make it executable. Fill it with:
<source lang="bash">
#!/bin/sh
hasGTA=`expr "$*" : '.* -gta .*'`;
objpath=${!#}/`expr ${!#} : '.*/\([^/]\{1,\}\)\.app$'`;
if [[ $hasGTA == 0 ]]; then
/usr/local/bin/ldid -S $objpath;
else
TF=`mktemp -t x`;
echo "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"><plist version=\"1.0\"><dict><key>get-task-allow</key><true/></dict></plist>" > $TF;
/usr/local/bin/ldid -S$TF $objpath;
rm $TF;
fi;
</source>
* '''7.''' Open <tt>/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS Build System Support.xcplugin/Contents/Resources/iPhoneCodeSign.xcspec</tt>
* '''8.''' Replace the line saying <tt>CommandLine = "/usr/bin/codesign"</tt> with <tt>CommandLine = "/usr/local/bin/ldid2"</tt>. It should be around line 12.
* '''9.''' Save the file and restart Xcode.
If you upgrade the iPhone SDK, you need to perform steps 8 – 9 again.
=== Allowing apps with invalid signatures to be installed ===
These steps allow you to install an unsigned app to the device. Embarrassedly, like all other MobileInstallation/installd patches, this allows pirated apps to be installed via iTunes as well.
* '''10.''' Copy <tt>/usr/libexec/installd</tt> from your device to your Mac.
* '''11.''' Run this:
install_name_tool -change /usr/lib/libmis.dylib /usr/lib/libmiss.dylib installd
ldid -S installd
* '''12.''' Create a file named <tt>libmiss.c</tt>, and enter these into the file:
<source lang="c">extern int MISValidateSignature() { return 0; }</source>
* '''13.''' Compile <tt>libmiss.c</tt> to <tt>libmiss.dylib</tt> with <tt>gcc</tt> targeting iPhone:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2                  \
  -arch armv6                                                                    \
  -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk \
  -dynamiclib                                                                    \
  -install_name /usr/lib/libmiss.dylib                                            \
  -current_version 1                                                              \
  -compatibility_version 1                                                        \
  -Wl,-reexport-lmis                                                              \
  -flat_namespace                                                                \
  -o libmiss.dylib                                                                \
  libmiss.c
ldid -S libmiss.dylib
* '''14.''' Copy the new <tt>installd</tt> to the device's <tt>/usr/libexec</tt>, and the <tt>libmiss.dylib</tt> to the device's <tt>/usr/lib</tt>.
If you upgrade the firmware, you need to do step 14 again.


== References ==
== References ==
<references/>
<references/>
* The original article — http://networkpx.blogspot.com/2009/09/compiling-iphoneos-31-apps-with-xcode.html
 
[[Category:Development Tools]]

Latest revision as of 05:56, 30 June 2022

Xcode is the IDE endorsed by Apple for iOS development. The latest stable version is 13.4.1. It comes with the official iOS SDK.

Since iOS 9 / XCode 7, it is now possible by default to deploy and develop apps for your device without a $99/year developer account.

For bypassing restrictions on 7 day signing windows, see AppSync Unified

For notes about using Logos and Theos with Xcode, see Xcode Logos.

App Store Download Link: https://apps.apple.com/us/app/xcode/id497799835?mt=12

The latest stable and beta versions can also be downloaded directly from: https://developer.apple.com/download/applications/

Note this page also requires signing in with your Apple ID.


References