|
|
(41 intermediate revisions by 18 users not shown) |
Line 1: |
Line 1: |
| Xcode is ''the'' IDE endorsed by Apple for iPhoneOS development. The latest stable version 4.3. 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/iPhone SDK 3.x and Xcode 4.3.x/iPhone SDK 5.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 with the name “iPhone Developer” 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>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist</tt> (4.2 or below: <tt>/Developer/Platforms/iPhoneOS.platform/Info.plist</tt>)
| |
| * '''3.''' Replace all occurrences of <tt>XCiPhoneOSCodeSignContext</tt> by <tt>XCCodeSignContext</tt>. There are three of them (XCode Version 3.2.4+).
| |
| * '''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 git://git.saurik.com/ldid.git, or just download https://github.com/downloads/rpetrich/ldid/ldid.zip</ref>. Place a copy in <tt>/usr/local/bin</tt>.
| |
| * '''6.''' Create the a Python script <tt>/usr/local/bin/ldid3.py</tt>. Make it executable. Fill it with:
| |
| <source lang="python">
| |
| #!/usr/bin/env python
| |
|
| |
| from sys import argv
| |
| from subprocess import check_call
| |
| from os.path import basename, splitext, join
| |
| from tempfile import NamedTemporaryFile
| |
|
| |
| app = argv[-1]
| |
| obj_path = join(app, splitext(basename(app))[0])
| |
|
| |
| if '-gta' not in argv:
| |
| check_call(['/usr/local/bin/ldid', '-S', obj_path])
| |
| else:
| |
| with NamedTemporaryFile() as f:
| |
| f.write("""
| |
| <!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>
| |
| """)
| |
| check_call(['/usr/local/bin/ldid', '-S' + f.name, obj_path])
| |
| </source>
| |
| * '''7.''' Open iPhoneCodeSign.xcspec.
| |
| ** For Xcode 4.3 the file is at: <tt>/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS Build System Support.xcplugin/Contents/Resources/iPhoneCodeSign.xcspec</tt>
| |
| ** For Xcode 4.2 the file is at: <tt>/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS Build System Support.xcplugin/Contents/Resources/iPhoneCodeSign.xcspec</tt>
| |
| ** For older versions the file is at: <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/ldid3.py"</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. This method only works for iOS 4.0 or above.
| |
|
| |
| * '''10.''' Create a file <tt>/var/mobile/tdmtanf</tt> on the device, to enable Apple's "TDMTANF bypass" in <tt>installd</tt> (warning: doing so will also put you in a sandboxed GameCenter<ref>https://discussions.apple.com/thread/2745420?start=0&tstart=0</ref>).
| |
|
| |
| If you upgrade the firmware, you need to do step 10 again.
| |
|
| |
|
| == References == | | == References == |
| <references/> | | <references/> |
| | |
| | [[Category:Development Tools]] |