Compare commits
142 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
79a2a3bf95 | ||
![]() |
8741d74623 | ||
![]() |
009089254c | ||
![]() |
e72626a832 | ||
![]() |
100c8a3cbc | ||
![]() |
71e14bed95 | ||
![]() |
022fd2865a | ||
![]() |
7a808cb6b4 | ||
![]() |
25588767f2 | ||
![]() |
babe79f391 | ||
![]() |
26f981e51c | ||
![]() |
07de7505cc | ||
![]() |
978b1bb139 | ||
![]() |
76e8d08e43 | ||
![]() |
3ef9dfefcf | ||
![]() |
888323b76e | ||
![]() |
908a2d56ab | ||
![]() |
77654faabd | ||
![]() |
81b52cd69d | ||
![]() |
d30f6bd379 | ||
![]() |
17d0841ab8 | ||
![]() |
2461665ea4 | ||
![]() |
e8f90b0d2c | ||
![]() |
1f1725a33b | ||
![]() |
8757ca562f | ||
![]() |
411f054b0c | ||
![]() |
4dd9d740aa | ||
![]() |
9a9c648cdc | ||
![]() |
2fceef2c75 | ||
![]() |
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 | ||
![]() |
6d61b7ca7c | ||
![]() |
590da67714 | ||
![]() |
8749a57936 | ||
![]() |
3ba7403a39 | ||
![]() |
84aeaad03b | ||
![]() |
ddcb4932ab | ||
![]() |
11f1a89128 | ||
![]() |
c97b972172 | ||
![]() |
1cb6110985 | ||
![]() |
3dadb53b3b | ||
![]() |
39aa232f97 | ||
![]() |
609b635870 | ||
![]() |
522f7bd667 | ||
![]() |
250794ce98 | ||
![]() |
41eeedc472 | ||
![]() |
cdbe112ec6 | ||
![]() |
5377d9bec7 | ||
![]() |
5d2a0d5c8b | ||
![]() |
e5fc979998 | ||
![]() |
18873b8340 | ||
![]() |
ed09a029de | ||
![]() |
a750efa382 | ||
![]() |
0940a4d079 | ||
![]() |
b72d31b816 | ||
![]() |
5690b10635 | ||
![]() |
d90171d8e7 | ||
![]() |
02c23792ee | ||
![]() |
3e8a897fbc | ||
![]() |
ba60ff6351 | ||
![]() |
134a0a5fd0 | ||
![]() |
96e91eb269 | ||
![]() |
8577ef3411 | ||
![]() |
99f401018d | ||
![]() |
6ac084844e | ||
![]() |
3dcd64f7c0 | ||
![]() |
12334f8ddf |
2
CONTRIBUTING.md → .github/CONTRIBUTING.md
vendored
2
CONTRIBUTING.md → .github/CONTRIBUTING.md
vendored
@ -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
|
||||
|
28
.github/ISSUE_TEMPLATE.md
vendored
Normal file
28
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
## MUST READ BEFORE YOU FILE (DELETE THIS SECTION BEFORE FILING)
|
||||
|
||||
Include the **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 this issue.
|
||||
|
||||
# Expected behavior
|
||||
|
||||
|
||||
# Actual behavior.
|
||||
|
||||
|
||||
# Steps to reproduce the problem
|
||||
|
||||
|
||||
# System Specs
|
||||
|
||||
Please run the commands below in your Terminal.app and include it in the issue. Check when done and include results below.
|
||||
|
||||
- [ ] 1. sw_vers -productVersion
|
||||
- [ ] 2. ios-deploy -V
|
||||
- [ ] 3. xcodebuild -version
|
||||
- [ ] 4. xcode-select --print-path
|
||||
- [ ] 5. gcc --version
|
||||
- [ ] 6. lldb --version
|
||||
|
||||
|
||||
|
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
|
||||
|
11
.travis.yml
Normal file
11
.travis.yml
Normal file
@ -0,0 +1,11 @@
|
||||
language: objective-c
|
||||
sudo: false
|
||||
node_js:
|
||||
- "0.10"
|
||||
- "0.12"
|
||||
- "4.2"
|
||||
install:
|
||||
- npm install
|
||||
|
||||
script:
|
||||
- "npm test"
|
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
|
104
README.md
104
README.md
@ -1,14 +1,31 @@
|
||||
[](https://travis-ci.org/phonegap/ios-deploy)
|
||||
|
||||
ios-deploy
|
||||
==========
|
||||
Install and debug iOS apps without using Xcode. Designed to work on un-jailbroken devices.
|
||||
|
||||
## 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
|
||||
|
||||
See our [milestones](https://github.com/phonegap/ios-deploy/milestones).
|
||||
|
||||
Significant changes:
|
||||
|
||||
1.8.0 will use an Xcode project instead of a Makefile (to prepare for 2.0.0) (1.x branch)
|
||||
2.0.0 will break out the commands into their own files, and create ios-deploy-lib for node.js use (master branch)
|
||||
|
||||
## Development
|
||||
|
||||
The legacy `1.x` version is under the `1.x` branch. Bug fixes for the `1.x` series will occur under there.
|
||||
The 'master' branch now contains the `2.x` series, and is the development branch.
|
||||
|
||||
## Installation
|
||||
=======
|
||||
|
||||
ios-deploy installation is made simple using the node.js package manager. If you use [Homebrew](http://brew.sh/), install [node.js](https://nodejs.org):
|
||||
|
||||
@ -22,42 +39,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
|
||||
|
||||
-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
|
||||
|
||||
@ -66,6 +100,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
|
||||
|
||||
@ -88,19 +125,22 @@ 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
|
||||
|
||||
// Uninstall an app
|
||||
ios-deploy --uninstall_only --bundle_id my.bundle.id
|
||||
|
||||
// list all bundle ids of all apps on your device
|
||||
ios-deploy --list_bundle_id
|
||||
|
||||
## Demo
|
||||
|
||||
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.6.2",
|
||||
"os" : [ "darwin" ],
|
||||
"description": "launch iOS apps iOS devices from the command line (Xcode 6)",
|
||||
"version": "2.0.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,8 +9,31 @@ 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[] = {
|
||||
{ 0x00000000, "kAMDSuccess" },
|
||||
{ 0xe8000001, "kAMDUndefinedError" },
|
||||
{ 0xe8000002, "kAMDBadHeaderError" },
|
||||
{ 0xe8000003, "kAMDNoResourcesError" },
|
||||
@ -167,17 +190,111 @@ static errorcode_to_id_t errorcode_to_id[] = {
|
||||
{ 0xe800009a, "kAMDMCProtected" },
|
||||
{ 0xe800009b, "kAMDMCChallengeRequired" },
|
||||
{ 0xe800009c, "kAMDMissingBundleVersionError" },
|
||||
{ 0xe800009d, "kAMDAppBlacklistedError" },
|
||||
{ 0xe800009e, "This app contains an app extension with an illegal bundle identifier. App extension bundle identifiers must have a prefix consisting of their containing application's bundle identifier followed by a '.'." },
|
||||
{ 0xe800009f, "If an app extension defines the XPCService key in its Info.plist, it must have a dictionary value." },
|
||||
{ 0xe80000a0, "App extensions must define the NSExtension key with a dictionary value in their Info.plist." },
|
||||
{ 0xe80000a1, "If an app extension defines the CFBundlePackageType key in its Info.plist, it must have the value \"XPC!\"." },
|
||||
{ 0xe80000a2, "App extensions must define either NSExtensionMainStoryboard or NSExtensionPrincipalClass keys in the NSExtension dictionary in their Info.plist." },
|
||||
{ 0xe80000a3, "If an app extension defines the NSExtensionContextClass key in the NSExtension dictionary in its Info.plist, it must have a string value containing one or more characters." },
|
||||
{ 0xe80000a4, "If an app extension defines the NSExtensionContextHostClass key in the NSExtension dictionary in its Info.plist, it must have a string value containing one or more characters." },
|
||||
{ 0xe80000a5, "If an app extension defines the NSExtensionViewControllerHostClass key in the NSExtension dictionary in its Info.plist, it must have a string value containing one or more characters." },
|
||||
{ 0xe80000a6, "This app contains an app extension that does not define the NSExtensionPointIdentifier key in its Info.plist. This key must have a reverse-DNS format string value." },
|
||||
{ 0xe80000a7, "This app contains an app extension that does not define the NSExtensionPointIdentifier key in its Info.plist with a valid reverse-DNS format string value." },
|
||||
{ 0xe80000a8, "If an app extension defines the NSExtensionAttributes key in the NSExtension dictionary in its Info.plist, it must have a dictionary value." },
|
||||
{ 0xe80000a9, "If an app extension defines the NSExtensionPointName key in the NSExtensionAttributes dictionary in the NSExtension dictionary in its Info.plist, it must have a string value containing one or more characters." },
|
||||
{ 0xe80000aa, "If an app extension defines the NSExtensionPointVersion key in the NSExtensionAttributes dictionary in the NSExtension dictionary in its Info.plist, it must have a string value containing one or more characters." },
|
||||
{ 0xe80000ab, "This app or a bundle it contains does not define the CFBundleName key in its Info.plist with a string value containing one or more characters." },
|
||||
{ 0xe80000ac, "This app or a bundle it contains does not define the CFBundleDisplayName key in its Info.plist with a string value containing one or more characters." },
|
||||
{ 0xe80000ad, "This app or a bundle it contains defines the CFBundleShortVersionStringKey key in its Info.plist with a non-string value or a zero-length string value." },
|
||||
{ 0xe80000ae, "This app or a bundle it contains defines the RunLoopType key in the XPCService dictionary in its Info.plist with a non-string value or a zero-length string value." },
|
||||
{ 0xe80000af, "This app or a bundle it contains defines the ServiceType key in the XPCService dictionary in its Info.plist with a non-string value or a zero-length string value." },
|
||||
{ 0xe80000b0, "This application or a bundle it contains has the same bundle identifier as this application or another bundle that it contains. Bundle identifiers must be unique." },
|
||||
{ 0xe80000b1, "This app contains an app extension that specifies an extension point identifier that is not supported on this version of iOS for the value of the NSExtensionPointIdentifier key in its Info.plist." },
|
||||
{ 0xe80000b2, "This app contains multiple app extensions that are file providers. Apps are only allowed to contain at most a single file provider app extension." },
|
||||
{ 0xe80000b3, "kMobileHouseArrestMissingCommand" },
|
||||
{ 0xe80000b4, "kMobileHouseArrestUnknownCommand" },
|
||||
{ 0xe80000b5, "kMobileHouseArrestMissingIdentifier" },
|
||||
{ 0xe80000b6, "kMobileHouseArrestDictionaryFailed" },
|
||||
{ 0xe80000b7, "kMobileHouseArrestInstallationLookupFailed" },
|
||||
{ 0xe80000b8, "kMobileHouseArrestApplicationLookupFailed" },
|
||||
{ 0xe80000b9, "kMobileHouseArrestMissingContainer" },
|
||||
// 0xe80000ba does not exist
|
||||
{ 0xe80000bb, "kMobileHouseArrestPathConversionFailed" },
|
||||
{ 0xe80000bc, "kMobileHouseArrestPathMissing" },
|
||||
{ 0xe80000bd, "kMobileHouseArrestInvalidPath" },
|
||||
{ 0xe80000be, "kAMDMismatchedApplicationIdentifierEntitlementError" },
|
||||
{ 0xe80000bf, "kAMDInvalidSymlinkError" },
|
||||
{ 0xe80000c0, "kAMDNoSpaceError" },
|
||||
{ 0xe80000c1, "The WatchKit app extension must have, in its Info.plist's NSExtension dictionary's NSExtensionAttributes dictionary, the key WKAppBundleIdentifier with a value equal to the associated WatchKit app's bundle identifier." },
|
||||
{ 0xe80000c2, "This app is not a valid AppleTV Stub App" },
|
||||
{ 0xe80000c3, "kAMDBundleiTunesMetadataVersionMismatchError" },
|
||||
{ 0xe80000c4, "kAMDInvalidiTunesMetadataPlistError" },
|
||||
{ 0xe80000c5, "kAMDMismatchedBundleIDSigningIdentifierError" },
|
||||
{ 0xe80000c6, "This app contains multiple WatchKit app extensions. Only a single WatchKit extension is allowed." },
|
||||
{ 0xe80000c7, "A WatchKit app within this app is not a valid bundle." },
|
||||
{ 0xe80000c8, "kAMDDeviceNotSupportedByThinningError" },
|
||||
{ 0xe80000c9, "The UISupportedDevices key in this app's Info.plist does not specify a valid set of supported devices." },
|
||||
{ 0xe80000ca, "This app contains an app extension with an illegal bundle identifier. App extension bundle identifiers must have a prefix consisting of their containing application's bundle identifier followed by a '.', with no further '.' characters after the prefix." },
|
||||
{ 0xe80000cb, "kAMDAppexBundleIDConflictWithOtherIdentifierError" },
|
||||
{ 0xe80000cc, "kAMDBundleIDConflictWithOtherIdentifierError" },
|
||||
{ 0xe80000cd, "This app contains multiple WatchKit 1.0 apps. Only a single WatchKit 1.0 app is allowed." },
|
||||
{ 0xe80000ce, "This app contains multiple WatchKit 2.0 apps. Only a single WatchKit 2.0 app is allowed." },
|
||||
{ 0xe80000cf, "The WatchKit app has an invalid stub executable." },
|
||||
{ 0xe80000d0, "The WatchKit app has multiple app extensions. Only a single WatchKit extension is allowed in a WatchKit app, and only if this is a WatchKit 2.0 app." },
|
||||
{ 0xe80000d1, "The WatchKit 2.0 app contains non-WatchKit app extensions. Only WatchKit app extensions are allowed in WatchKit apps." },
|
||||
{ 0xe80000d2, "The WatchKit app has one or more embedded frameworks. Frameworks are only allowed in WatchKit app extensions in WatchKit 2.0 apps." },
|
||||
{ 0xe80000d3, "This app contains a WatchKit 1.0 app with app extensions. This is not allowed." },
|
||||
{ 0xe80000d4, "This app contains a WatchKit 2.0 app without an app extension. WatchKit 2.0 apps must contain a WatchKit app extension." },
|
||||
{ 0xe80000d5, "The WatchKit app's Info.plist must have a WKCompanionAppBundleIdentifier key set to the bundle identifier of the companion app." },
|
||||
{ 0xe80000d6, "The WatchKit app's Info.plist contains a non-string key." },
|
||||
{ 0xe80000d7, "The WatchKit app's Info.plist contains a key that is not in the whitelist of allowed keys for a WatchKit app." },
|
||||
{ 0xe80000d8, "The WatchKit 1.0 and a WatchKit 2.0 apps within this app must have have the same bundle identifier." },
|
||||
{ 0xe80000d9, "This app contains a WatchKit app with an invalid bundle identifier. The bundle identifier of a WatchKit app must have a prefix consisting of the companion app's bundle identifier, followed by a '.'." },
|
||||
{ 0xe80000da, "This app contains a WatchKit app where the UIDeviceFamily key in its Info.plist does not specify the value 4 to indicate that it's compatible with the Apple Watch device type." },
|
||||
{ 0xe80000db, "The device is out of storage for apps. Please remove some apps from the device and try again." },
|
||||
|
||||
{ 0xe8008015, "A valid provisioning profile for this executable was not found."},
|
||||
// Errors without id->string mapping.
|
||||
{ 0xe8008001, "An unknown error has occurred." },
|
||||
{ 0xe8008002, "Attempted to modify an immutable provisioning profile." },
|
||||
{ 0xe8008003, "This provisioning profile is malformed." },
|
||||
{ 0xe8008004, "This provisioning profile does not have a valid signature (or it has a valid, but untrusted signature)." },
|
||||
{ 0xe8008005, "This provisioning profile is malformed." },
|
||||
{ 0xe8008006, "This provisioning profile is malformed." },
|
||||
{ 0xe8008007, "This provisioning profile is malformed." },
|
||||
{ 0xe8008008, "This provisioning profile is malformed." },
|
||||
{ 0xe8008009, "The signature was not valid." },
|
||||
{ 0xe800800a, "Unable to allocate memory." },
|
||||
{ 0xe800800b, "A file operation failed." },
|
||||
{ 0xe800800c, "There was an error communicating with your device." },
|
||||
{ 0xe800800d, "There was an error communicating with your device." },
|
||||
{ 0xe800800e, "This provisioning profile does not have a valid signature (or it has a valid, but untrusted signature)." },
|
||||
{ 0xe800800f, "The application's signature is valid but it does not match the expected hash." },
|
||||
{ 0xe8008010, "This provisioning profile is unsupported." },
|
||||
{ 0xe8008011, "This provisioning profile has expired." },
|
||||
{ 0xe8008012, "This provisioning profile cannot be installed on this device." },
|
||||
{ 0xe8008013, "This provisioning profile does not have a valid signature (or it has a valid, but untrusted signature)." },
|
||||
{ 0xe8008014, "The executable contains an invalid signature." },
|
||||
{ 0xe8008015, "A valid provisioning profile for this executable was not found." },
|
||||
{ 0xe8008016, "The executable was signed with invalid entitlements." },
|
||||
{ 0xe8008017, "A signed resource has been added, modified, or deleted." },
|
||||
{ 0xe8008018, "The identity used to sign the executable is no longer valid." },
|
||||
{ 0xe8008019, "The application does not have a valid signature." },
|
||||
{ 0xe800801a, "This provisioning profile does not have a valid signature (or it has a valid, but untrusted signature)." },
|
||||
{ 0xe800801b, "There was an error communicating with your device." },
|
||||
{ 0xe800801c, "No code signature found." },
|
||||
{ 0xe800801d, "Rejected by policy." },
|
||||
{ 0xe800801e, "The requested profile does not exist (it may have been removed)." },
|
||||
};
|
||||
|
||||
const int errorcode_to_id_count = sizeof(errorcode_to_id) / sizeof(errorcode_to_id_t);
|
||||
|
||||
// Taken from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/en_GB.lproj/Localizable.strings
|
||||
// Taken from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/English.lproj/Localizable.strings
|
||||
error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDAPIInternalError", "There was an internal API error." },
|
||||
{ "kAMDAlreadyArchivedError", "The application is already archived." },
|
||||
{ "kAMDAppBlacklistedError", "This app is not allowed to be installed on this device." },
|
||||
{ "kAMDAppexBundleIDConflictWithOtherIdentifierError", "This application contains an app extension with a bundle identifier that conflicts with the bundle identifier of another app or app extension already installed." },
|
||||
{ "kAMDApplicationAlreadyInstalledError", "A system application with the given bundle identifier is already installed on the device and cannot be replaced." },
|
||||
{ "kAMDApplicationMoveFailedError", "The application could not be moved into place on the device." },
|
||||
{ "kAMDApplicationSandboxFailedError", "The application could not be sandboxed." },
|
||||
@ -186,7 +303,9 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDBadHeaderError", "Could not transfer file." },
|
||||
{ "kAMDBreadcrumbFailedError", "Could not write installation breadcrumb." },
|
||||
{ "kAMDBreadcrumbUnlockError", "Could not update installation breadcrumb." },
|
||||
{ "kAMDBundleIDConflictWithOtherIdentifierError", "This application's bundle identifier conflicts with the identifier of another app or app extension already installed." },
|
||||
{ "kAMDBundleVerificationFailedError", "The carrier bundle could not be verified." },
|
||||
{ "kAMDBundleiTunesMetadataVersionMismatchError", "This application's iTunesMetadata.plist specifies versions that do not match the versions listed for the app in its Info.plist" },
|
||||
{ "kAMDBusyError", "The device is busy." },
|
||||
{ "kAMDCannotTranslateError", "Could not translate messages from device" },
|
||||
{ "kAMDCarrierBundleCopyFailedError", "Could not install the carrier bundle." },
|
||||
@ -206,6 +325,7 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDCryptoError", "Could not establish a secure connection to the device." },
|
||||
{ "kAMDDeviceDisconnectedError", "This device is no longer connected." },
|
||||
{ "kAMDDeviceFamilyNotSupported", "This application does not support this kind of device." },
|
||||
{ "kAMDDeviceNotSupportedByThinningError", "This application is not built for this device." },
|
||||
{ "kAMDDeviceOSVersionTooLow", "The device OS version is too low." },
|
||||
{ "kAMDDeviceRefNoGood", "This device is no longer connected." },
|
||||
{ "kAMDDeviceTooNewError", "This application needs to be updated." },
|
||||
@ -220,7 +340,7 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDFMiPProtectedError", "The device is in lost mode." },
|
||||
{ "kAMDFileExistsError", "The file already exists." },
|
||||
{ "kAMDGeoJSONCaptureFailedError", "Could not save the GeoJSON data." },
|
||||
{ "kAMDGetProhibitedError", "Cannot retrieve value from the passcode-locked device." },
|
||||
{ "kAMDGetProhibitedError", "Cannot retrieve value from the passcode locked device." },
|
||||
{ "kAMDImmutableValueError", "This value cannot be changed." },
|
||||
{ "kAMDIncorrectArchitectureError", "This application does not support this device's CPU type." },
|
||||
{ "kAMDInstallMapUpdateFailedError", "Could not update the installed applications list." },
|
||||
@ -229,17 +349,21 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDInvalidArgumentError", "The argument is invalid." },
|
||||
{ "kAMDInvalidCheckinError", "Could not start service on device" },
|
||||
{ "kAMDInvalidDiskImageError", "The disk image is invalid." },
|
||||
{ "kAMDInvalidHostIDError", "The device does not recognise this host." },
|
||||
{ "kAMDInvalidHostIDError", "The device does not recognize this host." },
|
||||
{ "kAMDInvalidPairRecordError", "The host is no longer paired with the device." },
|
||||
{ "kAMDInvalidResponseError", "Received an unexpected response from the device." },
|
||||
{ "kAMDInvalidServiceError", "The service is invalid." },
|
||||
{ "kAMDInvalidSessionIDError", "The session ID is invalid." },
|
||||
{ "kAMDInvalidSymlinkError", "The bundle contained an invalid symlink." },
|
||||
{ "kAMDInvalidiTunesMetadataPlistError", "This application's iTunesMetadata.plist is not valid." },
|
||||
{ "kAMDIsDirectoryError", "The path is a directory." },
|
||||
{ "kAMDLookupFailedError", "Could not list installed applications." },
|
||||
{ "kAMDMCChallengeRequired", "A policy on the device requires secure pairing." },
|
||||
{ "kAMDMCProtected", "Pairing is prohibited by a policy on the device." },
|
||||
{ "kAMDManifestCaptureFailedError", "Could not save the application manifest." },
|
||||
{ "kAMDMapGenerationFailedError", "Could not generate the map." },
|
||||
{ "kAMDMismatchedApplicationIdentifierEntitlementError", "This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed." },
|
||||
{ "kAMDMismatchedBundleIDSigningIdentifierError", "This application's bundle identifier does not match its code signing identifier." },
|
||||
{ "kAMDMissingActivationRecordError", "The activation record could not be found." },
|
||||
{ "kAMDMissingApplicationIdentifierError", "Request was missing the application identifier." },
|
||||
{ "kAMDMissingAttributeValueError", "Request was missing a required value." },
|
||||
@ -251,7 +375,7 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDMissingContainerError", "Could not find the container for the installed application." },
|
||||
{ "kAMDMissingContainerPathError", "Request was missing the container path." },
|
||||
{ "kAMDMissingDigestError", "The digest is missing." },
|
||||
{ "kAMDMissingHostIDError", "The device does not recognise this host." },
|
||||
{ "kAMDMissingHostIDError", "The device does not recognize this host." },
|
||||
{ "kAMDMissingImageTypeError", "The image is missing." },
|
||||
{ "kAMDMissingKeyError", "The key is missing." },
|
||||
{ "kAMDMissingOptionsError", "The options are missing." },
|
||||
@ -282,6 +406,7 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDMuxGetListenerError", "Could not get the USB listener." },
|
||||
{ "kAMDNewsstandArtworkCaptureFailedError", "Could not save the Newsstand artwork." },
|
||||
{ "kAMDNoResourcesError", "Could not allocate a resource." },
|
||||
{ "kAMDNoSpaceError", "No space is available on the device." },
|
||||
{ "kAMDNoWifiSyncSupportError", "Device doesn't support wireless sync." },
|
||||
{ "kAMDNotConnectedError", "Not connected to the device." },
|
||||
{ "kAMDNotEntitledError", "The requesting application is not allowed to make this request." },
|
||||
@ -297,7 +422,7 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDPasswordProtectedError", "The device is passcode protected." },
|
||||
{ "kAMDPathConversionFailedError", "Could not convert the path." },
|
||||
{ "kAMDPermissionError", "You do not have permission." },
|
||||
{ "kAMDPluginCopyFailedError", "Could not copy VPN Plug-in into app container." },
|
||||
{ "kAMDPluginCopyFailedError", "Could not copy VPN Plugin into app container." },
|
||||
{ "kAMDProhibitedBySupervision", "Operation prohibited on supervised devices." },
|
||||
{ "kAMDProvisioningProfileNotValid", "The provisioning profile is not valid." },
|
||||
{ "kAMDReadError", "Could not read from the device." },
|
||||
@ -323,7 +448,7 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDTooBigError", "The message is too big." },
|
||||
{ "kAMDUndefinedError", "An unknown error occurred." },
|
||||
{ "kAMDUninstallProhibitedError", "Uninstallation of apps is prohibited by a policy on the device." },
|
||||
{ "kAMDUnknownCommandError", "The device does not recognise the command." },
|
||||
{ "kAMDUnknownCommandError", "The device does not recognize the command." },
|
||||
{ "kAMDUnknownPacketError", "The packet is unknown." },
|
||||
{ "kAMDUnsupportedError", "This operation is unsupported." },
|
||||
{ "kAMDUserDeniedPairingError", "The device rejected the pairing attempt." },
|
||||
@ -331,6 +456,16 @@ error_id_to_message_t error_id_to_message[] = {
|
||||
{ "kAMDWrongDroidError", "The device is in recovery mode." },
|
||||
{ "kAMDiTunesArtworkCaptureFailedError", "Could not save the iTunes artwork." },
|
||||
{ "kAMDiTunesMetadataCaptureFailedError", "Could not save the iTunes metadata." },
|
||||
{ "kMobileHouseArrestApplicationLookupFailed", "The requested application is not a user application." },
|
||||
{ "kMobileHouseArrestDictionaryFailed", "The request contained an invalid request dictionary." },
|
||||
{ "kMobileHouseArrestInstallationLookupFailed", "Could not find the requested application." },
|
||||
{ "kMobileHouseArrestInvalidPath", "The requested application contained an invalid data container path." },
|
||||
{ "kMobileHouseArrestMissingCommand", "The request was missing a command." },
|
||||
{ "kMobileHouseArrestMissingContainer", "The requested application does not contain a valid data container." },
|
||||
{ "kMobileHouseArrestMissingIdentifier", "The request was missing an application identifier." },
|
||||
{ "kMobileHouseArrestPathConversionFailed", "Could not convert the requested application's data container path." },
|
||||
{ "kMobileHouseArrestPathMissing", "The requested application's data container path does not exist." },
|
||||
{ "kMobileHouseArrestUnknownCommand", "The request contained an invalid command." },
|
||||
};
|
||||
|
||||
const int error_id_to_message_count = sizeof(error_id_to_message) / sizeof(error_id_to_message_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 @@
|
||||
"2.0.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)
|
Loading…
x
Reference in New Issue
Block a user