Skip to content
This repository has been archived by the owner on Jan 5, 2022. It is now read-only.

incremental transfer #18

Open
wants to merge 39 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
9423d1b
Fixed bug in Makefile
ntherning Apr 24, 2012
976f852
Added -u/--unbuffered option which disables buffering of stdout.
ntherning Apr 24, 2012
e2bb4a2
Changed gdb command line arguments (changed --arch to amrv7f and adde…
ntherning Apr 26, 2012
44a529b
Falling back to getpwuid() to determine user's home directory if HOME…
ntherning Apr 26, 2012
bdff62f
The child process and gdb process will now be killed when the parent …
ntherning Apr 27, 2012
9f69369
Add even more search paths for Xcode. Added a command-line argument …
Sep 13, 2012
4885b97
Updated makefile to tolerate different xcode paths better.
Sep 13, 2012
05f934d
Updated the readme.
Sep 13, 2012
24ee594
Combine various commits from different forks (use xcode-select, add u…
Sep 25, 2012
25f7952
Merge in changes from ntherning (some changes already applied manually).
Sep 25, 2012
9faf60c
Add function to find a file within Xcode, searching several locations…
Sep 26, 2012
3b1a23d
Merge in unprompted's fork, updates Makefile and adds -x option.
Sep 26, 2012
add97f6
Remove incorrect comments.
Sep 26, 2012
d4ebc90
Add back in searching for DeviceSupport in the home directory as it i…
Sep 27, 2012
ef6d787
Build with iOS 6.0 SDK for iOS 5.1.
unprompted Sep 28, 2012
114dc35
Fixed some warnings.
unprompted Sep 28, 2012
cb0619d
Removed "-x" option. It only existed because I hadn't written the co…
unprompted Sep 28, 2012
8be8529
Made extra arguments to gdb optional and stripped off recent changes …
unprompted Sep 28, 2012
cdf732d
Add apple.py, a reimplementation of fruitstrap.c in Python.
unprompted Feb 16, 2013
8171d77
Add Windows support for most operations.
unprompted Feb 17, 2013
21baabd
Connect and disconnect as needed to avoid timing out.
unprompted Feb 18, 2013
f78022e
Slightly better debugserver packet parsing.
unprompted Feb 18, 2013
f597144
Typo.
unprompted Feb 20, 2013
1d924fe
Fixed a GDB packet parsing bug.
unprompted Feb 23, 2013
80a38bb
Merge branch 'master' of git://github.com/ghughes/fruitstrap
ntherning Feb 27, 2013
9cbdf31
Merge branch 'master' of git://github.com/unprompted/fruitstrap
ntherning Feb 27, 2013
44dd590
Changed IOS_SDK to 6.1
ntherning Feb 28, 2013
9311de5
Discovery of DeviceSupport path can now cope with build numbers in th…
ntherning Feb 28, 2013
ea4b12f
Changed command line options help to multiline and added descriptions…
ntherning Feb 28, 2013
138997a
Added --nostart command line option to prevent GDB from starting the …
ntherning Feb 28, 2013
0a18edf
Don't use setpgpid() to set child's process group since it seems to c…
ntherning Feb 28, 2013
71e3f57
Fixed problems in optstring passed to getopt_long(). Some of the opti…
ntherning Feb 28, 2013
1ad0d81
Disable buffering of stderr too when --unbuffered is specified.
ntherning Feb 28, 2013
1736aea
Don't load symbols from dynamic libraries at startup. If we do execut…
ntherning Feb 28, 2013
03fedfa
Fixed type in options (gbdargs => gdbargs).
ntherning Feb 28, 2013
f61cbae
Proper output of ds_path and img_path when verbose=true.
ntherning Feb 28, 2013
c6e3779
Removed all loading of shared libraries to speed up gdb startup.
ntherning Feb 28, 2013
83bffb1
Removed killpg() call since it potentially also kills the parent proc…
ntherning Apr 19, 2013
81e7bc6
SIGINT (CRTL-C) signals now sends SIGSTOP to the gdb process instead …
ntherning May 9, 2013
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
IOS_CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc
IOS_CC = xcrun -sdk iphoneos clang
IOS_MIN_OS = 5.1
IOS_SDK = 6.1

all: demo.app fruitstrap

Expand All @@ -9,16 +11,16 @@ demo.app: demo Info.plist
codesign -f -s "iPhone Developer" --entitlements Entitlements.plist demo.app

demo: demo.c
$(IOS_CC) -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -framework CoreFoundation -o demo demo.c
$(IOS_CC) -isysroot `xcode-select -print-path`/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IOS_SDK).sdk -mios-version-min=$(IOS_MIN_OS) -arch armv7 -framework CoreFoundation -o demo demo.c

fruitstrap: fruitstrap.c
gcc -o fruitstrap -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks fruitstrap.c
clang -o fruitstrap -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks fruitstrap.c

install: all
./fruitstrap demo.app
./fruitstrap -b demo.app

debug: all
./fruitstrap -d demo.app
./fruitstrap -d -b demo.app

clean:
rm -rf *.app demo fruitstrap
rm -rf *.app demo fruitstrap
7 changes: 6 additions & 1 deletion MobileDevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,11 @@ void AMDAddLogFileDescriptor(int fd);
//kern_return_t AMDeviceSendMessage(service_conn_t socket, void *unused, CFPropertyListRef plist);
//kern_return_t AMDeviceReceiveMessage(service_conn_t socket, CFDictionaryRef options, CFPropertyListRef * result);

typedef int (*am_device_install_application_callback)(CFDictionaryRef, int);

mach_error_t AMDeviceInstallApplication(service_conn_t socket, CFStringRef path, CFDictionaryRef options, am_device_install_application_callback callback, void *user);
mach_error_t AMDeviceTransferApplication(service_conn_t socket, CFStringRef path, CFDictionaryRef options, am_device_install_application_callback callbackj, void *user);

/* ----------------------------------------------------------------------------
* Semi-private routines
* ------------------------------------------------------------------------- */
Expand Down Expand Up @@ -486,4 +491,4 @@ typedef unsigned int (*t_performOperation)(struct am_restore_device *rdev,
}
#endif

#endif
#endif
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
## This project is no longer maintained.

fruitstrap
==========
Install and debug iPhone apps without using Xcode. Designed to work on unjailbroken devices.

## Requirements

* Mac OS X. Tested on Snow Leopard only.
* You need to have a valid iPhone development certificate installed.
* Mac OS X. Tested on Lion/Mountain Lion.
* You need to have a valid iPhone development certificate installed (or at least a correctly signed iOS app).
* Xcode must be installed, along with the SDK for your iOS version.

## Usage

* `fruitstrap [-d] -b <app> [device_id]`
* `fruitstrap [-d/--debug] [-i/--id device_id] -b/--bundle <app> [-a/--args arguments] [-t/--timeout timeout(seconds)] [-u/--unbuffered] [-g/--gdbargs gdb_arguments]`
* Optional `-d` flag launches a remote GDB session after the app has been installed.
* `<app>` must be an iPhone application bundle, *not* an IPA.
* Optional `device_id`; useful when you have more than one iPhone/iPad connected.
* Optional device id, useful when you have more than one iPhone/iPad connected to your computer
* `<arguments>` are passed as argv to the running app.
* `<gdb_arguments>` are passed to gdb.

## Demo

Expand Down
Loading