diff --git a/.gitignore b/.gitignore index d3423ee..33dbe44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,3 @@ -demo -demo.app -ios-deploy -ios-deploy.dSYM +build/* /.DS_Store *~ diff --git a/Makefile b/Makefile deleted file mode 100644 index 26974ee..0000000 --- a/Makefile +++ /dev/null @@ -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 diff --git a/demo/.gitignore b/demo/.gitignore new file mode 100644 index 0000000..c2ef55d --- /dev/null +++ b/demo/.gitignore @@ -0,0 +1,5 @@ +demo +demo.app +demo.dSYM +/.DS_Store +*~ diff --git a/Entitlements.plist b/demo/Entitlements.plist similarity index 100% rename from Entitlements.plist rename to demo/Entitlements.plist diff --git a/Info.plist b/demo/Info.plist similarity index 100% rename from Info.plist rename to demo/Info.plist diff --git a/demo/Makefile b/demo/Makefile new file mode 100644 index 0000000..cf7c36a --- /dev/null +++ b/demo/Makefile @@ -0,0 +1,24 @@ +IOS_SDK_VERSION = 9.0 + +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 diff --git a/ResourceRules.plist b/demo/ResourceRules.plist similarity index 100% rename from ResourceRules.plist rename to demo/ResourceRules.plist diff --git a/demo.c b/demo/demo.c similarity index 98% rename from demo.c rename to demo/demo.c index 583f43b..b366b14 100644 --- a/demo.c +++ b/demo/demo.c @@ -6,4 +6,4 @@ int main(int argc, const char* argv[]) { printf("argv[%d] = %s\n", i, argv[i]); } return 0; -} +} \ No newline at end of file diff --git a/ios-deploy.xcodeproj/project.pbxproj b/ios-deploy.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2b26eb1 --- /dev/null +++ b/ios-deploy.xcodeproj/project.pbxproj @@ -0,0 +1,275 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 7E70899C1B587DE4004D23AA /* ios-deploy.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E7089991B587DE4004D23AA /* ios-deploy.c */; settings = {COMPILER_FLAGS = "-x objective-c -fno-objc-arc"; }; }; + 7E70899E1B587F29004D23AA /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899D1B587F29004D23AA /* CoreFoundation.framework */; }; + 7E7089A01B58801E004D23AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E70899F1B58801E004D23AA /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 7E70898C1B587BF3004D23AA /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 7E70898E1B587BF3004D23AA /* ios-deploy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ios-deploy"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7E7089991B587DE4004D23AA /* ios-deploy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ios-deploy.c"; path = "src/ios-deploy.c"; sourceTree = SOURCE_ROOT; }; + 7E70899A1B587DE4004D23AA /* errors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = errors.h; path = src/errors.h; sourceTree = SOURCE_ROOT; }; + 7E70899B1B587DE4004D23AA /* MobileDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MobileDevice.h; path = src/MobileDevice.h; sourceTree = SOURCE_ROOT; }; + 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; }; +/* 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; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7E7089851B587BF3004D23AA = { + isa = PBXGroup; + children = ( + 7E7089901B587BF3004D23AA /* ios-deploy */, + 7E7089A21B588219004D23AA /* Frameworks */, + 7E70898F1B587BF3004D23AA /* Products */, + ); + sourceTree = ""; + }; + 7E70898F1B587BF3004D23AA /* Products */ = { + isa = PBXGroup; + children = ( + 7E70898E1B587BF3004D23AA /* ios-deploy */, + ); + name = Products; + sourceTree = ""; + }; + 7E7089901B587BF3004D23AA /* ios-deploy */ = { + isa = PBXGroup; + children = ( + 7E7089991B587DE4004D23AA /* ios-deploy.c */, + 7E70899A1B587DE4004D23AA /* errors.h */, + 7E70899B1B587DE4004D23AA /* MobileDevice.h */, + ); + path = "ios-deploy"; + sourceTree = ""; + }; + 7E7089A21B588219004D23AA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7E70899F1B58801E004D23AA /* Foundation.framework */, + 7E70899D1B587F29004D23AA /* CoreFoundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7E70898D1B587BF3004D23AA /* ios-deploy */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7E7089951B587BF3004D23AA /* Build configuration list for PBXNativeTarget "ios-deploy" */; + buildPhases = ( + 7E70898A1B587BF3004D23AA /* Sources */, + 7E70898B1B587BF3004D23AA /* Frameworks */, + 7E70898C1B587BF3004D23AA /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-deploy"; + productName = "ios-deploy"; + productReference = 7E70898E1B587BF3004D23AA /* ios-deploy */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7E7089861B587BF3004D23AA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0710; + ORGANIZATIONNAME = PhoneGap; + TargetAttributes = { + 7E70898D1B587BF3004D23AA = { + CreatedOnToolsVersion = 6.4; + }; + }; + }; + 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 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 7E70898A1B587BF3004D23AA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E70899C1B587DE4004D23AA /* ios-deploy.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase 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; + }; +/* 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; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7E7089861B587BF3004D23AA /* Project object */; +} diff --git a/package.json b/package.json index c279b07..cd4bdfb 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "description": "launch iOS apps iOS devices from the command line (Xcode 7)", "main": "ios-deploy", "scripts": { - "preinstall": "./check_reqs.js && make ios-deploy" + "preinstall": "./check_reqs.js && xcodebuild" }, - "bin": "./ios-deploy", + "bin": "./build/Release/ios-deploy", "repository": { "type": "git", "url": "https://github.com/phonegap/ios-deploy" diff --git a/resources/buildbox/build.sh b/resources/buildbox/build.sh deleted file mode 100755 index aea6cbf..0000000 --- a/resources/buildbox/build.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -echo "$ make" -make \ No newline at end of file diff --git a/MobileDevice.h b/src/MobileDevice.h similarity index 100% rename from MobileDevice.h rename to src/MobileDevice.h diff --git a/errors.h b/src/errors.h similarity index 100% rename from errors.h rename to src/errors.h diff --git a/ios-deploy.c b/src/ios-deploy.c similarity index 99% rename from ios-deploy.c rename to src/ios-deploy.c index f562079..a2cae06 100644 --- a/ios-deploy.c +++ b/src/ios-deploy.c @@ -169,7 +169,7 @@ char *app_path = NULL; char *device_id = NULL; char *args = NULL; char *list_root = NULL; -int timeout = 0; +int _timeout = 0; int port = 0; // 0 means "dynamically assigned" CFStringRef last_path = NULL; service_conn_t gdbfd; @@ -326,7 +326,7 @@ const char *get_home() { CFStringRef copy_xcode_path_for(CFStringRef subPath, CFStringRef search) { CFStringRef xcodeDevPath = copy_xcode_dev_path(); - CFStringRef path; + CFStringRef path = NULL; bool found = false; const char* home = get_home(); CFRange slashLocation; @@ -864,7 +864,7 @@ int kill_ptree(pid_t root, int signum); void server_callback (CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef address, const void *data, void *info) { - int res; + ssize_t res; if (CFDataGetLength (data) == 0) { // close the socket on which we've got end-of-file, the server_socket. @@ -974,7 +974,7 @@ int kill_ptree(pid_t root, int signum) { return -1; } - kill_ptree_inner(root, signum, kp, len / sizeof(struct kinfo_proc)); + kill_ptree_inner(root, signum, kp, (int)(len / sizeof(struct kinfo_proc))); free(kp); return 0; @@ -1365,7 +1365,6 @@ void list_bundle_id(AMDeviceRef device) const void *keys[count]; CFDictionaryGetKeysAndValues(result, keys, NULL); for(int i = 0; i < count; ++i) { - CFStringRef test = (CFStringRef)keys[i]; NSLogOut(@"%@", (CFStringRef)keys[i]); } @@ -1506,8 +1505,6 @@ void upload_file(AMDeviceRef device) { void make_directory(AMDeviceRef device) { service_conn_t houseFd = start_house_arrest_service(device); - afc_file_ref file_ref; - afc_connection afc_conn; afc_connection* afc_conn_p = &afc_conn; AFCConnectionOpen(houseFd, 0, &afc_conn_p); @@ -1519,8 +1516,6 @@ void make_directory(AMDeviceRef device) { void remove_path(AMDeviceRef device) { service_conn_t houseFd = start_house_arrest_service(device); - afc_file_ref file_ref; - afc_connection afc_conn; afc_connection* afc_conn_p = &afc_conn; AFCConnectionOpen(houseFd, 0, &afc_conn_p); @@ -1862,7 +1857,7 @@ int main(int argc, char *argv[]) { verbose = 1; break; case 't': - timeout = atoi(optarg); + _timeout = atoi(optarg); break; case 'u': unbuffered = 1; @@ -1951,8 +1946,8 @@ int main(int argc, char *argv[]) { setbuf(stderr, NULL); } - if (detect_only && timeout == 0) { - timeout = 5; + if (detect_only && _timeout == 0) { + _timeout = 5; } if (app_path) { @@ -1962,11 +1957,11 @@ int main(int argc, char *argv[]) { } AMDSetLogLevel(5); // otherwise syslog gets flooded with crap - if (timeout > 0) + if (_timeout > 0) { - CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + timeout, 0, 0, 0, timeout_callback, NULL); + CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + _timeout, 0, 0, 0, timeout_callback, NULL); CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopCommonModes); - NSLogOut(@"[....] Waiting up to %d seconds for iOS device to be connected", timeout); + NSLogOut(@"[....] Waiting up to %d seconds for iOS device to be connected", _timeout); } else {