Compare commits
94 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4346b331b7 | ||
|
|
baa524eda5 | ||
|
|
66ca97ef12 | ||
|
|
e8bbb96de2 | ||
|
|
928635e44f | ||
|
|
99efb11c3d | ||
|
|
b4b17cc722 | ||
|
|
2ed9a17914 | ||
|
|
feb51d582a | ||
|
|
d7cccae1ad | ||
|
|
9871c759e0 | ||
|
|
956e925f97 | ||
|
|
c769f3cf58 | ||
|
|
440454fc5a | ||
|
|
c4cd7b4a55 | ||
|
|
d688e29975 | ||
|
|
7b07c2e28d | ||
|
|
0159cfc194 | ||
|
|
cbba8a4328 | ||
|
|
3a57b33e8f | ||
|
|
fd12c317b7 | ||
|
|
ecb228aad4 | ||
|
|
3555b1222c | ||
|
|
3fef0a5600 | ||
|
|
ca29173c80 | ||
|
|
e57a4da108 | ||
|
|
a9e96416a8 | ||
|
|
922f8483a7 | ||
|
|
f0ae11a93f | ||
|
|
c0988f07e5 | ||
|
|
a36b169782 | ||
|
|
551cdc5804 | ||
|
|
94d56d74c4 | ||
|
|
f17fd4c73a | ||
|
|
28ceb4733f | ||
|
|
6a8ad1e899 | ||
|
|
3ee31bc677 | ||
|
|
fccfde865a | ||
|
|
f6b4c3f951 | ||
|
|
b1c717ebd8 | ||
|
|
1220cac6e4 | ||
|
|
6f65bb687e | ||
|
|
7af1a9d79b | ||
|
|
23ea3b7097 | ||
|
|
9909fb854c | ||
|
|
0320381c67 | ||
|
|
612c3561fd | ||
|
|
59904aa4c1 | ||
|
|
9f6b41519b | ||
|
|
5d2166fcef | ||
|
|
6ce22c2adc | ||
|
|
ede5d2542d | ||
|
|
6b7b31d54a | ||
|
|
8d60757e77 | ||
|
|
2f9fb4304a | ||
|
|
a6e94923cf | ||
|
|
342965c16a | ||
|
|
4ce3554561 | ||
|
|
ab39342b0f | ||
|
|
2a1844500b | ||
|
|
5e7420502b | ||
|
|
545521954b | ||
|
|
d6216760e4 | ||
|
|
0390522194 | ||
|
|
ca2e7a3c75 | ||
|
|
ed7c70aa59 | ||
|
|
093b4b3c9a | ||
|
|
4d58838ef1 | ||
|
|
d10562c501 | ||
|
|
99dba4e58c | ||
|
|
bf58b61561 | ||
|
|
d2aee71a92 | ||
|
|
92f6238bba | ||
|
|
6aa7b57014 | ||
|
|
55d076b805 | ||
|
|
3756385651 | ||
|
|
adc8a5b9c2 | ||
|
|
bb25caf586 | ||
|
|
75820a0979 | ||
|
|
16f52589db | ||
|
|
21c8dc9cf5 | ||
|
|
34540ce545 | ||
|
|
7b834b0e31 | ||
|
|
7ac9cdb107 | ||
|
|
cf9d024a2b | ||
|
|
4d4735e505 | ||
|
|
2c9ea8f16e | ||
|
|
5eb12202b2 | ||
|
|
307a5f9452 | ||
|
|
835e161f66 | ||
|
|
73f30fdfed | ||
|
|
be506a9f7f | ||
|
|
bc1bb0d320 | ||
|
|
7d997b89c7 |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -1,6 +1,6 @@
|
||||
demo
|
||||
demo.app
|
||||
ios-deploy
|
||||
ios-deploy.dSYM
|
||||
build/*
|
||||
node_modules/*
|
||||
/.DS_Store
|
||||
*~
|
||||
src/scripts/lldb.pyc
|
||||
src/ios-deploy/lldb.py.h
|
||||
|
||||
@@ -23,6 +23,8 @@ Please run the commands below in your Terminal.app and include it in the issue:
|
||||
```
|
||||
Also include **command line arguments** you used for ios-deploy.
|
||||
|
||||
Don't forget to check out the [El Capitan](https://github.com/phonegap/ios-deploy/blob/master/README.md#os-x-1011-el-capitan) section of the [README](https://github.com/phonegap/ios-deploy/blob/master/README.md) before filing that issue!
|
||||
|
||||
|
||||
## Sending a Pull Request
|
||||
|
||||
|
||||
6
LICENSE
6
LICENSE
@@ -1,2 +1,8 @@
|
||||
ios-deploy is available under the provisions of the GNU General Public License,
|
||||
version 3 (or later), available here: http://www.gnu.org/licenses/gpl-3.0.html
|
||||
|
||||
|
||||
Error codes used for error messages were taken from SDMMobileDevice framework,
|
||||
originally reverse engineered by Sam Marshall. SDMMobileDevice is distributed
|
||||
under BSD 3-Clause license and is available here:
|
||||
https://github.com/samdmarshall/SDMMobileDevice
|
||||
|
||||
35
Makefile
35
Makefile
@@ -1,35 +0,0 @@
|
||||
IOS_SDK_VERSION = 8.3
|
||||
|
||||
IOS_CC = gcc -ObjC
|
||||
DEVICE_SUPPORT = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/DeviceSupport
|
||||
IOS_SDK = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IOS_SDK_VERSION).sdk
|
||||
|
||||
all: clean ios-deploy demo.app
|
||||
|
||||
demo.app: demo Info.plist
|
||||
mkdir -p demo.app
|
||||
cp demo demo.app/
|
||||
cp Info.plist ResourceRules.plist demo.app/
|
||||
codesign -f -s "iPhone Developer" --entitlements Entitlements.plist demo.app
|
||||
|
||||
demo: demo.c
|
||||
$(IOS_CC) -g -arch armv7 -isysroot $(IOS_SDK) -framework CoreFoundation -o demo demo.c
|
||||
|
||||
ios-deploy: clean ios-deploy.c
|
||||
$(IOS_CC) -g -o ios-deploy -framework Foundation -framework CoreFoundation -framework MobileDevice -F/System/Library/PrivateFrameworks ios-deploy.c
|
||||
|
||||
symlink:
|
||||
cd $(DEVICE_SUPPORT); ln -sfn "`find . -type d -maxdepth 1 -exec basename {} \; | tail -1`" Latest
|
||||
|
||||
install: symlink ios-deploy
|
||||
mkdir -p $(prefix)/bin
|
||||
cp ios-deploy $(prefix)/bin
|
||||
|
||||
uninstall:
|
||||
rm $(prefix)/bin/ios-deploy
|
||||
|
||||
debug: all
|
||||
./ios-deploy --debug --bundle demo.app
|
||||
|
||||
clean:
|
||||
@rm -rf *.app demo ios-deploy
|
||||
84
README.md
84
README.md
@@ -4,9 +4,9 @@ Install and debug iOS apps without using Xcode. Designed to work on un-jailbroke
|
||||
|
||||
## Requirements
|
||||
|
||||
* Mac OS X. Tested on 10.10 Yosemite and iOS 8.3
|
||||
* Mac OS X. Tested on 10.11 El Capitan and iOS 9.0
|
||||
* You need to have a valid iOS Development certificate installed.
|
||||
* Xcode 6 or greater should be installed
|
||||
* Xcode 6.4 or greater should be installed
|
||||
|
||||
## Roadmap
|
||||
|
||||
@@ -32,42 +32,59 @@ Now install ios-deploy with the [node.js](https://nodejs.org) package manager:
|
||||
npm install -g ios-deploy
|
||||
```
|
||||
|
||||
To install from source:
|
||||
To build from source:
|
||||
|
||||
```
|
||||
make install prefix=/usr/local
|
||||
xcodebuild
|
||||
```
|
||||
|
||||
This will install ios-deploy in the `bin` folder of `/usr/local`, i.e. `/usr/local/bin`
|
||||
This will build `ios-deploy` into the `build/Release` folder.
|
||||
|
||||
## Testing
|
||||
|
||||
Run:
|
||||
|
||||
```
|
||||
npm install && npm test
|
||||
```
|
||||
|
||||
### OS X 10.11 El Capitan
|
||||
|
||||
If you are *not* using a node version manager like [nvm](https://github.com/creationix/nvm) or [n](https://github.com/tj/n), you may have to do either of these three things below when under El Capitan:
|
||||
|
||||
1. Add the `--unsafe-perm=true` flag when installing ios-deploy
|
||||
2. Add the `--allow-root` flag when installing ios-deploy
|
||||
3. Ensure the `nobody` user has write access to `/usr/local/lib/node_modules/ios-deploy/ios-deploy`
|
||||
|
||||
## Usage
|
||||
|
||||
Usage: ios-deploy [OPTION]...
|
||||
-d, --debug launch the app in GDB after installation
|
||||
-i, --id <device_id> the id of the device to connect to
|
||||
-c, --detect only detect if the device is connected
|
||||
-b, --bundle <bundle.app> the path to the app bundle to be installed
|
||||
-a, --args <args> command line arguments to pass to the app when launching it
|
||||
-t, --timeout <timeout> number of seconds to wait for a device to be connected
|
||||
-u, --unbuffered don't buffer stdout
|
||||
-n, --nostart do not start the app when debugging
|
||||
-I, --noninteractive start in non interactive mode (quit when app crashes or exits)
|
||||
-L, --justlaunch just launch the app and exit lldb
|
||||
-v, --verbose enable verbose output
|
||||
-m, --noinstall directly start debugging without app install (-d not required)
|
||||
-p, --port <number> port used for device, default: 12345
|
||||
-r, --uninstall uninstall the app before install (do not use with -m; app cache and data are cleared)
|
||||
-9, --uninstall_only uninstall the app ONLY. Use only with -1 <bundle_id>
|
||||
-1, --bundle_id <bundle id> specify bundle id for list, upload, and uninstall_only
|
||||
-l, --list list files
|
||||
-o, --upload <file> upload file
|
||||
-w, --download download app tree
|
||||
-2, --to <target pathname> use together with up/download file/tree. specify target
|
||||
-D, --mkdir <dir> make directory on device
|
||||
-R, --rm <path> remove file or directory on device (directories must be empty)
|
||||
-V, --version print the executable version
|
||||
-e, --exists check if the app with given bundle_id is installed or not
|
||||
-B, --list_bundle_id list bundle_id
|
||||
-d, --debug launch the app in lldb after installation
|
||||
-i, --id <device_id> the id of the device to connect to
|
||||
-c, --detect only detect if the device is connected
|
||||
-b, --bundle <bundle.app> the path to the app bundle to be installed
|
||||
-a, --args <args> command line arguments to pass to the app when launching it
|
||||
-t, --timeout <timeout> number of seconds to wait for a device to be connected
|
||||
-u, --unbuffered don't buffer stdout
|
||||
-n, --nostart do not start the app when debugging
|
||||
-I, --noninteractive start in non interactive mode (quit when app crashes or exits)
|
||||
-L, --justlaunch just launch the app and exit lldb
|
||||
-v, --verbose enable verbose output
|
||||
-m, --noinstall directly start debugging without app install (-d not required)
|
||||
-p, --port <number> port used for device, default: dynamic
|
||||
-r, --uninstall uninstall the app before install (do not use with -m; app cache and data are cleared)
|
||||
-9, --uninstall_only uninstall the app ONLY. Use only with -1 <bundle_id>
|
||||
-1, --bundle_id <bundle id> specify bundle id for list and upload
|
||||
-l, --list list files
|
||||
-o, --upload <file> upload file
|
||||
-w, --download download app tree
|
||||
-2, --to <target pathname> use together with up/download file/tree. specify target
|
||||
-D, --mkdir <dir> make directory on device
|
||||
-R, --rm <path> remove file or directory on device (directories must be empty)
|
||||
-V, --version print the executable version
|
||||
-e, --exists check if the app with given bundle_id is installed or not
|
||||
-B, --list_bundle_id list bundle_id
|
||||
-W, --no-wifi ignore wifi devices
|
||||
|
||||
## Examples
|
||||
|
||||
@@ -76,6 +93,9 @@ The commands below assume that you have an app called `my.app` with bundle id `b
|
||||
// deploy and debug your app to a connected device
|
||||
ios-deploy --debug --bundle my.app
|
||||
|
||||
// deploy and debug your app to a connected device, skipping any wi-fi connection (use USB)
|
||||
ios-deploy --debug --bundle my.app --no-wifi
|
||||
|
||||
// deploy and launch your app to a connected device, but quit the debugger after
|
||||
ios-deploy --justlaunch --debug --bundle my.app
|
||||
|
||||
@@ -98,7 +118,7 @@ The commands below assume that you have an app called `my.app` with bundle id `b
|
||||
ios-deploy --exists --bundle_id com.apple.mobilemail
|
||||
|
||||
// Download the Documents directory of the app *only*
|
||||
ios-deploy --download=/Documents -bundle_id my.app.id --to ./my_download_location
|
||||
ios-deploy --download=/Documents --bundle_id my.app.id --to ./my_download_location
|
||||
|
||||
// List ids and names of connected devices
|
||||
ios-deploy -c
|
||||
@@ -113,7 +133,7 @@ The commands below assume that you have an app called `my.app` with bundle id `b
|
||||
|
||||
The included demo.app represents the minimum required to get code running on iOS.
|
||||
|
||||
* `make demo.app` will generate the demo.app executable. If it doesn't compile, modify IOS_SDK_VERSION in the Makefile.
|
||||
* `make demo.app` will generate the demo.app executable. If it doesn't compile, modify `IOS_SDK_VERSION` in the Makefile.
|
||||
* `make debug` will install demo.app and launch a LLDB session.
|
||||
|
||||
## Notes
|
||||
|
||||
5
demo/.gitignore
vendored
Normal file
5
demo/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
demo
|
||||
demo.app
|
||||
demo.dSYM
|
||||
/.DS_Store
|
||||
*~
|
||||
24
demo/Makefile
Normal file
24
demo/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
IOS_SDK_VERSION = 9.1
|
||||
|
||||
IOS_CC = gcc -ObjC
|
||||
IOS_SDK = $(shell xcode-select --print-path)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$(IOS_SDK_VERSION).sdk
|
||||
|
||||
all: clean demo.app
|
||||
|
||||
demo.app: demo Info.plist
|
||||
mkdir -p demo.app
|
||||
cp demo demo.app/
|
||||
cp Info.plist ResourceRules.plist demo.app/
|
||||
codesign -f -s "iPhone Developer" --entitlements Entitlements.plist demo.app
|
||||
|
||||
demo: demo.c
|
||||
$(IOS_CC) -g -arch armv7 -isysroot $(IOS_SDK) -framework CoreFoundation -o demo demo.c
|
||||
|
||||
debug: all ios-deploy
|
||||
@../build/Release/ios-deploy --debug --bundle demo.app
|
||||
|
||||
clean:
|
||||
@rm -rf *.app demo demo.dSYM
|
||||
|
||||
ios-deploy:
|
||||
@xcodebuild -project ../ios-deploy.xcodeproj
|
||||
@@ -6,4 +6,4 @@ int main(int argc, const char* argv[]) {
|
||||
printf("argv[%d] = %s\n", i, argv[i]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
537
ios-deploy.xcodeproj/project.pbxproj
Normal file
537
ios-deploy.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,537 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
7E70899E1B587F29004D23AA /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899D1B587F29004D23AA /* CoreFoundation.framework */; };
|
||||
7E7089A01B58801E004D23AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899F1B58801E004D23AA /* Foundation.framework */; };
|
||||
7E8E3A861C45D4CE0017F6C1 /* ios_deploy_tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8E3A851C45D4CE0017F6C1 /* ios_deploy_tests.m */; };
|
||||
7E8E3A921C45D5380017F6C1 /* libios_deploy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E8E3A911C45D5380017F6C1 /* libios_deploy.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
7E8E3A941C45D5380017F6C1 /* libios_deploy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8E3A931C45D5380017F6C1 /* libios_deploy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
7E8E3A9B1C45D5970017F6C1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899F1B58801E004D23AA /* Foundation.framework */; };
|
||||
7E8E3A9D1C45D6290017F6C1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899D1B587F29004D23AA /* CoreFoundation.framework */; };
|
||||
7EDCC3CD1C45DC94002F9851 /* ios-deploy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7089991B587DE4004D23AA /* ios-deploy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
7E8E3A991C45D5850017F6C1 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 7E7089861B587BF3004D23AA /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 7E8E3A8E1C45D5380017F6C1;
|
||||
remoteInfo = "ios-deploy-lib";
|
||||
};
|
||||
7EDCC3CA1C45D933002F9851 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 7E7089861B587BF3004D23AA /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 7E8E3A8E1C45D5380017F6C1;
|
||||
remoteInfo = "ios-deploy-lib";
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
7E1C00CC1C3C93AF00D686B5 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
|
||||
7E1C00CF1C3C9ABB00D686B5 /* lldb.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; name = lldb.py; path = src/scripts/lldb.py; sourceTree = SOURCE_ROOT; };
|
||||
7E1C00D11C3C9CB000D686B5 /* lldb.py.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lldb.py.h; sourceTree = "<group>"; };
|
||||
7E70898E1B587BF3004D23AA /* ios-deploy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ios-deploy"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7E7089991B587DE4004D23AA /* ios-deploy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ios-deploy.m"; sourceTree = "<group>"; };
|
||||
7E70899A1B587DE4004D23AA /* errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = errors.h; sourceTree = "<group>"; };
|
||||
7E70899B1B587DE4004D23AA /* MobileDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MobileDevice.h; sourceTree = "<group>"; };
|
||||
7E70899D1B587F29004D23AA /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
|
||||
7E70899F1B58801E004D23AA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
7E8E3A831C45D4CE0017F6C1 /* ios-deploy-tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ios-deploy-tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7E8E3A851C45D4CE0017F6C1 /* ios_deploy_tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ios_deploy_tests.m; sourceTree = "<group>"; };
|
||||
7E8E3A871C45D4CE0017F6C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
7E8E3A8F1C45D5380017F6C1 /* libios-deploy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libios-deploy.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7E8E3A911C45D5380017F6C1 /* libios_deploy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libios_deploy.h; sourceTree = "<group>"; };
|
||||
7E8E3A931C45D5380017F6C1 /* libios_deploy.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = libios_deploy.m; sourceTree = "<group>"; };
|
||||
7EDCC3CE1C45DFF0002F9851 /* check_reqs.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = check_reqs.js; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
7E70898B1B587BF3004D23AA /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7E7089A01B58801E004D23AA /* Foundation.framework in Frameworks */,
|
||||
7E70899E1B587F29004D23AA /* CoreFoundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
7E8E3A801C45D4CE0017F6C1 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
7E8E3A8C1C45D5380017F6C1 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7E8E3A9D1C45D6290017F6C1 /* CoreFoundation.framework in Frameworks */,
|
||||
7E8E3A9B1C45D5970017F6C1 /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
7E1C00CE1C3C9A7700D686B5 /* scripts */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7EDCC3CE1C45DFF0002F9851 /* check_reqs.js */,
|
||||
7E1C00CF1C3C9ABB00D686B5 /* lldb.py */,
|
||||
);
|
||||
name = scripts;
|
||||
path = src/scripts;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7E7089851B587BF3004D23AA = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7E1C00CE1C3C9A7700D686B5 /* scripts */,
|
||||
7E7089901B587BF3004D23AA /* ios-deploy */,
|
||||
7E8E3A841C45D4CE0017F6C1 /* ios-deploy-tests */,
|
||||
7E8E3A901C45D5380017F6C1 /* ios-deploy-lib */,
|
||||
7E7089A21B588219004D23AA /* Frameworks */,
|
||||
7E70898F1B587BF3004D23AA /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7E70898F1B587BF3004D23AA /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7E70898E1B587BF3004D23AA /* ios-deploy */,
|
||||
7E8E3A831C45D4CE0017F6C1 /* ios-deploy-tests.xctest */,
|
||||
7E8E3A8F1C45D5380017F6C1 /* libios-deploy.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7E7089901B587BF3004D23AA /* ios-deploy */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7E1C00D11C3C9CB000D686B5 /* lldb.py.h */,
|
||||
7E1C00CC1C3C93AF00D686B5 /* version.h */,
|
||||
7E7089991B587DE4004D23AA /* ios-deploy.m */,
|
||||
7E70899A1B587DE4004D23AA /* errors.h */,
|
||||
7E70899B1B587DE4004D23AA /* MobileDevice.h */,
|
||||
);
|
||||
name = "ios-deploy";
|
||||
path = "src/ios-deploy";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7E7089A21B588219004D23AA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7E70899F1B58801E004D23AA /* Foundation.framework */,
|
||||
7E70899D1B587F29004D23AA /* CoreFoundation.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7E8E3A841C45D4CE0017F6C1 /* ios-deploy-tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7E8E3A851C45D4CE0017F6C1 /* ios_deploy_tests.m */,
|
||||
7E8E3A871C45D4CE0017F6C1 /* Info.plist */,
|
||||
);
|
||||
name = "ios-deploy-tests";
|
||||
path = "src/ios-deploy-tests";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
7E8E3A901C45D5380017F6C1 /* ios-deploy-lib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
7E8E3A911C45D5380017F6C1 /* libios_deploy.h */,
|
||||
7E8E3A931C45D5380017F6C1 /* libios_deploy.m */,
|
||||
);
|
||||
name = "ios-deploy-lib";
|
||||
path = "src/ios-deploy-lib";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
7E8E3A8D1C45D5380017F6C1 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7E8E3A921C45D5380017F6C1 /* libios_deploy.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
7E70898D1B587BF3004D23AA /* ios-deploy */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 7E7089951B587BF3004D23AA /* Build configuration list for PBXNativeTarget "ios-deploy" */;
|
||||
buildPhases = (
|
||||
7EDCC3CF1C45E03B002F9851 /* ShellScript */,
|
||||
7E70898B1B587BF3004D23AA /* Frameworks */,
|
||||
7EDCC3CC1C45DC89002F9851 /* Sources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
7E8E3A9A1C45D5850017F6C1 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "ios-deploy";
|
||||
productName = "ios-deploy";
|
||||
productReference = 7E70898E1B587BF3004D23AA /* ios-deploy */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
7E8E3A821C45D4CE0017F6C1 /* ios-deploy-tests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 7E8E3A8A1C45D4CE0017F6C1 /* Build configuration list for PBXNativeTarget "ios-deploy-tests" */;
|
||||
buildPhases = (
|
||||
7E8E3A7F1C45D4CE0017F6C1 /* Sources */,
|
||||
7E8E3A801C45D4CE0017F6C1 /* Frameworks */,
|
||||
7E8E3A811C45D4CE0017F6C1 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
7EDCC3CB1C45D933002F9851 /* PBXTargetDependency */,
|
||||
);
|
||||
name = "ios-deploy-tests";
|
||||
productName = "ios-deploy-tests";
|
||||
productReference = 7E8E3A831C45D4CE0017F6C1 /* ios-deploy-tests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
7E8E3A8E1C45D5380017F6C1 /* ios-deploy-lib */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 7E8E3A951C45D5380017F6C1 /* Build configuration list for PBXNativeTarget "ios-deploy-lib" */;
|
||||
buildPhases = (
|
||||
7E8E3A8B1C45D5380017F6C1 /* Sources */,
|
||||
7E8E3A8C1C45D5380017F6C1 /* Frameworks */,
|
||||
7E8E3A8D1C45D5380017F6C1 /* Headers */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "ios-deploy-lib";
|
||||
productName = "ios-deploy-lib";
|
||||
productReference = 7E8E3A8F1C45D5380017F6C1 /* libios-deploy.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
7E7089861B587BF3004D23AA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0710;
|
||||
ORGANIZATIONNAME = PhoneGap;
|
||||
TargetAttributes = {
|
||||
7E70898D1B587BF3004D23AA = {
|
||||
CreatedOnToolsVersion = 6.4;
|
||||
};
|
||||
7E8E3A821C45D4CE0017F6C1 = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
};
|
||||
7E8E3A8E1C45D5380017F6C1 = {
|
||||
CreatedOnToolsVersion = 7.2;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 7E7089891B587BF3004D23AA /* Build configuration list for PBXProject "ios-deploy" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 7E7089851B587BF3004D23AA;
|
||||
productRefGroup = 7E70898F1B587BF3004D23AA /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
7E70898D1B587BF3004D23AA /* ios-deploy */,
|
||||
7E8E3A821C45D4CE0017F6C1 /* ios-deploy-tests */,
|
||||
7E8E3A8E1C45D5380017F6C1 /* ios-deploy-lib */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
7E8E3A811C45D4CE0017F6C1 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
7EDCC3CF1C45E03B002F9851 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "echo \"\\\"# AUTO-GENERATED - DO NOT MODIFY\\n\\\"\" > src/ios-deploy/lldb.py.h\nawk '{ print \"\\\"\"$0\"\\\\n\\\"\"}' src/scripts/lldb.py >> src/ios-deploy/lldb.py.h";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
7E8E3A7F1C45D4CE0017F6C1 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7E8E3A861C45D4CE0017F6C1 /* ios_deploy_tests.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
7E8E3A8B1C45D5380017F6C1 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7E8E3A941C45D5380017F6C1 /* libios_deploy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
7EDCC3CC1C45DC89002F9851 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7EDCC3CD1C45DC94002F9851 /* ios-deploy.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
7E8E3A9A1C45D5850017F6C1 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 7E8E3A8E1C45D5380017F6C1 /* ios-deploy-lib */;
|
||||
targetProxy = 7E8E3A991C45D5850017F6C1 /* PBXContainerItemProxy */;
|
||||
};
|
||||
7EDCC3CB1C45D933002F9851 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 7E8E3A8E1C45D5380017F6C1 /* ios-deploy-lib */;
|
||||
targetProxy = 7EDCC3CA1C45D933002F9851 /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
7E7089931B587BF3004D23AA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
MobileDevice,
|
||||
"-F/System/Library/PrivateFrameworks",
|
||||
);
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
7E7089941B587BF3004D23AA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
MobileDevice,
|
||||
"-F/System/Library/PrivateFrameworks",
|
||||
);
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
7E7089961B587BF3004D23AA /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
7E7089971B587BF3004D23AA /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
7E8E3A881C45D4CE0017F6C1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
INFOPLIST_FILE = "src/ios-deploy-tests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.phonegap.ios-deploy-tests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
7E8E3A891C45D4CE0017F6C1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
INFOPLIST_FILE = "src/ios-deploy-tests/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "com.phonegap.ios-deploy-tests";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
7E8E3A961C45D5380017F6C1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
EXECUTABLE_PREFIX = lib;
|
||||
INSTALL_PATH = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
MobileDevice,
|
||||
"-F/System/Library/PrivateFrameworks",
|
||||
);
|
||||
PRODUCT_NAME = "ios-deploy";
|
||||
PUBLIC_HEADERS_FOLDER_PATH = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
7E8E3A971C45D5380017F6C1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_IDENTITY = "-";
|
||||
EXECUTABLE_PREFIX = lib;
|
||||
INSTALL_PATH = "";
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
OTHER_LDFLAGS = (
|
||||
"-framework",
|
||||
MobileDevice,
|
||||
"-F/System/Library/PrivateFrameworks",
|
||||
);
|
||||
PRODUCT_NAME = "ios-deploy";
|
||||
PUBLIC_HEADERS_FOLDER_PATH = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
7E7089891B587BF3004D23AA /* Build configuration list for PBXProject "ios-deploy" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
7E7089931B587BF3004D23AA /* Debug */,
|
||||
7E7089941B587BF3004D23AA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
7E7089951B587BF3004D23AA /* Build configuration list for PBXNativeTarget "ios-deploy" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
7E7089961B587BF3004D23AA /* Debug */,
|
||||
7E7089971B587BF3004D23AA /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
7E8E3A8A1C45D4CE0017F6C1 /* Build configuration list for PBXNativeTarget "ios-deploy-tests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
7E8E3A881C45D4CE0017F6C1 /* Debug */,
|
||||
7E8E3A891C45D4CE0017F6C1 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
7E8E3A951C45D5380017F6C1 /* Build configuration list for PBXNativeTarget "ios-deploy-lib" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
7E8E3A961C45D5380017F6C1 /* Debug */,
|
||||
7E8E3A971C45D5380017F6C1 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 7E7089861B587BF3004D23AA /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0720"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "7E8E3A821C45D4CE0017F6C1"
|
||||
BuildableName = "ios-deploy-tests.xctest"
|
||||
BlueprintName = "ios-deploy-tests"
|
||||
ReferencedContainer = "container:ios-deploy.xcodeproj">
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
23
package.json
23
package.json
@@ -1,21 +1,34 @@
|
||||
{
|
||||
"name": "ios-deploy",
|
||||
"version": "1.7.0",
|
||||
"os" : [ "darwin" ],
|
||||
"description": "launch iOS apps iOS devices from the command line (Xcode 6)",
|
||||
"version": "1.9.0",
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"description": "launch iOS apps iOS devices from the command line (Xcode 7)",
|
||||
"main": "ios-deploy",
|
||||
"scripts": {
|
||||
"preinstall": "make ios-deploy"
|
||||
},
|
||||
"bin" : "./ios-deploy" ,
|
||||
"bin": "./build/Release/ios-deploy",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phonegap/ios-deploy"
|
||||
},
|
||||
"devDependencies": {
|
||||
"jshint": "2.5.8"
|
||||
},
|
||||
"scripts": {
|
||||
"preinstall": "./src/scripts/check_reqs.js && xcodebuild",
|
||||
"test": "npm run pycompile && npm run jshint && xcodebuild -target ios-deploy-lib && xcodebuild test -scheme ios-deploy-tests",
|
||||
"jshint": "node node_modules/jshint/bin/jshint src/scripts/*.js",
|
||||
"pycompile": "python -m py_compile src/scripts/*.py"
|
||||
},
|
||||
"keywords": [
|
||||
"ios-deploy",
|
||||
"deploy to iOS device"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/phonegap/ios-deploy/issues"
|
||||
},
|
||||
"author": "Greg Hughes",
|
||||
"license": "GPLv3"
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
echo "$ make"
|
||||
make
|
||||
5
src/ios-deploy-lib/libios_deploy.h
Normal file
5
src/ios-deploy-lib/libios_deploy.h
Normal file
@@ -0,0 +1,5 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@interface ios_deploy_lib : NSObject
|
||||
|
||||
@end
|
||||
5
src/ios-deploy-lib/libios_deploy.m
Normal file
5
src/ios-deploy-lib/libios_deploy.m
Normal file
@@ -0,0 +1,5 @@
|
||||
#import "libios_deploy.h"
|
||||
|
||||
@implementation ios_deploy_lib
|
||||
|
||||
@end
|
||||
24
src/ios-deploy-tests/Info.plist
Normal file
24
src/ios-deploy-tests/Info.plist
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
</dict>
|
||||
</plist>
|
||||
31
src/ios-deploy-tests/ios_deploy_tests.m
Normal file
31
src/ios-deploy-tests/ios_deploy_tests.m
Normal file
@@ -0,0 +1,31 @@
|
||||
#import <XCTest/XCTest.h>
|
||||
|
||||
@interface ios_deploy_tests : XCTestCase
|
||||
|
||||
@end
|
||||
|
||||
@implementation ios_deploy_tests
|
||||
|
||||
- (void)setUp {
|
||||
[super setUp];
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
- (void)tearDown {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
[super tearDown];
|
||||
}
|
||||
|
||||
- (void)testExample {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
- (void)testPerformanceExample {
|
||||
// This is an example of a performance test case.
|
||||
[self measureBlock:^{
|
||||
// Put the code you want to measure the time of here.
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -195,6 +195,7 @@ mach_error_t AMDeviceNotificationSubscribe(am_device_notification_callback
|
||||
callback, unsigned int unused0, unsigned int unused1, void* //unsigned int
|
||||
dn_unknown3, struct am_device_notification **notification);
|
||||
|
||||
|
||||
/* Connects to the iPhone. Pass in the am_device structure that the
|
||||
* notification callback will give to you.
|
||||
*
|
||||
@@ -9,7 +9,29 @@ typedef struct error_id_to_message {
|
||||
const char* message;
|
||||
} error_id_to_message_t;
|
||||
|
||||
// Taken from https://github.com/samdmarshall/SDMMobileDevice/blob/master/Framework/MobileDevice/Error/SDMMD_Error.h
|
||||
// Parts of error code to localization id map is taken from SDMMobileDevice framework. Associated license is bellow.
|
||||
// https://github.com/samdmarshall/SDMMobileDevice/blob/master/Framework/MobileDevice/Error/SDMMD_Error.h
|
||||
//
|
||||
// Copyright (c) 2014, Sam Marshall
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
||||
// following conditions are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
//
|
||||
// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the distribution.
|
||||
//
|
||||
// 3. Neither the name of Sam Marshall nor the names of its contributors may be used to endorse or promote products derived from this
|
||||
// software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
// COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
static errorcode_to_id_t errorcode_to_id[] = {
|
||||
{ 0xe8000001, "kAMDUndefinedError" },
|
||||
{ 0xe8000002, "kAMDBadHeaderError" },
|
||||
@@ -168,7 +190,13 @@ static errorcode_to_id_t errorcode_to_id[] = {
|
||||
{ 0xe800009b, "kAMDMCChallengeRequired" },
|
||||
{ 0xe800009c, "kAMDMissingBundleVersionError" },
|
||||
|
||||
{ 0xe8008015, "A valid provisioning profile for this executable was not found."},
|
||||
// Errors without id->string mapping.
|
||||
{ 0xe8008015, "A valid provisioning profile for this executable was not found." },
|
||||
{ 0xe8008016, "The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile." },
|
||||
{ 0xe8008017, "A signed resource has been added, modified, or deleted." },
|
||||
{ 0xe8008018, "The identity used to sign the executable is no longer valid. Please verify that your device’s clock is properly set, and that your signing certificate is not expired." },
|
||||
{ 0xe8008019, "The application does not have a valid signature." },
|
||||
{ 0xe800801c, "No code signature found." },
|
||||
};
|
||||
|
||||
const int errorcode_to_id_count = sizeof(errorcode_to_id) / sizeof(errorcode_to_id_t);
|
||||
File diff suppressed because it is too large
Load Diff
1
src/ios-deploy/version.h
Normal file
1
src/ios-deploy/version.h
Normal file
@@ -0,0 +1 @@
|
||||
"1.9.0"
|
||||
56
src/scripts/check_reqs.js
Executable file
56
src/scripts/check_reqs.js
Executable file
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
var util = require('util');
|
||||
var os = require('os');
|
||||
var child_process = require('child_process');
|
||||
|
||||
var XCODEBUILD_MIN_VERSION = '6.0';
|
||||
var XCODEBUILD_NOT_FOUND_MESSAGE = util.format('Please install Xcode version %s or greater from the Mac App Store.', XCODEBUILD_MIN_VERSION);
|
||||
var TOOL = 'xcodebuild';
|
||||
|
||||
var xcode_version = child_process.spawn(TOOL, ['-version']),
|
||||
version_string = '';
|
||||
|
||||
xcode_version.stdout.on('data', function (data) {
|
||||
version_string += data;
|
||||
});
|
||||
|
||||
xcode_version.stderr.on('data', function (data) {
|
||||
console.log('stderr: ' + data);
|
||||
});
|
||||
|
||||
xcode_version.on('error', function (err) {
|
||||
console.log(util.format('Tool %s was not found. %s', TOOL, XCODEBUILD_NOT_FOUND_MESSAGE));
|
||||
});
|
||||
|
||||
xcode_version.on('close', function (code) {
|
||||
if (code === 0) {
|
||||
var arr = version_string.match(/^Xcode (\d+\.\d+)/);
|
||||
var ver = arr[1];
|
||||
|
||||
if (os.release() >= '15.0.0' && ver < '7.0') {
|
||||
console.log(util.format('You need at least Xcode 7.0 when you are on OS X 10.11 El Capitan (you have version %s)', ver));
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (ver < XCODEBUILD_MIN_VERSION) {
|
||||
console.log(util.format('%s : %s. (you have version %s)', TOOL, XCODEBUILD_NOT_FOUND_MESSAGE, ver));
|
||||
}
|
||||
|
||||
if (os.release() >= '15.0.0') { // print the El Capitan warning
|
||||
console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
|
||||
console.log('!!!! WARNING: You are on OS X 10.11 El Capitan, you may need to add the');
|
||||
console.log('!!!! WARNING: `--unsafe-perm=true` flag when running `npm install`');
|
||||
console.log('!!!! WARNING: or else it will fail.');
|
||||
console.log('!!!! WARNING: link:');
|
||||
console.log('!!!! WARNING: https://github.com/phonegap/ios-deploy#os-x-1011-el-capitan');
|
||||
console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
|
||||
}
|
||||
|
||||
}
|
||||
process.exit(code);
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
85
src/scripts/lldb.py
Normal file
85
src/scripts/lldb.py
Normal file
@@ -0,0 +1,85 @@
|
||||
import lldb
|
||||
import os
|
||||
import sys
|
||||
import shlex
|
||||
|
||||
def connect_command(debugger, command, result, internal_dict):
|
||||
# These two are passed in by the script which loads us
|
||||
connect_url = internal_dict['fruitstrap_connect_url']
|
||||
error = lldb.SBError()
|
||||
|
||||
process = lldb.target.ConnectRemote(lldb.target.GetDebugger().GetListener(), connect_url, None, error)
|
||||
|
||||
# Wait for connection to succeed
|
||||
listener = lldb.target.GetDebugger().GetListener()
|
||||
listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged)
|
||||
events = []
|
||||
state = (process.GetState() or lldb.eStateInvalid)
|
||||
while state != lldb.eStateConnected:
|
||||
event = lldb.SBEvent()
|
||||
if listener.WaitForEvent(1, event):
|
||||
state = process.GetStateFromEvent(event)
|
||||
events.append(event)
|
||||
else:
|
||||
state = lldb.eStateInvalid
|
||||
|
||||
# Add events back to queue, otherwise lldb freezes
|
||||
for event in events:
|
||||
listener.AddEvent(event)
|
||||
|
||||
def run_command(debugger, command, result, internal_dict):
|
||||
device_app = internal_dict['fruitstrap_device_app']
|
||||
args = command.split('--',1)
|
||||
error = lldb.SBError()
|
||||
lldb.target.modules[0].SetPlatformFileSpec(lldb.SBFileSpec(device_app))
|
||||
args_arr = []
|
||||
if len(args) > 1:
|
||||
args_arr = shlex.split(args[1])
|
||||
else:
|
||||
args_arr = shlex.split('{args}')
|
||||
lldb.target.Launch(lldb.SBLaunchInfo(args_arr), error)
|
||||
lockedstr = ': Locked'
|
||||
if lockedstr in str(error):
|
||||
print('\\nDevice Locked\\n')
|
||||
os._exit(254)
|
||||
else:
|
||||
print(str(error))
|
||||
|
||||
def safequit_command(debugger, command, result, internal_dict):
|
||||
process = lldb.target.process
|
||||
state = process.GetState()
|
||||
if state == lldb.eStateRunning:
|
||||
process.Detach()
|
||||
os._exit(0)
|
||||
elif state > lldb.eStateRunning:
|
||||
os._exit(state)
|
||||
else:
|
||||
print('\\nApplication has not been launched\\n')
|
||||
os._exit(1)
|
||||
|
||||
def autoexit_command(debugger, command, result, internal_dict):
|
||||
process = lldb.target.process
|
||||
listener = debugger.GetListener()
|
||||
listener.StartListeningForEvents(process.GetBroadcaster(), lldb.SBProcess.eBroadcastBitStateChanged | lldb.SBProcess.eBroadcastBitSTDOUT | lldb.SBProcess.eBroadcastBitSTDERR)
|
||||
event = lldb.SBEvent()
|
||||
while True:
|
||||
if listener.WaitForEvent(1, event) and lldb.SBProcess.EventIsProcessEvent(event):
|
||||
state = lldb.SBProcess.GetStateFromEvent(event)
|
||||
else:
|
||||
state = process.GetState()
|
||||
|
||||
if state == lldb.eStateExited:
|
||||
os._exit(process.GetExitStatus())
|
||||
elif state == lldb.eStateStopped:
|
||||
debugger.HandleCommand('bt')
|
||||
os._exit({exitcode_app_crash})
|
||||
|
||||
stdout = process.GetSTDOUT(1024)
|
||||
while stdout:
|
||||
sys.stdout.write(stdout)
|
||||
stdout = process.GetSTDOUT(1024)
|
||||
|
||||
stderr = process.GetSTDERR(1024)
|
||||
while stderr:
|
||||
sys.stdout.write(stderr)
|
||||
stderr = process.GetSTDERR(1024)
|
||||
Reference in New Issue
Block a user