Friday, February 8, 2013

How to put Applications on Jailbroken iPhone

How to put Applications on Jailbroken iPhone

Need:
  • Jailbroken iPhone(with OpenSSH from Cydia)
  • USB cable
  • MacbookPro(for Xcode) 
  • uikittools
Tested with:

Step 1 - make sure Xcode is closed - stop automatic signing


First off you need to edit a configuration file within Xcode:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist

Make a backup just in case you mess up:

sudo cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.BACK

Edit the file like:

sudo nano /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist

To save:
Control + X  then Y

Change
<key>CODE_SIGNING_REQUIRED</key>
<string>YES</string>
<key>CODE_SIGN_ENTITLEMENTS</key>
<string>YES</string>

to
<key>CODE_SIGNING_REQUIRED</key>
<string>NO</string>
<key>CODE_SIGN_ENTITLEMENTS</key>
<string>NO</string>


Step 2 - create the TCP connection between your Macbook and your iPhone


Go to
http://cgit.sukimashita.com/usbmuxd.git/

Download the latest, here:
http://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.bz2

Use a GUI tool or simply extract in Terminal:
tar -xjf usbmuxd-1.0.8.tar.bz2

cd to the "python-client" folder

Open Terminal and run to test the connection, Control + C to quit:
python tcprelay.py -t 22:2222

Now you can run these commands in the future:
ssh root@localhost -p 2222 - access the phone
scp -P 2222 root@localhost - send files to the phone


Step 3 - time to open Xcode


Click on your Project > Build Settings > Go to Code Signing > Code Signing Identity > Make sure it says "Don't sign code"

Make sure you set your target to "iOS Device"

Go to Product > Build for > Archiving


Step 4 - time to push your application to your jailbroken iPhone!


Example project name: NavBar

After building your application, its time to push it your phone, you need to find the path to your application in order to send it to your phone:

Open terminal again:

scp -r -P 2222 "/Users/noname/Library/Developer/Xcode/DerivedData/NavBar-gekkahxyyaepvgdkfkduwhlmqvqg/Build/Products/Release-iphoneos/NavBar.app" root@localhost:/Applications/

When prompted for the password, make sure your type "alpine"

User: root (already specified)
Password: alpine

After that is quickly transferred, Control + C to quit and then update your iPhone with:

ssh -p 2222 mobile@localhost uicache

User: mobile (already specified)
Password: alpine

To remove everything:

ssh -p 2222 root@localhost rm -rf /Applications/NavBar.app && ssh -p 2222 mobile@localhost uicache

By now you should see the application pop up on your home screen!