├── .gitignore ├── AndroidTool.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── AndroidTool.xccheckout │ │ └── AndroidTool.xcscmblueprint └── xcuserdata │ └── mortenjust.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ ├── AndroidTool.xcscheme │ └── xcschememanagement.plist ├── AndroidTool ├── .DS_Store ├── Apk.swift ├── ApkHandler.swift ├── AppDelegate.swift ├── Base.lproj │ └── MainMenu.xib ├── C.swift ├── CameraButton.swift ├── Constants.swift ├── Device.swift ├── DeviceDiscoverer.swift ├── DevicePickerViewController.swift ├── DevicePickerViewController.xib ├── DeviceViewController.swift ├── DeviceViewController.xib ├── DropPassThroughImageView.swift ├── DropReceiverView.swift ├── IOSDeviceHelper.swift ├── Images.xcassets │ ├── .DS_Store │ ├── ApkIcon.iconset │ │ ├── icon_128x128.png │ │ ├── icon_128x128@2x.png │ │ ├── icon_16x16.png │ │ ├── icon_16x16@2x.png │ │ ├── icon_256x256.png │ │ ├── icon_256x256@2x.png │ │ ├── icon_32x32.png │ │ ├── icon_32x32@2x.png │ │ ├── icon_512x512.png │ │ └── icon_512x512@2x.png │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── androidToolIcon1024.png │ │ ├── androidToolIcon128.png │ │ ├── androidToolIcon16.png │ │ ├── androidToolIcon256-1.png │ │ ├── androidToolIcon256.png │ │ ├── androidToolIcon32-1.png │ │ ├── androidToolIcon32.png │ │ ├── androidToolIcon512-1.png │ │ ├── androidToolIcon512.png │ │ └── androidToolIcon64.png │ ├── Contents.json │ ├── PhoneBlack.imageset │ │ ├── Contents.json │ │ ├── PhoneBlack.png │ │ ├── PhoneBlack@2x.png │ │ └── PhoneBlack@3x.png │ ├── WatchBlack.imageset │ │ ├── Contents.json │ │ ├── WatchBlack.png │ │ ├── WatchBlack@2x.png │ │ └── WatchBlack@3x.png │ ├── cameraBlack.imageset │ │ ├── Contents.json │ │ ├── cameraBlack.png │ │ ├── cameraBlack@2x.png │ │ └── cameraBlack@3x.png │ ├── cameraRoundBlue.imageset │ │ ├── Contents.json │ │ ├── cameraRoundBlue.png │ │ ├── cameraRoundBlue@2x.png │ │ └── cameraRoundBlue@3x.png │ ├── cameraRoundGreen.imageset │ │ ├── Contents.json │ │ ├── cameraRoundGreen.png │ │ ├── cameraRoundGreen@2x.png │ │ └── cameraRoundGreen@3x.png │ ├── deviceBackground.imageset │ │ ├── Contents.json │ │ ├── deviceBackground@1x.png │ │ ├── deviceBackground@2x.png │ │ └── deviceBackground@3x.png │ ├── deviceShadow.imageset │ │ ├── Contents.json │ │ ├── deviceTop@1x.png │ │ ├── deviceTop@2x.png │ │ └── deviceTop@3x.png │ ├── dragInvite.imageset │ │ ├── Contents.json │ │ ├── dragInvite.png │ │ ├── dragInvite@2x.png │ │ └── dragInvite@3x.png │ ├── emptyState.imageset │ │ ├── Contents.json │ │ ├── emptyState.png │ │ ├── emptyState@2x.png │ │ └── emptyState@3x.png │ ├── logos │ │ ├── .DS_Store │ │ ├── Contents.json │ │ ├── androidlogo.imageset │ │ │ ├── Contents.json │ │ │ ├── androidlogo.png │ │ │ ├── androidlogo@2x.png │ │ │ └── androidlogo@3x.png │ │ ├── loaderButton.imageset │ │ │ ├── Contents.json │ │ │ ├── gradientedbutton.png │ │ │ ├── gradientedbutton@2x.png │ │ │ └── gradientedbutton@3x.png │ │ ├── logoacer.imageset │ │ │ ├── Contents.json │ │ │ ├── logoAcer.png │ │ │ ├── logoAcer@2x.png │ │ │ └── logoAcer@3x.png │ │ ├── logoapple.imageset │ │ │ ├── Contents.json │ │ │ ├── logoapple.png │ │ │ ├── logoapple@2x.png │ │ │ └── logoapple@3x.png │ │ ├── logoasus.imageset │ │ │ ├── Contents.json │ │ │ ├── logoAsus.png │ │ │ ├── logoAsus@2x.png │ │ │ └── logoAsus@3x.png │ │ ├── logogoogle.imageset │ │ │ ├── Contents.json │ │ │ ├── logogoogle.png │ │ │ ├── logogoogle@2x.png │ │ │ └── logogoogle@3x.png │ │ ├── logohtc.imageset │ │ │ ├── Contents.json │ │ │ ├── logoHtc.png │ │ │ ├── logoHtc@2x.png │ │ │ └── logoHtc@3x.png │ │ ├── logohuawei.imageset │ │ │ ├── Contents.json │ │ │ ├── logoHuawei.png │ │ │ ├── logoHuawei@2x.png │ │ │ └── logoHuawei@3x.png │ │ ├── logolenovo.imageset │ │ │ ├── Contents.json │ │ │ ├── logoLenovo.png │ │ │ ├── logoLenovo@2x.png │ │ │ └── logoLenovo@3x.png │ │ ├── logolge.imageset │ │ │ ├── Contents.json │ │ │ ├── logoLg.png │ │ │ ├── logoLg@2x.png │ │ │ └── logoLg@3x.png │ │ ├── logomotorola.imageset │ │ │ ├── Contents.json │ │ │ ├── logoMotorola.png │ │ │ ├── logoMotorola@2x.png │ │ │ └── logoMotorola@3x.png │ │ ├── logonokia.imageset │ │ │ ├── Contents.json │ │ │ ├── logoNokia.png │ │ │ ├── logoNokia@2x.png │ │ │ └── logoNokia@3x.png │ │ ├── logooneplus.imageset │ │ │ ├── Contents.json │ │ │ ├── logoOnePlus.png │ │ │ ├── logoOnePlus@2x.png │ │ │ └── logoOnePlus@3x.png │ │ ├── logosamsung.imageset │ │ │ ├── Contents.json │ │ │ ├── logoSamsung.png │ │ │ ├── logoSamsung@2x.png │ │ │ └── logoSamsung@3x.png │ │ ├── logosony.imageset │ │ │ ├── Contents.json │ │ │ ├── logoSony.png │ │ │ ├── logoSony@2x.png │ │ │ └── logoSony@3x.png │ │ ├── logotagheuer.imageset │ │ │ ├── Contents.json │ │ │ ├── logotagheuer.png │ │ │ ├── logotagheuer@2x.png │ │ │ └── logotagheuer@3x.png │ │ └── logoxiaomi.imageset │ │ │ ├── Contents.json │ │ │ ├── logoXiaomi.png │ │ │ ├── logoXiaomi@2x.png │ │ │ └── logoXiaomi@3x.png │ ├── moreButtonPlus.imageset │ │ ├── Contents.json │ │ ├── moreButtonPlus.png │ │ ├── moreButtonPlus@2x.png │ │ └── moreButtonPlus@3x.png │ ├── recordButtonWhite.imageset │ │ ├── Contents.json │ │ ├── recordButtonWhite.png │ │ ├── recordButtonWhite@2x.png │ │ └── recordButtonWhite@3x.png │ ├── revealFolder.imageset │ │ ├── Contents.json │ │ ├── revealFolder.png │ │ ├── revealFolder@2x.png │ │ └── revealFolder@3x.png │ ├── smallFolderArrow.imageset │ │ ├── Contents.json │ │ ├── smallFolderArrow.png │ │ ├── smallFolderArrow@2x.png │ │ └── smallFolderArrow@3x.png │ ├── stopButton.imageset │ │ ├── Contents.json │ │ ├── stopButton.png │ │ ├── stopButton@2x.png │ │ └── stopButton@3x.png │ └── videoBlack.imageset │ │ ├── Contents.json │ │ ├── videoBlack.png │ │ ├── videoBlack@2x.png │ │ └── videoBlack@3x.png ├── Info.plist ├── LoaderView.swift ├── MasterViewController.swift ├── MasterViewController.xib ├── MovableButton.swift ├── MyPlayground.playground │ ├── Contents.swift │ ├── Sources │ │ └── SupportCode.swift │ ├── contents.xcplayground │ └── timeline.xctimeline ├── ObbHandler.swift ├── RawOutputWiewController.swift ├── RawOutputWiewController.xib ├── RawOutputWindowController.swift ├── RawOutputWindowController.xib ├── ShellTasker.swift ├── Styles.swift ├── Take Bugreport.sh ├── TerminalOutputTextView.swift ├── UITweaker.swift ├── Util.swift ├── WindowMoverScrollview.swift ├── WindowMoverTableCellView.swift ├── WindowMoverView.swift ├── ZipHandler.swift ├── aapt ├── adb ├── convertMovieFiletoGif.sh ├── exitDemoMode.sh ├── extractIconFromApk copy.sh ├── extractIconFromApk.sh ├── fastboot ├── ffmpeg ├── getApkInfo.sh ├── getCurrentActivityForIdentifier.sh ├── getDetailsForSerial.sh ├── getResolutionForSerial.sh ├── getSerials.sh ├── getprop-example.txt ├── icon.png ├── idevicescreenshot ├── installApkOnDevice.sh ├── installObbForSerial.sh ├── installZip.sh ├── launchActivity.sh ├── postProcessMovieForSerial.sh ├── previewPopoverViewController.swift ├── scriptsPopoverViewController.swift ├── setDemoModeOptions.sh ├── startRecordingForSerial.sh ├── takeScreenshotOfDeviceWithSerial.sh ├── takeScreenshotOfDeviceWithUUID.sh └── uninstallPackageOnDevice.sh ├── AndroidToolTests ├── AndroidToolTests.swift └── Info.plist ├── Demos ├── dualscreenshot.gif ├── installapk.gif ├── iosandandroid.gif ├── iosscreenrecording.gif ├── iosscreenshot.gif ├── phonerecording.gif ├── phonerecordingbig.gif ├── plugging in.gif └── scriptsfolder.gif ├── LICENSE ├── PreferencesWindowController.swift ├── PreferencesWindowController.xib ├── README.md ├── StatusTextField.swift ├── UX ├── .DS_Store ├── androidTool.sketch ├── exports │ ├── .DS_Store │ ├── androidlogo.png │ ├── androidlogo@2x.png │ ├── androidlogo@3x.png │ ├── dragInvite.png │ ├── dragInvite@2x.png │ ├── dragInvite@3x.png │ ├── gradientedbutton.png │ ├── gradientedbutton@2x.png │ ├── gradientedbutton@3x.png │ ├── loaderButton.png │ ├── loaderButton@2x.png │ ├── loaderButton@3x.png │ ├── loaderButtonFaded.png │ ├── loaderButtonFaded@2x.png │ ├── loaderButtonFaded@3x.png │ ├── logogoogle.png │ ├── logogoogle@2x.png │ ├── logogoogle@3x.png │ ├── logotagheuer.png │ ├── logotagheuer@2x.png │ └── logotagheuer@3x.png └── testapp.apk ├── WIndowMoverImageView.swift ├── binaries ├── 121 │ ├── .DS_Store │ ├── AndroidTool.app │ │ └── Contents │ │ │ ├── Frameworks │ │ │ ├── libswiftAppKit.dylib │ │ │ ├── libswiftCore.dylib │ │ │ ├── libswiftCoreAudio.dylib │ │ │ ├── libswiftCoreGraphics.dylib │ │ │ ├── libswiftDarwin.dylib │ │ │ ├── libswiftDispatch.dylib │ │ │ ├── libswiftFoundation.dylib │ │ │ ├── libswiftObjectiveC.dylib │ │ │ ├── libswiftQuartzCore.dylib │ │ │ └── libswiftSecurity.dylib │ │ │ ├── Info.plist │ │ │ ├── MacOS │ │ │ └── AndroidTool │ │ │ ├── PkgInfo │ │ │ ├── Resources │ │ │ ├── ApkIcon.icns │ │ │ ├── AppIcon.icns │ │ │ ├── Assets.car │ │ │ ├── Base.lproj │ │ │ │ └── MainMenu.nib │ │ │ ├── DevicePickerViewController.nib │ │ │ ├── DeviceViewController.nib │ │ │ ├── MasterViewController.nib │ │ │ ├── PreferencesWindowController.nib │ │ │ ├── Take Bugreport.sh │ │ │ ├── adb │ │ │ ├── convertMovieFiletoGif.sh │ │ │ ├── ffmpeg │ │ │ ├── getDetailsForSerial.sh │ │ │ ├── getResolutionForSerial.sh │ │ │ ├── getSerials.sh │ │ │ ├── idevicescreenshot │ │ │ ├── installApkOnDevice.sh │ │ │ ├── libimobiledevice.4.dylib │ │ │ ├── libosxfuse_i32.2.dylib │ │ │ ├── libosxfuse_i64.2.dylib │ │ │ ├── libplist.1.1.10.dylib │ │ │ ├── libplist.2.dylib │ │ │ ├── libusbmuxd.1.0.8.dylib │ │ │ ├── libusbmuxd.2.dylib │ │ │ ├── libxml2.2.dylib │ │ │ ├── libzip.2.dylib │ │ │ ├── postProcessMovieForSerial.sh │ │ │ ├── startRecordingForSerial.sh │ │ │ ├── takeScreenshotOfDeviceWithSerial.sh │ │ │ └── takeScreenshotOfDeviceWithUUID.sh │ │ │ └── _CodeSignature │ │ │ └── CodeResources │ └── AndroidTool121.zip ├── .DS_Store ├── AndroidTool-io2.zip ├── AndroidTool-ios.zip ├── AndroidTool.app │ └── Contents │ │ ├── Frameworks │ │ ├── libswiftAppKit.dylib │ │ ├── libswiftCore.dylib │ │ ├── libswiftCoreAudio.dylib │ │ ├── libswiftCoreGraphics.dylib │ │ ├── libswiftDarwin.dylib │ │ ├── libswiftDispatch.dylib │ │ ├── libswiftFoundation.dylib │ │ ├── libswiftObjectiveC.dylib │ │ ├── libswiftQuartzCore.dylib │ │ └── libswiftSecurity.dylib │ │ ├── Info.plist │ │ ├── MacOS │ │ ├── AndroidTool │ │ └── deviceslog.txt │ │ ├── PkgInfo │ │ ├── Resources │ │ ├── ApkIcon.icns │ │ ├── AppIcon.icns │ │ ├── Assets.car │ │ ├── Base.lproj │ │ │ └── MainMenu.nib │ │ ├── DevicePickerViewController.nib │ │ ├── DeviceViewController.nib │ │ ├── MasterViewController.nib │ │ ├── PreferencesWindowController.nib │ │ ├── Take Bugreport.sh │ │ ├── adb │ │ ├── convertMovieFiletoGif.sh │ │ ├── ffmpeg │ │ ├── getDetailsForSerial.sh │ │ ├── getResolutionForSerial.sh │ │ ├── getSerials.sh │ │ ├── idevicescreenshot │ │ ├── installApkOnDevice.sh │ │ ├── installog.txt │ │ ├── libimobiledevice.4.dylib │ │ ├── libosxfuse_i32.2.dylib │ │ ├── libosxfuse_i64.2.dylib │ │ ├── libplist.1.1.10.dylib │ │ ├── libplist.2.dylib │ │ ├── libusbmuxd.1.0.8.dylib │ │ ├── libusbmuxd.2.dylib │ │ ├── libxml2.2.dylib │ │ ├── libzip.2.dylib │ │ ├── postProcessMovieForSerial.sh │ │ ├── startRecordingForSerial.sh │ │ ├── takeScreenshotOfDeviceWithSerial.sh │ │ └── takeScreenshotOfDeviceWithUUID.sh │ │ └── _CodeSignature │ │ └── CodeResources └── AndroidTool12.zip ├── ffmpeg ├── libimobiledevice.4.dylib ├── libosxfuse_i32.2.dylib ├── libosxfuse_i64.2.dylib ├── libplist.1.1.10.dylib ├── libplist.2.dylib ├── libusbmuxd.1.0.8.dylib ├── libusbmuxd.2.dylib ├── libxml2.2.dylib └── libzip.2.dylib /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | *.xccheckout 14 | *.moved-aside 15 | DerivedData 16 | *.hmap 17 | *.ipa 18 | *.xcuserstate 19 | 20 | # CocoaPods 21 | # 22 | # We recommend against adding the Pods directory to your .gitignore. However 23 | # you should judge for yourself, the pros and cons are mentioned at: 24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 25 | # 26 | # Pods/ 27 | 28 | # Carthage 29 | # 30 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 31 | # Carthage/Checkouts 32 | 33 | Carthage/Build 34 | -------------------------------------------------------------------------------- /AndroidTool.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AndroidTool.xcodeproj/project.xcworkspace/xcshareddata/AndroidTool.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 739E40B5-70DA-4E32-B5EE-D0F8524F2599 9 | IDESourceControlProjectName 10 | AndroidTool 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 0F88317C16E7E6E52DF926450A3E43CF8F5A0F9C 14 | https://github.com/mortenjust/androidtool-mac.git 15 | 16 | IDESourceControlProjectPath 17 | AndroidTool.xcodeproj 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 0F88317C16E7E6E52DF926450A3E43CF8F5A0F9C 21 | ../.. 22 | 23 | IDESourceControlProjectURL 24 | https://github.com/mortenjust/androidtool-mac.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | 0F88317C16E7E6E52DF926450A3E43CF8F5A0F9C 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 0F88317C16E7E6E52DF926450A3E43CF8F5A0F9C 36 | IDESourceControlWCCName 37 | AndroidTool 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /AndroidTool.xcodeproj/project.xcworkspace/xcshareddata/AndroidTool.xcscmblueprint: -------------------------------------------------------------------------------- 1 | { 2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "7783EA2305F9E9D4E488649A369F3078AE55A4FA", 3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { 4 | 5 | }, 6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { 7 | "7783EA2305F9E9D4E488649A369F3078AE55A4FA" : 0, 8 | "0F88317C16E7E6E52DF926450A3E43CF8F5A0F9C" : 0 9 | }, 10 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "739E40B5-70DA-4E32-B5EE-D0F8524F2599", 11 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { 12 | "7783EA2305F9E9D4E488649A369F3078AE55A4FA" : "androidtool-mac\/", 13 | "0F88317C16E7E6E52DF926450A3E43CF8F5A0F9C" : "AndroidTool" 14 | }, 15 | "DVTSourceControlWorkspaceBlueprintNameKey" : "AndroidTool", 16 | "DVTSourceControlWorkspaceBlueprintVersion" : 204, 17 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "AndroidTool.xcodeproj", 18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ 19 | { 20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/mortenjust\/androidtool-mac.git", 21 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "0F88317C16E7E6E52DF926450A3E43CF8F5A0F9C" 23 | }, 24 | { 25 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/mortenjust\/androidtool-mac.git", 26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "7783EA2305F9E9D4E488649A369F3078AE55A4FA" 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /AndroidTool.xcodeproj/xcuserdata/mortenjust.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /AndroidTool.xcodeproj/xcuserdata/mortenjust.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AndroidTool.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | C8B5145F1AE85D610071C86A 16 | 17 | primary 18 | 19 | 20 | C8B5146F1AE85D610071C86A 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AndroidTool/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/.DS_Store -------------------------------------------------------------------------------- /AndroidTool/Apk.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Apk.swift 3 | // Shellpad 4 | // 5 | // Created by Morten Just Petersen on 11/1/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class Apk: NSObject { 12 | var filepath:String! 13 | var launcherActivity:String? 14 | var appName:String = "" 15 | var packageName:String? 16 | var versionCode:String? 17 | var versionName:String? 18 | var iconPath:String? 19 | var localIconPath:String? 20 | 21 | 22 | init(rawAaptBadgingData:String) { 23 | super.init() 24 | parseRawInfo(rawAaptBadgingData) 25 | } 26 | 27 | func parseRawInfo(_ rawdata:String) { 28 | print(">>apkparskeapkinfo") 29 | let u = Util() 30 | let apk = self 31 | 32 | if let l = u.findMatchesInString(rawdata, regex: "launchable-activity: name='(.*?)'") { 33 | apk.launcherActivity = l[0] 34 | } 35 | 36 | if let n = u.findMatchesInString(rawdata, regex: "application-label:'(.*?)'") { 37 | apk.appName = n[0] 38 | } 39 | 40 | if let p = u.findMatchesInString(rawdata, regex: "package: name='(.*?)'") { 41 | apk.packageName = p[0] 42 | } 43 | 44 | if let versionCode = u.findMatchesInString(rawdata, regex: "versionCode='(.*?)'") { 45 | apk.versionCode = versionCode[0] 46 | } 47 | 48 | if let versionName = u.findMatchesInString(rawdata, regex: "versionName='(.*?)'") { 49 | apk.versionName = versionName[0] 50 | } 51 | } 52 | 53 | 54 | } 55 | -------------------------------------------------------------------------------- /AndroidTool/ApkHandler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ApkHandler.swift 3 | // Shellpad 4 | // 5 | // Created by Morten Just Petersen on 11/1/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | protocol ApkHandlerDelegate { 12 | func apkHandlerDidStart() 13 | func apkHandlerDidGetInfo(_ apk:Apk) 14 | func apkHandlerDidUpdate(_ update:String) 15 | func apkHandlerDidFinish() 16 | } 17 | 18 | class ApkHandler: NSObject { 19 | var filepath:String! 20 | var delegate:ApkHandlerDelegate? 21 | var device:Device! 22 | 23 | init(filepath:String, device:Device){ 24 | print(">>apk init apkhandler") 25 | super.init() 26 | self.filepath = filepath 27 | self.device = device 28 | } 29 | 30 | init(device:Device){ 31 | print(">>apk init apkhandler with no apk") 32 | super.init() 33 | self.device = device 34 | } 35 | 36 | func installAndLaunch(_ complete:@escaping ()->Void){ 37 | delegate?.apkHandlerDidStart() 38 | print(">>apkhandle") 39 | 40 | getInfoFromApk() { (apk) -> Void in 41 | self.install({ () -> Void in 42 | self.delegate?.apkHandlerDidUpdate("Launching \(apk.appName)...") 43 | self.launch(apk) 44 | complete() 45 | }) 46 | } 47 | } 48 | 49 | func install(_ completion:@escaping ()->Void){ 50 | print(">>apkinstall") 51 | delegate?.apkHandlerDidUpdate("Installing...") 52 | 53 | if device.adbIdentifier == nil { print("no adbIdentifier, aborting"); return } 54 | let s = ShellTasker(scriptFile: "installApkOnDevice") 55 | 56 | s.run(arguments: [device.adbIdentifier!, filepath]) { (output) -> Void in 57 | self.delegate?.apkHandlerDidUpdate("Installed") 58 | completion() 59 | } 60 | } 61 | 62 | func uninstallPackageWithName(_ packageName:String, completion:@escaping ()->Void){ 63 | print(">>Uninstall") 64 | delegate?.apkHandlerDidUpdate("Uninstalling app") 65 | let s = ShellTasker(scriptFile: "uninstallPackageOnDevice") 66 | let args = [device.adbIdentifier!, packageName] 67 | 68 | s.run(arguments: args, isUserScript: false, isIOS: false) { (output) -> Void in 69 | completion() 70 | } 71 | 72 | } 73 | 74 | func getInfoFromApk(_ complete:@escaping (Apk) -> Void){ 75 | print(">>apkgetinfofromapk") 76 | delegate?.apkHandlerDidUpdate("Getting info...") 77 | 78 | let shell = ShellTasker(scriptFile: "getApkInfo") 79 | shell.run(arguments: [self.filepath]) { (output) -> Void in 80 | let apk = Apk(rawAaptBadgingData: output as String) 81 | self.delegate?.apkHandlerDidGetInfo(apk) 82 | 83 | // try getting the icon out 84 | 85 | let iconShell = ShellTasker(scriptFile: "extractIconFromApk") 86 | iconShell.run(arguments: [self.filepath]) { (output) -> Void in 87 | print("Ready to add nsurl path to apk object: \(output)") 88 | 89 | apk.localIconPath = (output as String).trimmingCharacters(in: CharacterSet.whitespacesAndNewlines) 90 | 91 | 92 | complete(apk) 93 | } 94 | 95 | } 96 | } 97 | 98 | 99 | func launch(_ apk:Apk){ 100 | print(">>apklaunch") 101 | delegate?.apkHandlerDidUpdate("Launching...") 102 | 103 | if let packageName = apk.packageName, let launcherActivity = apk.launcherActivity { 104 | 105 | let ac = "\(packageName)/\(launcherActivity)" 106 | 107 | print("apklaunch of \(ac)") 108 | 109 | let s = ShellTasker(scriptFile: "launchActivity") 110 | s.run(arguments: [device.adbIdentifier!, ac]) { (output) -> Void in 111 | print("apk done launching") 112 | self.delegate?.apkHandlerDidUpdate("Running \(apk.appName)") 113 | self.delegate?.apkHandlerDidFinish() 114 | } 115 | } 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /AndroidTool/C.swift: -------------------------------------------------------------------------------- 1 | // 2 | // C.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/17/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class C: Constants { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /AndroidTool/CameraButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CameraButton.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 12/6/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class CameraButton: NSButton { 12 | 13 | required init?(coder: NSCoder) { 14 | super.init(coder: coder) 15 | unregisterDraggedTypes() 16 | } 17 | 18 | override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { 19 | return NSDragOperation.copy 20 | } 21 | 22 | override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { 23 | return NSDragOperation.copy 24 | } 25 | 26 | override func draw(_ dirtyRect: NSRect) { 27 | super.draw(dirtyRect) 28 | 29 | // Drawing code here. 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /AndroidTool/Constants.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Constants.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/13/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class Constants { 12 | static let NOTIF_NEWDATA = "mj.newData" 13 | static let NOTIF_NEWDATAVERBOSE = "mj.newDataVerbose" 14 | static let NOTIF_NEWSESSION = "mj.newSession" 15 | static let NOTIF_ALLOUTPUT = "mj.newAllOutput" 16 | static let NOTIF_COMMAND = "mj.command" 17 | static let NOTIF_COMMANDVERBOSE = "mj.commandVerbose" 18 | static let DROP_INVITE = "Drop a ZIP or APK prototype" 19 | static let PREF_SCREENSHOTFOLDER = "screenshotsFolder" 20 | static let PREF_SCREENRECORDINGSFOLDER = "screenRecordingsFolder" 21 | static let PREF_USEACTIVITYINFILENAME = "useActivityInFilename" 22 | static let PREF_LAUNCHINSTALLEDAPP = "launchInstalledApp" 23 | static let PREF_FLASHIMAGESINZIPFILES = "flashImagesInZipFiles" 24 | static let PREF_GENERATEGIF = "generateGif" 25 | 26 | 27 | static let defaultPrefValues = [ 28 | "timeValue":"10:09" 29 | ,"mobileDatatype":"No data type" 30 | ,"batteryLevel": "100%" 31 | ,"mobileLevel" : "4 bars" 32 | ,"verboseOutput" : false 33 | ,"screenRecordingsFolder": "" 34 | ,"screenshotsFolder": "" 35 | ,"createGIF": true 36 | ,"useActivityInFilename":true 37 | ,"launchInstalledApp":true 38 | ,"flashImagesInZipFiles":false 39 | ,"generateGif":false 40 | ] as [String : Any] 41 | 42 | static let tweakProperties = ["bluetooth", "clock", "alarm", "sync", "wifi", "location", "volume", "mute", "notifications", "mobile", "mobileDatatype", "mobileLevel", "batteryLevel", "batteryCharging", "airplane", "nosim", "speakerphone"] 43 | 44 | static let WIFI = "wifi" 45 | static let NOTIFICATIONS = "notifications" 46 | static let TIME = "time" 47 | static let TIMEVALUE = "timeValue" 48 | static let BLUETOOTH = "bluetooth" 49 | static let ALARM = "alarm" 50 | static let SYNC = "sync" 51 | static let LOCATION = "location" 52 | static let VOLUME = "volume" 53 | static let MUTE = "mute" 54 | static let DATATYPE = "datatype" 55 | static let BATTERYLEVEL = "batteryLevel" 56 | static let CHARGING = "charging" 57 | static let VERBOSEOUTPUT = "verboseOutput" 58 | } 59 | -------------------------------------------------------------------------------- /AndroidTool/DevicePickerViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DevicePickerViewController.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 4/24/15. 6 | // Copyright (c) 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | 12 | class DevicePickerViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource { 13 | 14 | @IBOutlet weak var deviceTable: NSTableView! 15 | 16 | var devices : [Device]! 17 | var apkPath: String! 18 | 19 | @IBOutlet weak var spinner: NSProgressIndicator! 20 | 21 | override init?(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 22 | super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 23 | 24 | } 25 | 26 | @IBAction func cancelPressed(_ sender: AnyObject) { 27 | if #available(OSX 10.10, *) { 28 | self.dismiss(nil) 29 | } else { 30 | // Fallback on earlier versions 31 | } 32 | } 33 | 34 | func numberOfRows(in tableView: NSTableView) -> Int { 35 | return devices.count 36 | } 37 | 38 | func installApkOnDevice(_ device:Device){ 39 | let adbIdentifier = device.adbIdentifier! 40 | 41 | spinner.isHidden = false 42 | spinner.startAnimation(nil) 43 | 44 | let args = ["\(adbIdentifier)", 45 | "\(apkPath)"] 46 | 47 | ShellTasker(scriptFile: "installApkOnDevice").run(arguments: args) { (output) -> Void in 48 | 49 | Util().showNotification("App installed on \(device.readableIdentifier())", moreInfo: "\(output)", sound: true) 50 | if #available(OSX 10.10, *) { 51 | self.dismiss(nil) 52 | } else { 53 | // Fallback on earlier versions 54 | } 55 | } 56 | } 57 | 58 | func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool { 59 | installApkOnDevice(devices[row]) 60 | return true 61 | } 62 | 63 | func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? { 64 | return devices[row].model 65 | } 66 | 67 | required init?(coder: NSCoder) { 68 | fatalError("init(coder:) has not been implemented") 69 | } 70 | 71 | override func awakeFromNib() { 72 | deviceTable.reloadData() 73 | print("devicescount: \(devices.count)") 74 | } 75 | 76 | override func viewDidLoad() { 77 | if #available(OSX 10.10, *) { 78 | super.viewDidLoad() 79 | } else { 80 | // Fallback on earlier versions 81 | } 82 | // Do view setup here. 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /AndroidTool/DropPassThroughImageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DropPassThroughImageView.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 12/6/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class DropPassThroughImageView: NSImageView { 12 | 13 | required init?(coder: NSCoder) { 14 | super.init(coder: coder) 15 | setup() 16 | } 17 | 18 | func setup(){ 19 | unregisterDraggedTypes() 20 | } 21 | 22 | override func draw(_ dirtyRect: NSRect) { 23 | super.draw(dirtyRect) 24 | 25 | // Drawing code here. 26 | } 27 | 28 | override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { 29 | return NSDragOperation.copy 30 | } 31 | 32 | override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { 33 | return NSDragOperation.copy 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /AndroidTool/DropReceiverView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DropReceiverView.swift 3 | // Shellpad 4 | // 5 | // Created by Morten Just Petersen on 10/30/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | protocol DropDelegate { 12 | func dropDragEntered(_ filePath:String) 13 | func dropDragPerformed(_ filePath:String) 14 | func dropDragExited() 15 | func dropUpdated(_ mouseAt:NSPoint) 16 | } 17 | 18 | class DropReceiverView: NSView { 19 | 20 | var delegate:DropDelegate? 21 | var testVar = "only you can see this"; 22 | 23 | func removeBackgroundColor(){ 24 | layer?.backgroundColor = NSColor.clear.cgColor 25 | } 26 | 27 | func addBackgroundColor(){ 28 | layer?.backgroundColor = NSColor(red:0.267, green:0.251, blue:0.290, alpha:1).cgColor 29 | } 30 | 31 | func setup(){ 32 | wantsLayer = true 33 | let fileTypes = [ 34 | "public.data" 35 | ] 36 | register(forDraggedTypes: fileTypes); 37 | } 38 | //https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html 39 | 40 | override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { 41 | 42 | // Swift.print("HELLO \(getPathFromBoard(sender.draggingPasteboard()))") 43 | let path = getPathFromBoard(sender.draggingPasteboard()) 44 | delegate?.dropDragEntered(path) 45 | addBackgroundColor() 46 | return NSDragOperation.copy 47 | } 48 | 49 | override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { 50 | return true 51 | } 52 | 53 | override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { 54 | delegate?.dropUpdated(sender.draggingLocation()) 55 | return NSDragOperation.copy 56 | } 57 | override func draggingExited(_ sender: NSDraggingInfo?) { 58 | removeBackgroundColor() 59 | delegate?.dropDragExited() 60 | } 61 | 62 | override func concludeDragOperation(_ sender: NSDraggingInfo?) { 63 | let path = getPathFromBoard((sender?.draggingPasteboard())!) 64 | Swift.print("path is \(path)") 65 | removeBackgroundColor() 66 | delegate?.dropDragPerformed(path) 67 | } 68 | 69 | func getPathFromBoard(_ board:NSPasteboard) -> String { 70 | return (NSURL.init(from: board)?.path)! 71 | } 72 | 73 | override init(frame frameRect: NSRect) { 74 | super.init(frame: frameRect) 75 | setup() 76 | } 77 | required init?(coder: NSCoder) { 78 | super.init(coder: coder) 79 | setup() 80 | } 81 | 82 | override func draw(_ dirtyRect: NSRect) { 83 | super.draw(dirtyRect) 84 | 85 | // Drawing code here. 86 | } 87 | 88 | 89 | } 90 | -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/.DS_Store -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_128x128.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_128x128@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_16x16.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_16x16@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_256x256.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_256x256@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_32x32.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_32x32@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_512x512.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/ApkIcon.iconset/icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/ApkIcon.iconset/icon_512x512@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "androidToolIcon16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "androidToolIcon32.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "androidToolIcon32-1.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "androidToolIcon64.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "androidToolIcon128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "androidToolIcon256.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "androidToolIcon256-1.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "androidToolIcon512.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "androidToolIcon512-1.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "androidToolIcon1024.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon1024.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon128.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon16.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon256-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon256-1.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon256.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon32-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon32-1.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon32.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon512-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon512-1.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon512.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/AppIcon.appiconset/androidToolIcon64.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/PhoneBlack.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "PhoneBlack.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "PhoneBlack@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "PhoneBlack@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/PhoneBlack.imageset/PhoneBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/PhoneBlack.imageset/PhoneBlack.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/PhoneBlack.imageset/PhoneBlack@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/PhoneBlack.imageset/PhoneBlack@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/PhoneBlack.imageset/PhoneBlack@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/PhoneBlack.imageset/PhoneBlack@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/WatchBlack.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "WatchBlack.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "WatchBlack@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "WatchBlack@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/WatchBlack.imageset/WatchBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/WatchBlack.imageset/WatchBlack.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/WatchBlack.imageset/WatchBlack@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/WatchBlack.imageset/WatchBlack@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/WatchBlack.imageset/WatchBlack@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/WatchBlack.imageset/WatchBlack@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraBlack.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "cameraBlack.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "cameraBlack@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "cameraBlack@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraBlack.imageset/cameraBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraBlack.imageset/cameraBlack.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraBlack.imageset/cameraBlack@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraBlack.imageset/cameraBlack@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraBlack.imageset/cameraBlack@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraBlack.imageset/cameraBlack@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundBlue.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "cameraRoundBlue.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "cameraRoundBlue@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "cameraRoundBlue@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundBlue.imageset/cameraRoundBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraRoundBlue.imageset/cameraRoundBlue.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundBlue.imageset/cameraRoundBlue@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraRoundBlue.imageset/cameraRoundBlue@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundBlue.imageset/cameraRoundBlue@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraRoundBlue.imageset/cameraRoundBlue@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundGreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "cameraRoundGreen.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "cameraRoundGreen@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "cameraRoundGreen@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundGreen.imageset/cameraRoundGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraRoundGreen.imageset/cameraRoundGreen.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundGreen.imageset/cameraRoundGreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraRoundGreen.imageset/cameraRoundGreen@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/cameraRoundGreen.imageset/cameraRoundGreen@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/cameraRoundGreen.imageset/cameraRoundGreen@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "deviceBackground@1x.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "deviceBackground@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "deviceBackground@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceBackground.imageset/deviceBackground@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/deviceBackground.imageset/deviceBackground@1x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceBackground.imageset/deviceBackground@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/deviceBackground.imageset/deviceBackground@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceBackground.imageset/deviceBackground@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/deviceBackground.imageset/deviceBackground@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceShadow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "deviceTop@1x.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "deviceTop@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "deviceTop@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceShadow.imageset/deviceTop@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/deviceShadow.imageset/deviceTop@1x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceShadow.imageset/deviceTop@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/deviceShadow.imageset/deviceTop@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/deviceShadow.imageset/deviceTop@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/deviceShadow.imageset/deviceTop@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/dragInvite.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "dragInvite.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "dragInvite@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "dragInvite@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/dragInvite.imageset/dragInvite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/dragInvite.imageset/dragInvite.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/dragInvite.imageset/dragInvite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/dragInvite.imageset/dragInvite@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/dragInvite.imageset/dragInvite@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/dragInvite.imageset/dragInvite@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/emptyState.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "emptyState.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "emptyState@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "emptyState@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/emptyState.imageset/emptyState.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/emptyState.imageset/emptyState.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/emptyState.imageset/emptyState@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/emptyState.imageset/emptyState@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/emptyState.imageset/emptyState@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/emptyState.imageset/emptyState@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/.DS_Store -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/androidlogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "androidlogo.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "androidlogo@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "androidlogo@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/androidlogo.imageset/androidlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/androidlogo.imageset/androidlogo.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/androidlogo.imageset/androidlogo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/androidlogo.imageset/androidlogo@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/androidlogo.imageset/androidlogo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/androidlogo.imageset/androidlogo@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/loaderButton.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "gradientedbutton.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "gradientedbutton@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "gradientedbutton@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/loaderButton.imageset/gradientedbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/loaderButton.imageset/gradientedbutton.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/loaderButton.imageset/gradientedbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/loaderButton.imageset/gradientedbutton@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/loaderButton.imageset/gradientedbutton@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/loaderButton.imageset/gradientedbutton@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoacer.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoAcer.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoAcer@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoAcer@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoacer.imageset/logoAcer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoacer.imageset/logoAcer.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoacer.imageset/logoAcer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoacer.imageset/logoAcer@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoacer.imageset/logoAcer@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoacer.imageset/logoAcer@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoapple.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoapple.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoapple@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoapple@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoapple.imageset/logoapple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoapple.imageset/logoapple.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoapple.imageset/logoapple@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoapple.imageset/logoapple@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoapple.imageset/logoapple@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoapple.imageset/logoapple@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoasus.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoAsus.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoAsus@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoAsus@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoasus.imageset/logoAsus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoasus.imageset/logoAsus.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoasus.imageset/logoAsus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoasus.imageset/logoAsus@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoasus.imageset/logoAsus@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoasus.imageset/logoAsus@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logogoogle.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "logogoogle.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "logogoogle@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "logogoogle@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logogoogle.imageset/logogoogle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logogoogle.imageset/logogoogle.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logogoogle.imageset/logogoogle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logogoogle.imageset/logogoogle@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logogoogle.imageset/logogoogle@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logogoogle.imageset/logogoogle@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohtc.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoHtc.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoHtc@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoHtc@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohtc.imageset/logoHtc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logohtc.imageset/logoHtc.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohtc.imageset/logoHtc@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logohtc.imageset/logoHtc@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohtc.imageset/logoHtc@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logohtc.imageset/logoHtc@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohuawei.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoHuawei.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoHuawei@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoHuawei@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohuawei.imageset/logoHuawei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logohuawei.imageset/logoHuawei.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohuawei.imageset/logoHuawei@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logohuawei.imageset/logoHuawei@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logohuawei.imageset/logoHuawei@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logohuawei.imageset/logoHuawei@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolenovo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoLenovo.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoLenovo@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoLenovo@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolenovo.imageset/logoLenovo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logolenovo.imageset/logoLenovo.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolenovo.imageset/logoLenovo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logolenovo.imageset/logoLenovo@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolenovo.imageset/logoLenovo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logolenovo.imageset/logoLenovo@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolge.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoLg.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoLg@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoLg@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolge.imageset/logoLg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logolge.imageset/logoLg.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolge.imageset/logoLg@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logolge.imageset/logoLg@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logolge.imageset/logoLg@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logolge.imageset/logoLg@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logomotorola.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoMotorola.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoMotorola@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoMotorola@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logomotorola.imageset/logoMotorola.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logomotorola.imageset/logoMotorola.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logomotorola.imageset/logoMotorola@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logomotorola.imageset/logoMotorola@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logomotorola.imageset/logoMotorola@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logomotorola.imageset/logoMotorola@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logonokia.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoNokia.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoNokia@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoNokia@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logonokia.imageset/logoNokia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logonokia.imageset/logoNokia.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logonokia.imageset/logoNokia@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logonokia.imageset/logoNokia@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logonokia.imageset/logoNokia@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logonokia.imageset/logoNokia@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logooneplus.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoOnePlus.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoOnePlus@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoOnePlus@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logooneplus.imageset/logoOnePlus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logooneplus.imageset/logoOnePlus.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logooneplus.imageset/logoOnePlus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logooneplus.imageset/logoOnePlus@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logooneplus.imageset/logoOnePlus@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logooneplus.imageset/logoOnePlus@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosamsung.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoSamsung.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoSamsung@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoSamsung@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosamsung.imageset/logoSamsung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logosamsung.imageset/logoSamsung.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosamsung.imageset/logoSamsung@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logosamsung.imageset/logoSamsung@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosamsung.imageset/logoSamsung@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logosamsung.imageset/logoSamsung@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosony.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoSony.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoSony@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoSony@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosony.imageset/logoSony.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logosony.imageset/logoSony.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosony.imageset/logoSony@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logosony.imageset/logoSony@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logosony.imageset/logoSony@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logosony.imageset/logoSony@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logotagheuer.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "logotagheuer.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "logotagheuer@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "logotagheuer@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logotagheuer.imageset/logotagheuer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logotagheuer.imageset/logotagheuer.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logotagheuer.imageset/logotagheuer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logotagheuer.imageset/logotagheuer@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logotagheuer.imageset/logotagheuer@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logotagheuer.imageset/logotagheuer@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoxiaomi.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "logoXiaomi.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "logoXiaomi@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "logoXiaomi@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoxiaomi.imageset/logoXiaomi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoxiaomi.imageset/logoXiaomi.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoxiaomi.imageset/logoXiaomi@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoxiaomi.imageset/logoXiaomi@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/logos/logoxiaomi.imageset/logoXiaomi@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/logos/logoxiaomi.imageset/logoXiaomi@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/moreButtonPlus.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "moreButtonPlus.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "moreButtonPlus@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "moreButtonPlus@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/moreButtonPlus.imageset/moreButtonPlus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/moreButtonPlus.imageset/moreButtonPlus.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/moreButtonPlus.imageset/moreButtonPlus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/moreButtonPlus.imageset/moreButtonPlus@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/moreButtonPlus.imageset/moreButtonPlus@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/moreButtonPlus.imageset/moreButtonPlus@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/recordButtonWhite.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "recordButtonWhite.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "recordButtonWhite@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "recordButtonWhite@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/recordButtonWhite.imageset/recordButtonWhite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/recordButtonWhite.imageset/recordButtonWhite.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/recordButtonWhite.imageset/recordButtonWhite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/recordButtonWhite.imageset/recordButtonWhite@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/recordButtonWhite.imageset/recordButtonWhite@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/recordButtonWhite.imageset/recordButtonWhite@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/revealFolder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "revealFolder.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "revealFolder@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "revealFolder@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/revealFolder.imageset/revealFolder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/revealFolder.imageset/revealFolder.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/revealFolder.imageset/revealFolder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/revealFolder.imageset/revealFolder@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/revealFolder.imageset/revealFolder@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/revealFolder.imageset/revealFolder@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/smallFolderArrow.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "smallFolderArrow.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "smallFolderArrow@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "smallFolderArrow@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/smallFolderArrow.imageset/smallFolderArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/smallFolderArrow.imageset/smallFolderArrow.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/smallFolderArrow.imageset/smallFolderArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/smallFolderArrow.imageset/smallFolderArrow@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/smallFolderArrow.imageset/smallFolderArrow@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/smallFolderArrow.imageset/smallFolderArrow@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/stopButton.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "stopButton.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "stopButton@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "stopButton@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/stopButton.imageset/stopButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/stopButton.imageset/stopButton.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/stopButton.imageset/stopButton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/stopButton.imageset/stopButton@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/stopButton.imageset/stopButton@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/stopButton.imageset/stopButton@3x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/videoBlack.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x", 6 | "filename" : "videoBlack.png" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x", 11 | "filename" : "videoBlack@2x.png" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "scale" : "3x", 16 | "filename" : "videoBlack@3x.png" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/videoBlack.imageset/videoBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/videoBlack.imageset/videoBlack.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/videoBlack.imageset/videoBlack@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/videoBlack.imageset/videoBlack@2x.png -------------------------------------------------------------------------------- /AndroidTool/Images.xcassets/videoBlack.imageset/videoBlack@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/Images.xcassets/videoBlack.imageset/videoBlack@3x.png -------------------------------------------------------------------------------- /AndroidTool/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDocumentTypes 8 | 9 | 10 | CFBundleTypeExtensions 11 | 12 | apk 13 | 14 | CFBundleTypeIconFile 15 | ApkIcon 16 | CFBundleTypeName 17 | apk 18 | CFBundleTypeRole 19 | Viewer 20 | LSHandlerRank 21 | Default 22 | LSTypeIsPackage 23 | 1 24 | NSDocumentClass 25 | 26 | 27 | 28 | CFBundleExecutable 29 | $(EXECUTABLE_NAME) 30 | CFBundleIconFile 31 | AppIcon 32 | CFBundleIdentifier 33 | $(PRODUCT_BUNDLE_IDENTIFIER) 34 | CFBundleInfoDictionaryVersion 35 | 6.0 36 | CFBundleName 37 | $(PRODUCT_NAME) 38 | CFBundlePackageType 39 | APPL 40 | CFBundleShortVersionString 41 | 1.65 42 | CFBundleSignature 43 | ???? 44 | CFBundleVersion 45 | 1 46 | LSApplicationCategoryType 47 | 48 | LSMinimumSystemVersion 49 | $(MACOSX_DEPLOYMENT_TARGET) 50 | NSHumanReadableCopyright 51 | Copyright © 2015 Morten Just Petersen. All rights reserved. 52 | NSMainNibFile 53 | MainMenu 54 | NSPrincipalClass 55 | NSApplication 56 | UTExportedTypeDeclarations 57 | 58 | 59 | CFBundleTypeExtensions 60 | 61 | apk 62 | 63 | CFBundleTypeIconFile 64 | ApkIcon 65 | CFBundleTypeName 66 | apk 67 | CFBundleTypeRole 68 | Viewer 69 | LSHandlerRank 70 | Default 71 | LSTypeIsPackage 72 | 1 73 | NSDocumentClass 74 | 75 | UTTypeDescription 76 | Android Application 77 | UTTypeIconFile 78 | ApkIcon 79 | UTTypeIdentifier 80 | com.mortenjust.AndroidTool.app 81 | UTTypeTagSpecification 82 | 83 | public.filename-extension 84 | 85 | apk 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /AndroidTool/LoaderView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LoaderView.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/20/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class LoaderView: NSImageView { 12 | 13 | 14 | required init?(coder: NSCoder) { 15 | super.init(coder: coder) 16 | setup() 17 | } 18 | 19 | override init(frame frameRect: NSRect) { 20 | super.init(frame: frameRect) 21 | setup() 22 | } 23 | 24 | 25 | func setup(){ 26 | self.wantsLayer = true 27 | isHidden = true 28 | } 29 | 30 | 31 | func startRotating(){ 32 | isHidden = false 33 | let rotate = CABasicAnimation(keyPath: "transform.rotation") 34 | rotate.fillMode = kCAFillModeForwards 35 | rotate.fromValue = 0.0 36 | rotate.toValue = CGFloat(.pi * 2.0) 37 | rotate.duration = 1 38 | rotate.repeatCount = Float.infinity 39 | layer?.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 40 | layer?.anchorPoint = CGPoint(x: 0.5, y: 0.5) 41 | layer?.add(rotate, forKey: nil) 42 | } 43 | func stopRotatingAndReset(){ 44 | stopRotating() 45 | 46 | CATransaction.begin() 47 | CATransaction.setCompletionBlock { () -> Void in 48 | self.isHidden = true 49 | } 50 | 51 | let rotate = CABasicAnimation(keyPath: "transform.rotation") 52 | rotate.fillMode = kCAFillModeForwards 53 | rotate.toValue = 0.0 54 | rotate.duration = 0.3 55 | 56 | layer?.position = CGPoint(x: self.frame.midX, y: self.frame.midY) 57 | layer?.anchorPoint = CGPoint(x: 0.5, y: 0.5) 58 | 59 | layer?.add(rotate, forKey: nil) 60 | CATransaction.commit() 61 | 62 | } 63 | 64 | func stopRotating(){ 65 | layer?.removeAllAnimations() 66 | } 67 | 68 | override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { 69 | return NSDragOperation.copy 70 | } 71 | 72 | override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { 73 | return NSDragOperation.copy 74 | } 75 | 76 | override func draw(_ dirtyRect: NSRect) { 77 | super.draw(dirtyRect) 78 | 79 | // Drawing code here. 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /AndroidTool/MovableButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MovableButton.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 12/6/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class MovableButton: NSButton { 12 | 13 | func moveUpBy(_ y:CGFloat, delaySeconds:CFTimeInterval=0){ 14 | self.layer?.removeAllAnimations() 15 | let moveTo:CGFloat = (layer?.position.y)! + y 16 | let move = CABasicAnimation(keyPath: "position.y") 17 | move.duration = 1 18 | move.beginTime = CACurrentMediaTime() + delaySeconds 19 | move.toValue = moveTo 20 | move.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 21 | 22 | CATransaction.begin() 23 | CATransaction.setCompletionBlock { () -> Void in 24 | self.frame.origin.y = (self.layer?.position.y)! + y 25 | } 26 | 27 | layer?.add(move, forKey: "moveUp") 28 | CATransaction.commit() 29 | } 30 | 31 | func moveDownBy(_ y:CGFloat, delaySeconds:CFTimeInterval=0){ 32 | self.layer?.removeAllAnimations() 33 | let moveTo:CGFloat = (layer?.position.y)! - y 34 | let move = CABasicAnimation(keyPath: "position.y") 35 | move.duration = 1 36 | move.beginTime = CACurrentMediaTime() + delaySeconds 37 | move.toValue = moveTo 38 | move.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 39 | 40 | CATransaction.begin() 41 | CATransaction.setCompletionBlock { () -> Void in 42 | self.frame.origin.y = (self.layer?.position.y)! - y 43 | } 44 | 45 | layer?.add(move, forKey: "moveDown") 46 | CATransaction.commit() 47 | } 48 | 49 | func fadeIn(){ 50 | let fade = CABasicAnimation(keyPath: "opacity") 51 | fade.duration = 1 52 | fade.fromValue = 0 53 | fade.toValue = 1 54 | CATransaction.begin() 55 | layer?.add(fade, forKey: "fadeIn") 56 | CATransaction.commit() 57 | layer?.opacity = 1 58 | } 59 | 60 | func fadeOut(_ completion:@escaping ()->Void){ 61 | let fade = CABasicAnimation(keyPath: "opacity") 62 | fade.duration = 1 63 | fade.toValue = 0 64 | 65 | CATransaction.begin() 66 | CATransaction.setCompletionBlock { () -> Void in 67 | completion() 68 | } 69 | layer?.add(fade, forKey: "fadeIn") 70 | CATransaction.commit() 71 | layer?.opacity = 0 72 | } 73 | 74 | func moveUpForUninstallButton(_ delaySeconds:CFTimeInterval=0){ 75 | moveUpBy(20, delaySeconds: delaySeconds) 76 | } 77 | 78 | func moveDownForUninstallButton(_ delaySeconds:CFTimeInterval=0){ 79 | moveDownBy(20, delaySeconds: delaySeconds) 80 | } 81 | 82 | required init?(coder: NSCoder) { 83 | super.init(coder: coder) 84 | wantsLayer = true 85 | } 86 | 87 | override func draw(_ dirtyRect: NSRect) { 88 | super.draw(dirtyRect) 89 | 90 | // Drawing code here. 91 | } 92 | 93 | 94 | 95 | 96 | } 97 | -------------------------------------------------------------------------------- /AndroidTool/MyPlayground.playground/Contents.swift: -------------------------------------------------------------------------------- 1 | //: Playground - noun: a place where people can play 2 | 3 | import Cocoa 4 | import Foundation 5 | 6 | var string = "~/Desktop" 7 | var bol:Bool = true 8 | 9 | "hej \(bol)" 10 | 11 | 12 | NSString(string: "~user/Desktop/AndroidTool").stringByExpandingTildeInPath 13 | 14 | 15 | 16 | func getFileSize(filePath:String) -> UInt64 { 17 | 18 | do { 19 | let atts:NSDictionary = try NSFileManager.defaultManager().attributesOfItemAtPath(filePath) 20 | return atts.fileSize() 21 | } catch _ { 22 | } 23 | 24 | return 1 25 | } 26 | 27 | let filepath="/Users/mortenjust/Downloads/obb/com.ea.game.nfs14_row-4317.obb" 28 | 29 | getFileSize(filepath) -------------------------------------------------------------------------------- /AndroidTool/MyPlayground.playground/Sources/SupportCode.swift: -------------------------------------------------------------------------------- 1 | // 2 | // This file (and all other Swift source files in the Sources directory of this playground) will be precompiled into a framework which is automatically made available to MyPlayground.playground. 3 | // 4 | -------------------------------------------------------------------------------- /AndroidTool/MyPlayground.playground/contents.xcplayground: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /AndroidTool/MyPlayground.playground/timeline.xctimeline: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /AndroidTool/ObbHandler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObbHandler.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 1/20/16. 6 | // Copyright © 2016 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | protocol ObbHandlerDelegate { 12 | func obbHandlerDidStart(_ bytes:String) 13 | func obbHandlerDidFinish() 14 | } 15 | 16 | class ObbHandler: NSObject { 17 | var filePath:String! 18 | var delegate:ObbHandlerDelegate? 19 | var device:Device! 20 | var fileSize:UInt64? 21 | 22 | init(filePath:String, device:Device){ 23 | print(">>obb init obbhandler") 24 | super.init() 25 | self.filePath = filePath 26 | self.device = device 27 | self.fileSize = Util.getFileSizeForFilePath(filePath) 28 | } 29 | 30 | func pushToDevice(){ 31 | print(">>zip flash") 32 | 33 | let shell = ShellTasker(scriptFile: "installObbForSerial") 34 | let bytes = (fileSize != nil) ? Util.formatBytes(fileSize!) : "? bytes" 35 | 36 | delegate?.obbHandlerDidStart(bytes) 37 | 38 | print("startin obb copying the \(bytes) file") 39 | shell.run(arguments: [self.device.adbIdentifier!, self.filePath]) { (output) -> Void in 40 | print("done copying OBB to device") 41 | self.delegate?.obbHandlerDidFinish() 42 | } 43 | } 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /AndroidTool/RawOutputWiewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RawOutputWiewController.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/21/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class RawOutputWiewController: NSViewController { 12 | 13 | 14 | 15 | 16 | override func viewDidLoad() { 17 | if #available(OSX 10.10, *) { 18 | super.viewDidLoad() 19 | } else { 20 | // Fallback on earlier versions 21 | } 22 | // Do view setup here. 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /AndroidTool/RawOutputWiewController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /AndroidTool/RawOutputWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RawOutputWindowController.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/21/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class RawOutputWindowController: NSWindowController { 12 | 13 | 14 | @IBAction func verboseClicked(_ sender: AnyObject) { 15 | } 16 | 17 | 18 | override func windowDidLoad() { 19 | super.windowDidLoad() 20 | 21 | // register to receive notifciations 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /AndroidTool/ShellTasker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShellTasker.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 4/23/15. 6 | // Copyright (c) 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | 12 | protocol ShellTaskDelegate { 13 | func shellTaskDidBegin() 14 | func shellTaskDidFinish() 15 | } 16 | 17 | class ShellTasker: NSObject { 18 | var scriptFile:String 19 | var task:Process! 20 | var outputIsVerbose = false; 21 | 22 | init(scriptFile:String){ 23 | self.scriptFile = scriptFile 24 | print("T:\(scriptFile)") 25 | } 26 | 27 | func stop(){ 28 | task.terminate() 29 | } 30 | 31 | func postNotification(_ message:NSString, channel:String){ 32 | NotificationCenter.default.post(name: Notification.Name(rawValue: channel), object: message) 33 | } 34 | 35 | func run(arguments args:[String]=[], isUserScript:Bool = false, isIOS:Bool = false, complete:@escaping (_ output:NSString)-> Void) { 36 | 37 | var output = NSString() 38 | var data = Data() 39 | 40 | var scriptPath:String 41 | 42 | if isUserScript { 43 | scriptPath = scriptFile 44 | } else { 45 | scriptPath = Bundle.main.path(forResource: scriptFile, ofType: "sh")! 46 | } 47 | 48 | let resourcesUrl = NSURL(fileURLWithPath: Bundle.main.path(forResource: "adb", ofType: "")!).deletingLastPathComponent 49 | 50 | let resourcesPath = resourcesUrl?.path 51 | 52 | //let resourcesPath = NSBundle.mainBundle().pathForResource("adb", ofType: "")?.stringByDeletingLastPathComponent 53 | 54 | let bash = "/bin/bash" 55 | 56 | task = Process() 57 | let pipe = Pipe() 58 | 59 | task.launchPath = bash 60 | 61 | var allArguments = [String]() 62 | allArguments.append("\(scriptPath)") // $1 63 | 64 | if !isIOS { 65 | allArguments.append(resourcesPath!) // $1 66 | } else 67 | { 68 | let imobileUrl = NSURL(fileURLWithPath: Bundle.main.path(forResource: "idevicescreenshot", ofType: "")!).deletingLastPathComponent 69 | let imobilePath = imobileUrl?.path 70 | //let imobilePath = NSBundle.mainBundle().pathForResource("idevicescreenshot", ofType: "")?.stringByDeletingLastPathComponent 71 | allArguments.append(imobilePath!) // $1 72 | } 73 | 74 | for arg in args { 75 | allArguments.append(arg) 76 | } 77 | 78 | task.arguments = allArguments 79 | 80 | // was task.arguments = [scriptPath, resourcesPath!, args] 81 | 82 | task.standardOutput = pipe 83 | task.standardError = pipe 84 | 85 | // post a notification with the command, for the rawoutput debugging window 86 | if self.outputIsVerbose { 87 | postNotification(scriptPath as NSString, channel: C.NOTIF_COMMANDVERBOSE) 88 | } else { 89 | postNotification(scriptPath as NSString, channel: C.NOTIF_COMMAND) 90 | } 91 | 92 | self.task.launch() 93 | 94 | pipe.fileHandleForReading.waitForDataInBackgroundAndNotify() 95 | 96 | NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable, object: pipe.fileHandleForReading, queue: nil) { (notification) -> Void in 97 | DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async(execute: { () -> Void in 98 | data = pipe.fileHandleForReading.readDataToEndOfFile() // use .availabledata instead to stream from the console, pretty cool 99 | output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! 100 | DispatchQueue.main.async(execute: { () -> Void in 101 | var channel = "" 102 | if self.outputIsVerbose { 103 | channel = C.NOTIF_NEWDATAVERBOSE 104 | } else { 105 | channel = C.NOTIF_NEWDATA 106 | } 107 | self.postNotification(output, channel: channel) 108 | complete(output) 109 | }) 110 | }) 111 | } 112 | 113 | 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /AndroidTool/Styles.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Styles.swift 3 | // Shellpad/androidtool 4 | // 5 | // Created by Morten Just Petersen on 10/31/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class Styles: NSObject { 12 | 13 | override init() { 14 | super.init() 15 | } 16 | 17 | func terminalAtts() -> [String:AnyObject]{ 18 | var atts = [String:AnyObject]() 19 | atts[NSForegroundColorAttributeName] = NSColor(red:0.671, green:0.671, blue:0.671, alpha:1) 20 | atts[NSFontAttributeName] = NSFont(name: "Monaco", size: 8.0) 21 | return atts 22 | } 23 | 24 | func commandAtts() -> [String:AnyObject]{ 25 | var atts = [String:AnyObject]() 26 | atts[NSForegroundColorAttributeName] = NSColor(red:1, green:1, blue:1, alpha:1) 27 | atts[NSFontAttributeName] = NSFont(name: "Monaco", size: 8.0); 28 | return atts 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /AndroidTool/Take Bugreport.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | declare -a arr 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 # 5 | adb=$thisdir/adb 6 | 7 | 8 | # -------------------- 9 | # 10 | # Add your script below. When sending adb commands to the user-selected device, use "$adb -s $serial" 11 | # 12 | # -------------------- 13 | 14 | TakeBugReport(){ 15 | ldap=$(whoami) 16 | now=$(date +"%m-%d-%Y-%H-%M-%S") 17 | devicename=$($adb -s $serial shell getprop ro.product.name) 18 | finalFilename=$devicename-$ldap-$now.png 19 | finalFilename="${finalFilename//[$'\t\r\n ']}" 20 | 21 | $adb -s $serial bugreport > $finalFilename".txt" 22 | } 23 | 24 | mkdir -p ~/Desktop/AndroidTool 25 | cd ~/Desktop/AndroidTool 26 | TakeBugReport 27 | open . #opens the Android Tool folder in Finder after executing. Could be annoying -------------------------------------------------------------------------------- /AndroidTool/TerminalOutputTextView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TerminalOutputTextView.swift 3 | // Shellpad/androidtool 4 | // 5 | // Created by Morten Just Petersen on 11/1/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class TerminalOutputTextView: NSTextView { 12 | 13 | required init?(coder: NSCoder) { 14 | super.init(coder: coder) 15 | setup() 16 | } 17 | 18 | func setup(){ 19 | Swift.print("TerminalOutputTextView") 20 | font = NSFont(name: "Courier", size: 12) 21 | backgroundColor = NSColor(red:0.231, green:0.216, blue:0.251, alpha:1) 22 | textColor = NSColor(red:0.392, green:0.294, blue:0.890, alpha:1) 23 | startListening() 24 | } 25 | 26 | override func draw(_ dirtyRect: NSRect) { 27 | super.draw(dirtyRect) 28 | } 29 | 30 | func startListening(){ 31 | NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Constants.NOTIF_NEWDATA), object: nil, queue: nil) { (notif) -> Void in 32 | Swift.print("#mj.newData notif") 33 | 34 | DispatchQueue.main.async(execute: { () -> Void in 35 | let s = notif.object as! String 36 | self.append(s) 37 | 38 | }) 39 | } 40 | 41 | NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: C.NOTIF_NEWDATAVERBOSE), object: nil, queue: nil) { (notif) -> Void in 42 | Swift.print("#mj.newData verbose notif") 43 | 44 | let wantsVerbose = UserDefaults.standard.bool(forKey: C.VERBOSEOUTPUT) 45 | 46 | if wantsVerbose { 47 | DispatchQueue.main.async(execute: { () -> Void in 48 | let s = notif.object as! String 49 | 50 | self.append(s) 51 | 52 | }) 53 | } 54 | } 55 | 56 | 57 | NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Constants.NOTIF_COMMAND), object: nil, queue: nil) { (notif) -> Void in 58 | Swift.print("#mj.newData notif") 59 | DispatchQueue.main.async(execute: { () -> Void in 60 | let s = notif.object as! String 61 | self.append("\n\n\(s)", atts: Styles().commandAtts()) 62 | }) 63 | } 64 | 65 | 66 | NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Constants.NOTIF_COMMANDVERBOSE), object: nil, queue: nil) { (notif) -> Void in 67 | Swift.print("#mj.newDataverbose notif") 68 | let wantsVerbose = UserDefaults.standard.bool(forKey: C.VERBOSEOUTPUT) 69 | if wantsVerbose { 70 | DispatchQueue.main.async(execute: { () -> Void in 71 | let s = notif.object as! String 72 | self.append("\n\n\(s)", atts: Styles().commandAtts()) 73 | }) 74 | } 75 | } 76 | 77 | NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Constants.NOTIF_NEWSESSION), object: nil, queue: nil) { (notif) -> Void in 78 | Swift.print("#mj.newSession notif") 79 | DispatchQueue.main.async(execute: { () -> Void in 80 | self.newSession() 81 | }) 82 | } 83 | } 84 | 85 | func newSession(){ 86 | append("\n\n----\n\n") 87 | } 88 | 89 | func append(_ appended: String, atts:[String:AnyObject] = Styles().terminalAtts()) { 90 | let s = NSAttributedString(string: "\n"+appended, attributes: atts) 91 | self.textStorage?.append(s) 92 | self.scrollToEndOfDocument(nil) 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /AndroidTool/WindowMoverScrollview.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WindowMoverScrollview.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/12/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class WindowMoverScrollview: NSScrollView { 12 | 13 | 14 | override var mouseDownCanMoveWindow:Bool { 15 | return true 16 | } 17 | 18 | override func draw(_ dirtyRect: NSRect) { 19 | super.draw(dirtyRect) 20 | 21 | // Drawing code here. 22 | } 23 | 24 | override func mouseDragged(with theEvent: NSEvent) { 25 | Swift.print("mouse dragged in windowmoverscrollwview") 26 | super.mouseDragged(with: theEvent) 27 | } 28 | 29 | override func mouseDown(with theEvent: NSEvent) { 30 | super.mouseDown(with: theEvent) 31 | } 32 | 33 | override func mouseUp(with theEvent: NSEvent) { 34 | Swift.print("mouse up") 35 | super.mouseUp(with: theEvent) 36 | } 37 | 38 | override func mouseEntered(with theEvent: NSEvent) { 39 | Swift.print("mouse entered") 40 | super.mouseEntered(with: theEvent) 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /AndroidTool/WindowMoverTableCellView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WindowMoverTableCellView.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/12/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class WindowMoverTableCellView: NSTableCellView { 12 | 13 | override func draw(_ dirtyRect: NSRect) { 14 | super.draw(dirtyRect) 15 | 16 | // Drawing code here. 17 | } 18 | 19 | override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { 20 | return NSDragOperation.copy 21 | } 22 | 23 | override var mouseDownCanMoveWindow:Bool { 24 | return true 25 | } 26 | 27 | override func mouseUp(with theEvent: NSEvent) { 28 | Swift.print("mouse up") 29 | } 30 | 31 | override func mouseEntered(with theEvent: NSEvent) { 32 | Swift.print("mouse entered") 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /AndroidTool/WindowMoverView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WindowMoverView.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/12/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class WindowMoverView: NSView { 12 | 13 | override func register(forDraggedTypes newTypes: [String]) { 14 | Swift.print("$$ registering") 15 | let fileTypes = [ 16 | ".apk" 17 | ] 18 | register(forDraggedTypes: fileTypes); 19 | } 20 | 21 | override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { 22 | Swift.print("dragging entered") 23 | return NSDragOperation.copy 24 | } 25 | 26 | override func acceptsFirstMouse(for theEvent: NSEvent?) -> Bool { 27 | return true 28 | } 29 | 30 | override var acceptsFirstResponder: Bool { 31 | return true 32 | } 33 | 34 | override func draw(_ dirtyRect: NSRect) { 35 | super.draw(dirtyRect) 36 | 37 | // Drawing code here. 38 | } 39 | 40 | override var mouseDownCanMoveWindow:Bool { 41 | return true 42 | } 43 | 44 | override func mouseUp(with theEvent: NSEvent) { 45 | Swift.print("mouse up windowmoverview") 46 | super.mouseUp(with: theEvent) 47 | } 48 | 49 | override func mouseEntered(with theEvent: NSEvent) { 50 | Swift.print("mouse entered windowmoverivew") 51 | super.mouseEntered(with: theEvent) 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /AndroidTool/ZipHandler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ZipHandler.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 12/7/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | protocol ZipHandlerDelegate { 12 | func zipHandlerDidStart() 13 | func zipHandlerDidFinish() 14 | } 15 | 16 | class ZipHandler: NSObject { 17 | var filepath:String! 18 | var delegate:ZipHandlerDelegate? 19 | var device:Device! 20 | 21 | init(filepath:String, device:Device){ 22 | print(">>zip init ziphandler") 23 | super.init() 24 | self.filepath = filepath 25 | self.device = device 26 | } 27 | 28 | func flash(){ 29 | print(">>zip flash") 30 | delegate?.zipHandlerDidStart() 31 | let shell = ShellTasker(scriptFile: "installZip") 32 | print("startin flashing") 33 | shell.run(arguments: [self.device.adbIdentifier!, self.filepath]) { (output) -> Void in 34 | print("done flashing") 35 | self.delegate?.zipHandlerDidFinish() 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AndroidTool/aapt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/aapt -------------------------------------------------------------------------------- /AndroidTool/adb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/adb -------------------------------------------------------------------------------- /AndroidTool/convertMovieFiletoGif.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # convertMovieFiletoGif.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 5/7/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 10 | inputFile=$3 11 | outputFile=$4 12 | scale=$5 13 | screenRecFolder=$6 14 | 15 | ConvertFile(){ 16 | $thisdir/ffmpeg -i $inputFile -vf scale=iw*$scale:ih*$scale $outputFile 17 | } 18 | 19 | echo "###### $screenRecFolder" 20 | mkdir -p "$screenRecFolder" 21 | cd "$screenRecFolder" 22 | 23 | ConvertFile 24 | -------------------------------------------------------------------------------- /AndroidTool/exitDemoMode.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # startDemoMode.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 11/16/15. 7 | # Copyright © 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 11 | serial=$2 12 | adb=$thisdir/adb 13 | 14 | "$adb" -s $serial shell am broadcast -a com.android.systemui.demo -e command exit -------------------------------------------------------------------------------- /AndroidTool/extractIconFromApk copy.sh: -------------------------------------------------------------------------------- 1 | aapt=$1 2 | apk=$2 3 | 4 | preview-android-icon () { 5 | iconFile=$($aapt d --values badging "$apk" | sed -n "/^application: /s/.*icon='\([^']*\).*/\1/p") 6 | echo "extracting $iconFile from $apk with $aapt" 7 | unzip -p $apk $iconFile > /tmp/icon.png 8 | open /tmp/icon.png 9 | } 10 | 11 | preview-android-icon -------------------------------------------------------------------------------- /AndroidTool/extractIconFromApk.sh: -------------------------------------------------------------------------------- 1 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 2 | aapt="$thisdir/aapt" 3 | apk=$2 4 | 5 | preview-android-icon () { 6 | iconFile=$("$aapt" d --values badging "$apk" | sed -n "/^application: /s/.*icon='\([^']*\).*/\1/p") 7 | #echo "extracting $iconFile from $apk with $aapt" 8 | unzip -p $apk $iconFile > /tmp/icon.png 9 | echo "/tmp/icon.png" 10 | } 11 | 12 | preview-android-icon -------------------------------------------------------------------------------- /AndroidTool/fastboot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/fastboot -------------------------------------------------------------------------------- /AndroidTool/ffmpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/ffmpeg -------------------------------------------------------------------------------- /AndroidTool/getApkInfo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # getApkInfo.sh 4 | # Shellpad 5 | # 6 | # Created by Morten Just Petersen on 11/1/15. 7 | # Copyright © 2015 Morten Just Petersen. All rights reserved. 8 | 9 | echo "get apk info" 10 | 11 | thisdir=$1 12 | filename=$2 13 | aapt=$thisdir/aapt 14 | 15 | echo "$aapt" dump badging "$filename" 16 | 17 | "$aapt" dump badging "$filename" -------------------------------------------------------------------------------- /AndroidTool/getCurrentActivityForIdentifier.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # getCurrentActivityForIdentifier.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 12/1/15. 7 | # Copyright © 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | identifier=$2 11 | adb=$thisdir/adb 12 | 13 | $adb -s $identifier shell dumpsys activity recents | sed -n '1,/realActivity/s/realActivity=//p' -------------------------------------------------------------------------------- /AndroidTool/getDetailsForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 5 | adb=$thisdir/adb #Xcode 6 | #adb="adb" #CL 7 | 8 | declare -a arr 9 | 10 | GetDetails(){ 11 | "$adb" -s $serial shell getprop 12 | } 13 | 14 | GetDetails -------------------------------------------------------------------------------- /AndroidTool/getResolutionForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 5 | adb=$thisdir/adb #Xcode 6 | #adb="adb" #CL 7 | 8 | declare -a arr 9 | 10 | GetResolution(){ 11 | echo "doing this:-------" 12 | echo "$adb" -s $serial shell wm size 13 | echo "-----------" 14 | 15 | "$adb" -s $serial shell wm size 16 | } 17 | 18 | GetResolution -------------------------------------------------------------------------------- /AndroidTool/getSerials.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # getSerials.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/23/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | adb=$thisdir/adb #Xcode 11 | #adb="adb" #CL 12 | let deviceCount=0 13 | 14 | declare -a arr 15 | 16 | GetSerials(){ 17 | while read line 18 | do 19 | if [ -n "$line" ] && [ "`echo $line | awk '{print $2}'`" == "device" ] 20 | then 21 | let deviceCount=$deviceCount+1 22 | serial="`echo $line | awk '{print $1}'`" 23 | 24 | if (( deviceCount > 1 )) 25 | then 26 | serials=$serials";" 27 | fi 28 | 29 | serials=$serials$serial 30 | fi 31 | done < <("$adb" devices) 32 | echo $serials 33 | } 34 | 35 | GetSerials -------------------------------------------------------------------------------- /AndroidTool/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/icon.png -------------------------------------------------------------------------------- /AndroidTool/idevicescreenshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/AndroidTool/idevicescreenshot -------------------------------------------------------------------------------- /AndroidTool/installApkOnDevice.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # installApkOnDevice.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/24/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 11 | serial=$2 12 | apkPath=$3 13 | 14 | adb=$thisdir/adb 15 | 16 | "$adb" -s $serial install -r "$3" -------------------------------------------------------------------------------- /AndroidTool/installObbForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ###################################################################### 4 | # 5 | # 6 | # Obb script 7 | # Thanks, Farhad Khairzad! 8 | # 9 | # 10 | ###################################################################### 11 | 12 | #Set up for AndroidTool 13 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 14 | serial=$2 15 | file=$3 16 | adb=$thisdir/adb 17 | 18 | #wiring up 19 | obb_type="main" 20 | 21 | 22 | #Set Script Name variable 23 | SCRIPT=`basename ${BASH_SOURCE[0]}` 24 | SVERSION='1.1b' #modified for AndroidTool 25 | 26 | #Set fonts for Help. 27 | #NORM=`tput sgr0` 28 | #BOLD=`tput bold` 29 | #REV=`tput smso` 30 | 31 | 32 | #NUMARGS=$# 33 | #file=$@ 34 | #if [ $NUMARGS -eq 0 ]; then 35 | # HELP 36 | #fi 37 | #if [ $NUMARGS -eq 2 ]; then 38 | # file=$2 39 | #fi 40 | #if [ $NUMARGS -gt 2 ]; then 41 | # echo "Option not allowed. Use ${BOLD}$SCRIPT -h${NORM} to see the help documentation." 42 | #fi 43 | 44 | function MAIN_PROCESS { 45 | file_name=$(basename "$file") 46 | dir_name=$(dirname "$file") 47 | 48 | echo "0.01m ready to do stuff with $file" 49 | echo "0.m cd into $dir_name where we find $file_name" 50 | cd "$dir_name" 51 | echo "1.m file_name: $file_name" 52 | 53 | if [[ ${file_name:0:5} = "main." ]]; then 54 | pkg_name=$(echo $file_name | perl -nle 'm/([^main\.\d+].+?(?=.obb))/; print $1') 55 | echo 'Copying' $file_name 'to obb/'$pkg_name'/' 56 | "$adb" shell mkdir -p sdcard/Android/obb/$pkg_name 57 | "$adb" push $file sdcard/Android/obb/$pkg_name/ 58 | elif [[ ${file_name:0:6} = "patch." ]]; then 59 | pkg_name=$(echo $file_name | perl -nle 'm/([^patch\.\d+].+?(?=.obb))/; print $1') 60 | echo 'Copying' $file_name 'to obb/'$pkg_name'/' 61 | "$adb" shell mkdir -p sdcard/Android/obb/$pkg_name 62 | "$adb" push $file sdcard/Android/obb/$pkg_name/ 63 | else 64 | echo "2.m no indication of patch/main, using main" 65 | pkg_name=$(echo "$file_name" | perl -nle 'm/(^[^-]+)/; print $1') 66 | obb_build=$(echo "$file_name" | perl -nle 'm/(?<=\-)(.*?)(?=\.)/; print $1') 67 | new_name=$obb_type.$obb_build.$pkg_name.obb 68 | echo "3.m creating local temp folder with package name: .tmp-obb/$pkg_name" 69 | mkdir -p ".tmp-obb/$pkg_name" 70 | echo "4.m Copying $new_name to obb/$pkg_name/" 71 | cp "$file" ".tmp-obb/$pkg_name/$new_name" 72 | echo "5. creating directory on device: $adb shell mkdir -p sdcard/Android/obb/$pkg_name" 73 | "$adb" shell mkdir -p "sdcard/Android/obb/$pkg_name" 74 | echo "6. pushing file to device: $adb push .tmp-obb/$pkg_name/$new_name sdcard/Android/obb/$pkg_name/" 75 | "$adb" push ".tmp-obb/$pkg_name/$new_name" "sdcard/Android/obb/$pkg_name/" 76 | echo "7. removing local temp folder" 77 | rm -r .tmp-obb 78 | fi 79 | exit 80 | } 81 | 82 | function VERIFY_FILE { 83 | echo $file 84 | echo $FILE_EXT 85 | TEMPFILE=`basename $file` 86 | FILE_BASE=`echo "${TEMPFILE%.*}"` #file without extension 87 | FILE_EXT="${TEMPFILE##*.}" #file extension 88 | 89 | if [ -z "$file" ]; then 90 | echo "Select a .obb file" 91 | else 92 | if [ $FILE_EXT == "obb" ]; then 93 | MAIN_PROCESS 94 | else 95 | echo "Select a valid .obb file" 96 | fi 97 | fi 98 | 99 | exit 100 | } 101 | ### Start getopts code ### 102 | 103 | #Parse command line flags 104 | #If an option should be followed by an argument, it should be followed by a ":". 105 | #Notice there is no ":" after "h". The leading ":" suppresses error messages from 106 | #getopts. This is required to get my unrecognized option code to work. 107 | 108 | #obb_type="main" 109 | 110 | #while getopts :m:p:h opt; do 111 | # case $opt in 112 | # m) #set option "a" 113 | # obb_type="main" 114 | # ;; 115 | # p) #set option "b" 116 | # obb_type="patch" 117 | # ;; 118 | # h) #set option "b" 119 | # HELP 120 | # ;; 121 | # \?) #unrecognized option - show help 122 | # echo -e \\n"Option -${BOLD}$OPTARG${NORM} not allowed." 123 | # HELP 124 | # #If you just want to display a simple error message instead of the full 125 | # #help, remove the 2 lines above and uncomment the 2 lines below. 126 | # #echo -e "Use ${BOLD}$SCRIPT -h${NORM} to see the help documentation."\\n 127 | # #exit 2 128 | # ;; 129 | # 130 | # esac 131 | #done 132 | 133 | #if [ $# -eq 1 ] || [ $# -eq 2 ]; then 134 | # if [ ! -f $file ]; then 135 | # echo "File not found!" 136 | # else 137 | VERIFY_FILE 138 | # fi 139 | #fi -------------------------------------------------------------------------------- /AndroidTool/installZip.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # installZip.sh 4 | # Shellpad 5 | # 6 | # Created by Morten Just Petersen on 11/1/15. 7 | # Copyright © 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 10 | serial=$2 11 | filename=$3 12 | 13 | fastboot=$1/fastboot 14 | adb=$1/adb 15 | 16 | echo "Flashing with fastboot" 17 | 18 | echo "$adb" -s $serial reboot-bootloader 19 | "$adb" -s $serial reboot-bootloader 20 | 21 | echo "$fastboot" -s $serial update "$filename" 22 | "$fastboot" -s $serial update "$filename" -------------------------------------------------------------------------------- /AndroidTool/launchActivity.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # launchActivity.sh 4 | # Shellpad 5 | # 6 | # Created by Morten Just Petersen on 11/1/15. 7 | # Copyright © 2015 Morten Just Petersen. All rights reserved. 8 | # am start -n yourpackagename/.activityname 9 | # adb shell am start com.mortenjust.streamvsd/com.mortenjust.streamvsd.GridActivity 10 | 11 | thisdir=$1 12 | serial=$2 13 | packageAndActivity=$3 14 | adb=$thisdir/adb 15 | 16 | echo "$adb" -s $serial shell am start $packageAndActivity 17 | "$adb" -s $serial shell am start $packageAndActivity -------------------------------------------------------------------------------- /AndroidTool/postProcessMovieForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # postprocessmovie.sh 4 | # Bugs 5 | # 6 | # Created by Morten Just Petersen on 4/10/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | #adb="/usr/local/bin/adb" 11 | 12 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 13 | serial=$2 14 | width=$3 15 | height=$4 16 | bitrate=$5 #carryover since this file shares arg structure with recordmovie 17 | screenRecFolder=$6 18 | generateGif=$7 19 | 20 | adb=$thisdir/adb 21 | 22 | deviceName=$("$adb" -s $serial shell getprop ro.product.name) 23 | buildId=$("$adb" -s $serial shell getprop ro.build.id) 24 | ldap=$(whoami) 25 | now=$(date +'%m%d%Y%H%M%S') 26 | finalFileName=$deviceName$buildId$ldap$now 27 | finalFileName="${finalFileName//[$'\t\r\n ']}" 28 | 29 | echo "###### $screenRecFolder" 30 | mkdir -p "$screenRecFolder" 31 | cd "$screenRecFolder" 32 | 33 | 34 | chara=$("$adb" -s $serial shell getprop ro.build.characteristics) 35 | if [[ $chara == *"watch"* ]] 36 | 37 | then # -- Watch --- 38 | echo 'Copying from watch...' 39 | "$adb" -s $serial pull /sdcard/screencapture.raw 40 | "$adb" -s $serial shell rm /sdcard/screencapture.raw 41 | 42 | echo '#Converting...' 43 | 44 | $thisdir/ffmpeg -f rawvideo -vcodec rawvideo -s $width"x"$height -pix_fmt rgb24 -r 10 -i screencapture.raw -an -c:v libx264 -pix_fmt yuv420p $finalFileName.mp4 45 | 46 | # $thisdir/ffmpeg -f rawvideo -vcodec rawvideo -pix_fmt rgb24 -r 10 -i screencapture.raw -an -c:v libx264 -pix_fmt yuv420p $finalFileName.mp4 47 | 48 | if [ "$generateGif" = true ] ; then 49 | echo 'Generating gif...' 50 | $thisdir/ffmpeg -i $finalFileName.mp4 $finalFileName.gif 51 | fi 52 | 53 | echo 'Cleaning up...' 54 | rm screencapture.raw 55 | 56 | else # -- Phone --- 57 | echo 'copying from phone...' 58 | "$adb" -s $serial pull /sdcard/capture.mp4 59 | mv capture.mp4 $finalFileName.mp4 60 | 61 | if [ "$generateGif" = true ] ; then 62 | echo 'Generating gif...' 63 | $thisdir/ffmpeg -i $finalFileName.mp4 $finalFileName.gif 64 | fi 65 | 66 | echo 'cleaning up' 67 | "$adb" -s $serial shell rm /sdcard/capture.mp4 68 | fi 69 | 70 | echo 'Opening file...' 71 | open $finalFileName.mp4 72 | -------------------------------------------------------------------------------- /AndroidTool/previewPopoverViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // previewPopoverViewController.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 5/9/15. 6 | // Copyright (c) 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class previewPopoverViewController: NSViewController { 12 | 13 | override func viewDidLoad() { 14 | if #available(OSX 10.10, *) { 15 | super.viewDidLoad() 16 | } else { 17 | // Fallback on earlier versions 18 | } 19 | // Do view setup here. 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /AndroidTool/scriptsPopoverViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // scriptsPopoverViewController.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 4/26/15. 6 | // Copyright (c) 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | // FIXME: comparison operators with optionals were removed from the Swift Standard Libary. 11 | // Consider refactoring the code to use the non-optional operators. 12 | fileprivate func < (lhs: T?, rhs: T?) -> Bool { 13 | switch (lhs, rhs) { 14 | case let (l?, r?): 15 | return l < r 16 | case (nil, _?): 17 | return true 18 | default: 19 | return false 20 | } 21 | } 22 | 23 | // FIXME: comparison operators with optionals were removed from the Swift Standard Libary. 24 | // Consider refactoring the code to use the non-optional operators. 25 | fileprivate func > (lhs: T?, rhs: T?) -> Bool { 26 | switch (lhs, rhs) { 27 | case let (l?, r?): 28 | return l > r 29 | default: 30 | return rhs < lhs 31 | } 32 | } 33 | 34 | 35 | @objc protocol UserScriptDelegate : class { 36 | func userScriptStarted() 37 | func userScriptEnded() 38 | func userScriptWantsSerial() -> String 39 | } 40 | 41 | class scriptsPopoverViewController: NSViewController { 42 | let buttonHeight:CGFloat = 30 43 | 44 | // accepted answer here http://stackoverflow.com/questions/26180268/interface-builder-iboutlet-and-protocols-for-delegate-and-datasource-in-swift 45 | @IBOutlet var delegate : UserScriptDelegate! 46 | 47 | let fileM = FileManager.default 48 | 49 | func setup(){ 50 | let folder = Util().getSupportFolderScriptPath() 51 | let allScripts = Util().getFilesInScriptFolder(folder) 52 | 53 | if allScripts?.count > 0 { 54 | addScriptsToView(allScripts!, view: self.view) 55 | } 56 | } 57 | 58 | 59 | func addScriptsToView(_ scripts:[String], view:NSView){ 60 | var i:CGFloat = 1 61 | 62 | view.frame.size.height = CGFloat(scripts.count) * (buttonHeight+3) + buttonHeight 63 | 64 | let folderButton = NSButton(frame: NSRect(x: 10.0, y: 3, 65 | width: view.bounds.width-15.0, 66 | height: buttonHeight)) 67 | folderButton.image = NSImage(named: "revealFolder") 68 | folderButton.isBordered = false 69 | folderButton.action = #selector(revealScriptFolderClicked) 70 | folderButton.target = self 71 | view.addSubview(folderButton) 72 | 73 | for script in scripts { 74 | let scriptButton = NSButton(frame: NSRect(x: 10.0, y: (i*buttonHeight+3), 75 | width: view.bounds.width-15.0, 76 | height: buttonHeight)) 77 | 78 | let friendlyScriptName = script.replacingOccurrences(of: ".sh", with: "") 79 | scriptButton.title = friendlyScriptName 80 | if #available(OSX 10.10.3, *) { 81 | scriptButton.setButtonType(NSButtonType.accelerator) 82 | } else { 83 | // Fallback on earlier versions 84 | } 85 | scriptButton.bezelStyle = NSBezelStyle.rounded 86 | scriptButton.action = #selector(runScriptClicked) 87 | scriptButton.target = self 88 | 89 | view.addSubview(scriptButton) 90 | i += 1 91 | } 92 | } 93 | 94 | func runScript(_ scriptPath:String){ 95 | delegate.userScriptStarted() 96 | let serial:String = delegate.userScriptWantsSerial() 97 | 98 | print("ready to run on \(serial)") 99 | 100 | ShellTasker(scriptFile: scriptPath).run(arguments: ["\(serial)"], isUserScript: true) { (output) -> Void in 101 | self.delegate.userScriptEnded() 102 | } 103 | } 104 | 105 | func runScriptClicked(_ sender:NSButton){ 106 | let scriptName = "\(sender.title).sh" 107 | let scriptPath = "\(Util().getSupportFolderScriptPath())/\(scriptName)" 108 | print("ready to run \(scriptPath)") 109 | runScript(scriptPath) 110 | } 111 | 112 | func revealScriptFolderClicked(_ sender:NSButton) { 113 | Util().revealScriptsFolder() 114 | } 115 | 116 | override func viewDidLoad() { 117 | if #available(OSX 10.10, *) { 118 | super.viewDidLoad() 119 | } else { 120 | // Fallback on earlier versions 121 | } 122 | // Do view setup here. 123 | } 124 | 125 | override func awakeFromNib() { 126 | setup() 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /AndroidTool/setDemoModeOptions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # setDemoModeOptions.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 11/16/15. 7 | # Copyright © 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 11 | serial=$2 12 | adb=$thisdir/adb 13 | settings=$3 14 | allcmds="" 15 | 16 | "$adb" -s $serial shell settings put global sysui_demo_allowed 1 17 | echo "$adb" -s $serial shell settings put global sysui_demo_allowed 1 18 | 19 | "$adb" -s $serial shell am broadcast -a com.android.systemui.demo -e command enter 20 | echo "$adb" -s $serial shell am broadcast -a com.android.systemui.demo -e command enter 21 | 22 | IFS='~' read -ra ADDR <<< "$settings" 23 | for command in "${ADDR[@]}"; do 24 | echo "$adb" -s $serial shell "am broadcast -a com.android.systemui.demo -e command $command" 25 | "$adb" -s $serial shell "am broadcast -a com.android.systemui.demo -e command $command" 26 | done -------------------------------------------------------------------------------- /AndroidTool/startRecordingForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # startrecording.sh 4 | # Bugs 5 | # 6 | # Created by Morten Just Petersen on 4/10/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | serial=$2 11 | width=$3 12 | height=$4 13 | bitrate=$5 14 | 15 | adb=$thisdir/adb 16 | 17 | chara=$($adb -s $serial shell getprop ro.build.characteristics) 18 | if [[ $chara == *"watch"* ]] 19 | then 20 | echo "Recording from watch..." 21 | # Get resolution if no custom res was specified 22 | if [[ ! $width ]] 23 | then 24 | width=`"$adb" -s $serial shell dumpsys display | grep mDisplayWidth | awk -F '=' '{ print $2 }' | tr -d '\r\n'` 25 | fi 26 | if [[ ! $height ]] 27 | then 28 | height=`"$adb" -s $serial shell dumpsys display | grep mDisplayHeight | awk -F '=' '{ print $2 }' | tr -d '\r\n'` 29 | fi 30 | sizeopt="" 31 | # Put a --size option only if both params are available 32 | if [[ $width && $height ]] 33 | then 34 | sizeopt=${width}x${height} 35 | fi 36 | 37 | "$adb" -s $serial shell screenrecord --size $sizeopt --o raw-frames /sdcard/screencapture.raw 38 | else 39 | echo "Recording from phone..." 40 | orientation=$("$adb" -s $serial shell dumpsys input | grep 'SurfaceOrientation' | awk '{ print $2 }') 41 | if [[ "${orientation//[$'\t\r\n ']}" != "0" ]] 42 | then 43 | "$adb" -s $serial shell screenrecord --bit-rate $bitrate --verbose --size $height"x"$width /sdcard/capture.mp4 # > $1/reclog.txt 44 | else 45 | "$adb" -s $serial shell screenrecord --bit-rate $bitrate --verbose --size $width"x"$height /sdcard/capture.mp4 # > $1/reclog.txt 46 | fi 47 | fi 48 | -------------------------------------------------------------------------------- /AndroidTool/takeScreenshotOfDeviceWithSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # takeScreenshotOfDeviceWithSerial.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/23/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | #!/bin/bash 10 | 11 | declare -a arr 12 | 13 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 14 | serial=$2 15 | screenshotFolder=$3 16 | activityName=$4 17 | adb=$thisdir/adb 18 | 19 | TakeScreenshot(){ 20 | deviceName=$("$adb" -s $serial shell getprop ro.product.name) 21 | buildId=$("$adb" -s $serial shell getprop ro.build.id) 22 | ldap=$(whoami) 23 | now=$(date +'%m%d%Y%H%M%S') 24 | if [ -n "$activityName" ]; then 25 | finalFileName=$activityName-$now.png 26 | else 27 | finalFileName=$deviceName$buildId$ldap$now.png 28 | fi 29 | finalFileName="${finalFileName//[$'\t\r\n ']}" 30 | echo "Taking screenshot of $serial" 31 | 32 | "$adb" -s $serial shell screencap -p /sdcard/$finalFileName 33 | "$adb" -s $serial pull /sdcard/$finalFileName 34 | "$adb" -s $serial shell rm /sdcard/$finalFileName 35 | 36 | open $finalFileName 37 | } 38 | 39 | echo "###### $screenshotFolder" 40 | mkdir -p "$screenshotFolder" 41 | cd "$screenshotFolder" 42 | TakeScreenshot -------------------------------------------------------------------------------- /AndroidTool/takeScreenshotOfDeviceWithUUID.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # takeScreenshotForDeviceWithUUID.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 5/4/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | imobile=$1 9 | uuid=$2 10 | screenshotFolder=$3 11 | 12 | now=$(date +'%m%d%Y%H%M%S') 13 | ldap=$(whoami) 14 | finalFilename=iOS$ldap$now.png #todo: we could pass iosversion and model as $3. It's in the data model 15 | echo "ready to shoot to $finalFilename" 16 | 17 | TakeScreenshot(){ 18 | export DYLD_LIBRARY_PATH=$imobile 19 | $imobile/idevicescreenshot -u $uuid rawiosshot.tiff 20 | sips -s format png rawiosshot.tiff --out $finalFilename 21 | rm rawiosshot.tiff 22 | open $finalFilename 23 | } 24 | 25 | echo "###### $screenshotFolder" 26 | mkdir -p "$screenshotFolder" 27 | cd "$screenshotFolder" 28 | TakeScreenshot -------------------------------------------------------------------------------- /AndroidTool/uninstallPackageOnDevice.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # uninstallPackageOnDevice.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 12/5/15. 7 | # Copyright © 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | serial=$2 11 | packageName=$3 12 | 13 | adb=$thisdir/adb 14 | 15 | 16 | # uninstall -k ..would keep cache and data files 17 | echo "$adb" -s $serial uninstall -r "$3" 18 | "$adb" -s $serial uninstall "$3" -------------------------------------------------------------------------------- /AndroidToolTests/AndroidToolTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AndroidToolTests.swift 3 | // AndroidToolTests 4 | // 5 | // Created by Morten Just Petersen on 4/22/15. 6 | // Copyright (c) 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | import XCTest 11 | 12 | class AndroidToolTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | XCTAssert(true, "Pass") 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure() { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /AndroidToolTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Demos/dualscreenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/dualscreenshot.gif -------------------------------------------------------------------------------- /Demos/installapk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/installapk.gif -------------------------------------------------------------------------------- /Demos/iosandandroid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/iosandandroid.gif -------------------------------------------------------------------------------- /Demos/iosscreenrecording.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/iosscreenrecording.gif -------------------------------------------------------------------------------- /Demos/iosscreenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/iosscreenshot.gif -------------------------------------------------------------------------------- /Demos/phonerecording.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/phonerecording.gif -------------------------------------------------------------------------------- /Demos/phonerecordingbig.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/phonerecordingbig.gif -------------------------------------------------------------------------------- /Demos/plugging in.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/plugging in.gif -------------------------------------------------------------------------------- /Demos/scriptsfolder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/Demos/scriptsfolder.gif -------------------------------------------------------------------------------- /PreferencesWindowController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PreferencesWindowController.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 5/1/15. 6 | // Copyright (c) 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class PreferencesWindowController: NSWindowController { 12 | 13 | 14 | @IBAction func screenshotFolderClicked(_ sender: AnyObject) { 15 | selectFolder("Screenshots", message: "Save screenshots in this folder", defaultsPath: "screenshotsFolder") 16 | } 17 | 18 | @IBAction func screenRecordingFolderClicked(_ sender: AnyObject) { 19 | 20 | selectFolder("Screen recordings", message: "Save recordings in this folder", defaultsPath: "screenRecordingsFolder") 21 | } 22 | 23 | 24 | override func windowDidLoad() { 25 | super.windowDidLoad() 26 | // all bindings are belong to IB 27 | } 28 | 29 | 30 | 31 | func selectFolder(_ title:String, message:String, defaultsPath:String){ 32 | let openPanel = NSOpenPanel(); 33 | openPanel.title = title 34 | openPanel.message = message 35 | openPanel.showsResizeIndicator=true; 36 | openPanel.canChooseDirectories = true; 37 | openPanel.canChooseFiles = false; 38 | openPanel.allowsMultipleSelection = false; 39 | openPanel.canCreateDirectories = true; 40 | openPanel.begin { (result) -> Void in 41 | if(result == NSFileHandlingPanelOKButton){ 42 | let path = openPanel.url!.path 43 | print("selected folder is \(path), saving to \(defaultsPath)"); 44 | let ud = UserDefaults.standard 45 | ud.setValue(path, forKey: defaultsPath) 46 | } 47 | } 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Android tool for Mac 2 | 3 | ## Download 4 | **[Download the latest version here](https://github.com/mortenjust/androidtool-mac/releases/)** 5 | 6 | * Copy AndroidTool.app to your Applications folder 7 | * Right click AndroidTool and choose Open 8 | 9 | To install using [homebrew-cask](http://caskroom.io/), run `brew cask install androidtool` in the terminal. 10 | 11 | ## What's this? 12 | 13 | 14 | Android tool lets you do common Android designer and developer tasks in one click: 15 | * Take screenshots 16 | * Take screen videos 17 | * Install (sideload) APKs without the Play Store 18 | * Take bug reports 19 | * Use common scripts 20 | * Do all of the above on all devices connected to your Mac, in one click 21 | 22 | ## Recording video 23 | 24 | 25 | # Requirements 26 | * MacOS 10.9 Mavericks for Android features 27 | * MacOS 10.10 Yosemite for iOS features 28 | * Android 4.4 or newer for screen recording 29 | * Android 4.3 or newer for screenshots (could work on older devices, please report) 30 | * No Android or iOS SDK required (whaat) 31 | 32 | Android Tool outputs both mp4 and an animated gif. The animated gif can be placed in a Google Docs document or an email. 33 | 34 | ## Installing apps 35 | 36 | 37 | Double click any APK file on your hard drive and Android Tool pops up asking you onto which device you want to install it. 38 | 39 | ## Plain old screenshots 40 | 41 | 42 | Take screenshots of one or all devices connected to your mac - in one click, or by pressing cmd-shift-S 43 | 44 | ## Your own scripts 45 | 46 | 47 | Add your own perfect bash shell scripts to the scripts folder and execute them on a single device, or all devices connected to your Mac. See the example script in the scripts folder how to target a the user-selected device. 48 | 49 | ## Questions? 50 | * Check the FAQ or open an issue 51 | * Follow me on Twitter or check my blog for updates 52 | 53 | ## Thanks 54 | 55 | ### Farhad Khairzad 56 | For the OBB installer script 57 | 58 | ### FFmpeg 59 | This software uses code of FFmpeg licensed under the LGPLv2.1 and its source can be downloaded here 60 | 61 | ### ImageMagick 62 | Licensed under the ImageMagick License (the "License"); you may not use 63 | this file except in compliance with the License. You may obtain a copy 64 | of the License at 65 | 66 | http://www.imagemagick.org/script/license.php 67 | 68 | Unless required by applicable law or agreed to in writing, software 69 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 70 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 71 | License for the specific language governing permissions and limitations 72 | under the License. 73 | -------------------------------------------------------------------------------- /StatusTextField.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StatusTextField.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/24/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class StatusTextField: NSTextField { 12 | 13 | override func draw(_ dirtyRect: NSRect) { 14 | super.draw(dirtyRect) 15 | 16 | // Drawing code here. 17 | } 18 | 19 | required init?(coder: NSCoder) { 20 | super.init(coder: coder) 21 | setup() 22 | } 23 | 24 | func setup(){ 25 | wantsLayer = true 26 | } 27 | 28 | 29 | 30 | func animateIn(_ completion:@escaping ()->Void?){ 31 | 32 | let moveTo = (layer?.frame.origin.y)! - 5 33 | let move = CABasicAnimation(keyPath: "position.y") 34 | move.toValue = moveTo 35 | move.duration = 0.2 36 | 37 | move.isRemovedOnCompletion = true 38 | move.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 39 | 40 | let fade = CABasicAnimation(keyPath: "opacity") 41 | fade.fromValue = 0 42 | fade.toValue = 1 43 | fade.duration = 0.2 44 | fade.isRemovedOnCompletion = true 45 | fade.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 46 | 47 | CATransaction.begin() 48 | CATransaction.setCompletionBlock { () -> Void in 49 | completion() 50 | } 51 | 52 | layer?.add(fade, forKey: "basicOpacity") 53 | layer?.opacity = 1 54 | layer?.add(move, forKey: "basicMove") 55 | layer?.frame.origin.y = moveTo 56 | 57 | CATransaction.commit() 58 | 59 | 60 | } 61 | 62 | 63 | func animateOut(_ completion:@escaping ()->Void){ 64 | let moveTo = (layer?.frame.origin.y)! + 5 65 | let move = CABasicAnimation(keyPath: "position.y") 66 | move.toValue = moveTo 67 | move.duration = 0.2 68 | move.isRemovedOnCompletion = true 69 | move.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 70 | 71 | let fade = CABasicAnimation(keyPath: "opacity") 72 | fade.fromValue = 1 73 | fade.toValue = 0 74 | fade.isRemovedOnCompletion = true 75 | fade.duration = 0.2 76 | fade.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 77 | 78 | CATransaction.begin() 79 | CATransaction.setCompletionBlock { () -> Void in 80 | completion() 81 | } 82 | 83 | layer?.add(fade, forKey: "basicOpacity") 84 | layer?.opacity = 0 85 | layer?.add(move, forKey: "basicMove") 86 | layer?.frame.origin.y = moveTo 87 | 88 | CATransaction.commit() 89 | } 90 | 91 | 92 | func setText(_ text:String, shouldFadeOut:Bool = true){ 93 | animateOut { () -> Void in 94 | self.stringValue = text 95 | 96 | if shouldFadeOut { 97 | self.animateIn { () -> Void? in 98 | self.slowlyDecay() 99 | } 100 | } 101 | 102 | } 103 | } 104 | 105 | 106 | func slowlyDecay(){ 107 | wantsLayer = true 108 | let anim = CABasicAnimation(keyPath: "opacity") 109 | anim.fromValue = 1 110 | anim.toValue = 0 111 | anim.duration = 60 //* 5 // 5 mins 112 | self.layer?.add(anim, forKey: "opacity") 113 | alphaValue = 0 114 | } 115 | 116 | } 117 | -------------------------------------------------------------------------------- /UX/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/.DS_Store -------------------------------------------------------------------------------- /UX/androidTool.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/androidTool.sketch -------------------------------------------------------------------------------- /UX/exports/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/.DS_Store -------------------------------------------------------------------------------- /UX/exports/androidlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/androidlogo.png -------------------------------------------------------------------------------- /UX/exports/androidlogo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/androidlogo@2x.png -------------------------------------------------------------------------------- /UX/exports/androidlogo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/androidlogo@3x.png -------------------------------------------------------------------------------- /UX/exports/dragInvite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/dragInvite.png -------------------------------------------------------------------------------- /UX/exports/dragInvite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/dragInvite@2x.png -------------------------------------------------------------------------------- /UX/exports/dragInvite@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/dragInvite@3x.png -------------------------------------------------------------------------------- /UX/exports/gradientedbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/gradientedbutton.png -------------------------------------------------------------------------------- /UX/exports/gradientedbutton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/gradientedbutton@2x.png -------------------------------------------------------------------------------- /UX/exports/gradientedbutton@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/gradientedbutton@3x.png -------------------------------------------------------------------------------- /UX/exports/loaderButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/loaderButton.png -------------------------------------------------------------------------------- /UX/exports/loaderButton@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/loaderButton@2x.png -------------------------------------------------------------------------------- /UX/exports/loaderButton@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/loaderButton@3x.png -------------------------------------------------------------------------------- /UX/exports/loaderButtonFaded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/loaderButtonFaded.png -------------------------------------------------------------------------------- /UX/exports/loaderButtonFaded@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/loaderButtonFaded@2x.png -------------------------------------------------------------------------------- /UX/exports/loaderButtonFaded@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/loaderButtonFaded@3x.png -------------------------------------------------------------------------------- /UX/exports/logogoogle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/logogoogle.png -------------------------------------------------------------------------------- /UX/exports/logogoogle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/logogoogle@2x.png -------------------------------------------------------------------------------- /UX/exports/logogoogle@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/logogoogle@3x.png -------------------------------------------------------------------------------- /UX/exports/logotagheuer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/logotagheuer.png -------------------------------------------------------------------------------- /UX/exports/logotagheuer@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/logotagheuer@2x.png -------------------------------------------------------------------------------- /UX/exports/logotagheuer@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/exports/logotagheuer@3x.png -------------------------------------------------------------------------------- /UX/testapp.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/UX/testapp.apk -------------------------------------------------------------------------------- /WIndowMoverImageView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // WIndowMoverImageView.swift 3 | // AndroidTool 4 | // 5 | // Created by Morten Just Petersen on 11/13/15. 6 | // Copyright © 2015 Morten Just Petersen. All rights reserved. 7 | // 8 | 9 | import Cocoa 10 | 11 | class WindowMoverImageView: NSImageView { 12 | 13 | override func draw(_ dirtyRect: NSRect) { 14 | super.draw(dirtyRect) 15 | 16 | // Drawing code here. 17 | } 18 | 19 | override var mouseDownCanMoveWindow:Bool { 20 | return true 21 | } 22 | 23 | 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /binaries/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/.DS_Store -------------------------------------------------------------------------------- /binaries/121/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/.DS_Store -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftAppKit.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftAppKit.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftCore.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftCore.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftCoreAudio.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftCoreAudio.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftCoreGraphics.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftCoreGraphics.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftDarwin.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftDarwin.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftDispatch.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftDispatch.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftFoundation.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftFoundation.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftObjectiveC.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftObjectiveC.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftQuartzCore.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftQuartzCore.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Frameworks/libswiftSecurity.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Frameworks/libswiftSecurity.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 14D136 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleDocumentTypes 10 | 11 | 12 | CFBundleTypeExtensions 13 | 14 | apk 15 | 16 | CFBundleTypeIconFile 17 | ApkIcon 18 | CFBundleTypeName 19 | apk 20 | CFBundleTypeRole 21 | Viewer 22 | LSHandlerRank 23 | Default 24 | LSTypeIsPackage 25 | 1 26 | 27 | 28 | CFBundleExecutable 29 | AndroidTool 30 | CFBundleIconFile 31 | AppIcon 32 | CFBundleIdentifier 33 | com.mortenjust.AndroidTool 34 | CFBundleInfoDictionaryVersion 35 | 6.0 36 | CFBundleName 37 | AndroidTool 38 | CFBundlePackageType 39 | APPL 40 | CFBundleShortVersionString 41 | 1.21 42 | CFBundleSignature 43 | ???? 44 | CFBundleVersion 45 | 9 46 | DTCompiler 47 | com.apple.compilers.llvm.clang.1_0 48 | DTPlatformBuild 49 | 6D570 50 | DTPlatformVersion 51 | GM 52 | DTSDKBuild 53 | 14D125 54 | DTSDKName 55 | macosx10.10 56 | DTXcode 57 | 0630 58 | DTXcodeBuild 59 | 6D570 60 | LSApplicationCategoryType 61 | 62 | LSMinimumSystemVersion 63 | 10.9 64 | NSHumanReadableCopyright 65 | Copyright © 2015 Morten Just Petersen. All rights reserved. 66 | NSMainNibFile 67 | MainMenu 68 | NSPrincipalClass 69 | NSApplication 70 | UTExportedTypeDeclarations 71 | 72 | 73 | CFBundleTypeExtensions 74 | 75 | apk 76 | 77 | CFBundleTypeIconFile 78 | ApkIcon 79 | CFBundleTypeName 80 | apk 81 | CFBundleTypeRole 82 | Viewer 83 | LSHandlerRank 84 | Default 85 | LSTypeIsPackage 86 | 1 87 | UTTypeDescription 88 | Android Application 89 | UTTypeIconFile 90 | ApkIcon 91 | UTTypeIdentifier 92 | com.mortenjust.AndroidTool.app 93 | UTTypeTagSpecification 94 | 95 | public.filename-extension 96 | 97 | apk 98 | 99 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/MacOS/AndroidTool: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/MacOS/AndroidTool -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/ApkIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/ApkIcon.icns -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/AppIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/AppIcon.icns -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/Assets.car: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/Assets.car -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/Base.lproj/MainMenu.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/Base.lproj/MainMenu.nib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/DevicePickerViewController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/DevicePickerViewController.nib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/DeviceViewController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/DeviceViewController.nib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/MasterViewController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/MasterViewController.nib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/PreferencesWindowController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/PreferencesWindowController.nib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/Take Bugreport.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | declare -a arr 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 # 5 | adb=$thisdir/adb 6 | 7 | 8 | # -------------------- 9 | # 10 | # Add your script below. When sending adb commands to the user-selected device, use "$adb -s $serial" 11 | # 12 | # -------------------- 13 | 14 | TakeBugReport(){ 15 | ldap=$(whoami) 16 | now=$(date +"%m-%d-%Y-%H-%M-%S") 17 | devicename=$($adb -s $serial shell getprop ro.product.name) 18 | finalFilename=$devicename-$ldap-$now.png 19 | finalFilename="${finalFilename//[$'\t\r\n ']}" 20 | 21 | $adb -s $serial bugreport > $finalFilename".txt" 22 | } 23 | 24 | mkdir -p ~/Desktop/AndroidTool 25 | cd ~/Desktop/AndroidTool 26 | TakeBugReport 27 | open . #opens the Android Tool folder in Finder after executing. Could be annoying -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/adb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/adb -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/convertMovieFiletoGif.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # convertMovieFiletoGif.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 5/7/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 10 | inputFile=$3 11 | outputFile=$4 12 | scale=$5 13 | 14 | TakeScreenshot(){ 15 | $thisdir/ffmpeg -i $inputFile -vf scale=iw*$scale:ih*$scale $outputFile 16 | } 17 | 18 | mkdir -p ~/Desktop/AndroidTool 19 | cd ~/Desktop/AndroidTool 20 | TakeScreenshot -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/ffmpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/ffmpeg -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/getDetailsForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 5 | adb=$thisdir/adb #Xcode 6 | #adb="adb" #CL 7 | 8 | declare -a arr 9 | 10 | GetDetails(){ 11 | $adb -s $serial shell getprop 12 | } 13 | 14 | GetDetails -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/getResolutionForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 5 | adb=$thisdir/adb #Xcode 6 | #adb="adb" #CL 7 | 8 | declare -a arr 9 | 10 | GetResolution(){ 11 | $adb -s $serial shell wm size 12 | } 13 | 14 | GetResolution -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/getSerials.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # getSerials.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/23/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | adb=$thisdir/adb #Xcode 11 | #adb="adb" #CL 12 | let deviceCount=0 13 | 14 | declare -a arr 15 | 16 | GetSerials(){ 17 | while read line 18 | do 19 | if [ -n "$line" ] && [ "`echo $line | awk '{print $2}'`" == "device" ] 20 | then 21 | let deviceCount=$deviceCount+1 22 | serial="`echo $line | awk '{print $1}'`" 23 | 24 | if (( deviceCount > 1 )) 25 | then 26 | serials=$serials";" 27 | fi 28 | 29 | serials=$serials$serial 30 | fi 31 | done < <($adb devices) 32 | echo $serials 33 | echo $serials > deviceslog.txt 34 | } 35 | 36 | GetSerials -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/idevicescreenshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/idevicescreenshot -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/installApkOnDevice.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # installApkOnDevice.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/24/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 11 | serial=$2 12 | apkPath=$3 13 | adb=$thisdir/adb 14 | 15 | $adb -s $serial install -r "$3" > ~/Desktop/installog.txt 16 | 17 | #open $thisdir/installog.txt 18 | # > $thisdir/installlog.txt -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libimobiledevice.4.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libimobiledevice.4.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libosxfuse_i32.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libosxfuse_i32.2.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libosxfuse_i64.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libosxfuse_i64.2.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libplist.1.1.10.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libplist.1.1.10.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libplist.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libplist.2.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libusbmuxd.1.0.8.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libusbmuxd.1.0.8.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libusbmuxd.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libusbmuxd.2.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libxml2.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libxml2.2.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/libzip.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool.app/Contents/Resources/libzip.2.dylib -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/postProcessMovieForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # postprocessmovie.sh 4 | # Bugs 5 | # 6 | # Created by Morten Just Petersen on 4/10/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | #adb="/usr/local/bin/adb" 11 | 12 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 13 | serial=$2 14 | width=$3 15 | height=$4 16 | adb=$thisdir/adb 17 | 18 | deviceName=$($adb -s $serial shell getprop ro.product.name) 19 | buildId=$($adb -s $serial shell getprop ro.build.id) 20 | ldap=$(whoami) 21 | now=$(date +'%m%d%Y%H%M%S') 22 | finalFileName=$deviceName$buildId$ldap$now 23 | finalFileName="${finalFileName//[$'\t\r\n ']}" 24 | 25 | mkdir -p ~/Desktop/AndroidTool 26 | cd ~/Desktop/AndroidTool 27 | 28 | chara=$($adb -s $serial shell getprop ro.build.characteristics) 29 | if [[ $chara == *"watch"* ]] 30 | 31 | then # -- Watch --- 32 | echo 'Copying from watch...' 33 | $adb -s $serial pull /sdcard/screencapture.raw 34 | $adb -s $serial shell rm /sdcard/screencapture.raw 35 | 36 | echo '#Converting...' 37 | 38 | $thisdir/ffmpeg -f rawvideo -vcodec rawvideo -s $width"x"$height -pix_fmt rgb24 -r 10 -i screencapture.raw -an -c:v libx264 -pix_fmt yuv420p $finalFileName.mp4 39 | 40 | # $thisdir/ffmpeg -f rawvideo -vcodec rawvideo -pix_fmt rgb24 -r 10 -i screencapture.raw -an -c:v libx264 -pix_fmt yuv420p $finalFileName.mp4 41 | 42 | 43 | $thisdir/ffmpeg -i $finalFileName.mp4 $finalFileName.gif 44 | 45 | echo 'Cleaning up...' 46 | rm screencapture.raw 47 | 48 | else # -- Phone --- 49 | echo 'copying from phone...' 50 | $adb -s $serial pull /sdcard/capture.mp4 51 | mv capture.mp4 $finalFileName.mp4 52 | $thisdir/ffmpeg -i $finalFileName.mp4 $finalFileName.gif 53 | 54 | echo 'cleaning up' 55 | $adb -s $serial shell rm /sdcard/capture.mp4 56 | fi 57 | 58 | echo 'Opening file...' 59 | open $finalFileName.mp4 60 | -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/startRecordingForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # startrecording.sh 4 | # Bugs 5 | # 6 | # Created by Morten Just Petersen on 4/10/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | serial=$2 11 | width=$3 12 | height=$4 13 | bitrate=$5 14 | 15 | adb=$thisdir/adb 16 | 17 | chara=$($adb -s $serial shell getprop ro.build.characteristics) 18 | if [[ $chara == *"watch"* ]] 19 | then 20 | echo "Recording from watch..." 21 | $adb -s $serial shell screenrecord --o raw-frames /sdcard/screencapture.raw 22 | else 23 | echo "Recording from phone..." 24 | orientation=$($adb -s $serial shell dumpsys input | grep 'SurfaceOrientation' | awk '{ print $2 }') 25 | if [[ "${orientation//[$'\t\r\n ']}" != "0" ]] 26 | then 27 | $adb -s $serial shell screenrecord --bit-rate $bitrate --verbose --size $height"x"$width /sdcard/capture.mp4 # > $1/reclog.txt 28 | else 29 | $adb -s $serial shell screenrecord --bit-rate $bitrate --verbose --size $width"x"$height /sdcard/capture.mp4 # > $1/reclog.txt 30 | fi 31 | fi 32 | -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/takeScreenshotOfDeviceWithSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # takeScreenshotOfDeviceWithSerial.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/23/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | #!/bin/bash 10 | 11 | declare -a arr 12 | 13 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 14 | serial=$2 15 | adb=$thisdir/adb 16 | 17 | TakeScreenshot(){ 18 | deviceName=$($adb -s $serial shell getprop ro.product.name) 19 | buildId=$($adb -s $serial shell getprop ro.build.id) 20 | ldap=$(whoami) 21 | now=$(date +'%m%d%Y%H%M%S') 22 | finalFileName=$deviceName$buildId$ldap$now.png 23 | finalFileName="${finalFileName//[$'\t\r\n ']}" 24 | echo "Taking screenshot of $serial" 25 | 26 | $adb -s $serial shell screencap -p /sdcard/$finalFileName 27 | $adb -s $serial pull /sdcard/$finalFileName 28 | $adb -s $serial shell rm /sdcard/$finalFileName 29 | 30 | open $finalFileName 31 | } 32 | 33 | mkdir -p ~/Desktop/AndroidTool 34 | cd ~/Desktop/AndroidTool 35 | TakeScreenshot -------------------------------------------------------------------------------- /binaries/121/AndroidTool.app/Contents/Resources/takeScreenshotOfDeviceWithUUID.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # takeScreenshotForDeviceWithUUID.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 5/4/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | imobile=$1 9 | uuid=$2 10 | 11 | now=$(date +'%m%d%Y%H%M%S') 12 | ldap=$(whoami) 13 | finalFilename=iOS$ldap$now.png #todo: we could pass iosversion and model as $3. It's in the data model 14 | echo "ready to shoot to $finalFilename" 15 | 16 | TakeScreenshot(){ 17 | export DYLD_LIBRARY_PATH=$imobile 18 | $imobile/idevicescreenshot -u $uuid rawiosshot.tiff 19 | sips -s format png rawiosshot.tiff --out $finalFilename 20 | rm rawiosshot.tiff 21 | open $finalFilename 22 | } 23 | 24 | mkdir -p ~/Desktop/AndroidTool 25 | cd ~/Desktop/AndroidTool 26 | TakeScreenshot -------------------------------------------------------------------------------- /binaries/121/AndroidTool121.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/121/AndroidTool121.zip -------------------------------------------------------------------------------- /binaries/AndroidTool-io2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool-io2.zip -------------------------------------------------------------------------------- /binaries/AndroidTool-ios.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool-ios.zip -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftAppKit.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftAppKit.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftCore.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftCore.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftCoreAudio.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftCoreAudio.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftCoreGraphics.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftCoreGraphics.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftDarwin.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftDarwin.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftDispatch.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftDispatch.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftFoundation.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftFoundation.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftObjectiveC.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftObjectiveC.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftQuartzCore.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftQuartzCore.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Frameworks/libswiftSecurity.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Frameworks/libswiftSecurity.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 14D136 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleDocumentTypes 10 | 11 | 12 | CFBundleTypeExtensions 13 | 14 | apk 15 | 16 | CFBundleTypeIconFile 17 | ApkIcon 18 | CFBundleTypeName 19 | apk 20 | CFBundleTypeRole 21 | Viewer 22 | LSHandlerRank 23 | Default 24 | LSTypeIsPackage 25 | 1 26 | 27 | 28 | CFBundleExecutable 29 | AndroidTool 30 | CFBundleIconFile 31 | AppIcon 32 | CFBundleIdentifier 33 | com.mortenjust.AndroidTool 34 | CFBundleInfoDictionaryVersion 35 | 6.0 36 | CFBundleName 37 | AndroidTool 38 | CFBundlePackageType 39 | APPL 40 | CFBundleShortVersionString 41 | 1.2 42 | CFBundleSignature 43 | ???? 44 | CFBundleVersion 45 | 8 46 | DTCompiler 47 | com.apple.compilers.llvm.clang.1_0 48 | DTPlatformBuild 49 | 6D570 50 | DTPlatformVersion 51 | GM 52 | DTSDKBuild 53 | 14D125 54 | DTSDKName 55 | macosx10.10 56 | DTXcode 57 | 0630 58 | DTXcodeBuild 59 | 6D570 60 | LSApplicationCategoryType 61 | 62 | LSMinimumSystemVersion 63 | 10.9 64 | NSHumanReadableCopyright 65 | Copyright © 2015 Morten Just Petersen. All rights reserved. 66 | NSMainNibFile 67 | MainMenu 68 | NSPrincipalClass 69 | NSApplication 70 | UTExportedTypeDeclarations 71 | 72 | 73 | CFBundleTypeExtensions 74 | 75 | apk 76 | 77 | CFBundleTypeIconFile 78 | ApkIcon 79 | CFBundleTypeName 80 | apk 81 | CFBundleTypeRole 82 | Viewer 83 | LSHandlerRank 84 | Default 85 | LSTypeIsPackage 86 | 1 87 | UTTypeDescription 88 | Android Application 89 | UTTypeIconFile 90 | ApkIcon 91 | UTTypeIdentifier 92 | com.mortenjust.AndroidTool.app 93 | UTTypeTagSpecification 94 | 95 | public.filename-extension 96 | 97 | apk 98 | 99 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/MacOS/AndroidTool: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/MacOS/AndroidTool -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/MacOS/deviceslog.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/ApkIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/ApkIcon.icns -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/AppIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/AppIcon.icns -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/Assets.car: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/Assets.car -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/Base.lproj/MainMenu.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/Base.lproj/MainMenu.nib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/DevicePickerViewController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/DevicePickerViewController.nib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/DeviceViewController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/DeviceViewController.nib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/MasterViewController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/MasterViewController.nib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/PreferencesWindowController.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/PreferencesWindowController.nib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/Take Bugreport.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | declare -a arr 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 # 5 | adb=$thisdir/adb 6 | 7 | 8 | # -------------------- 9 | # 10 | # Add your script below. When sending adb commands to the user-selected device, use "$adb -s $serial" 11 | # 12 | # -------------------- 13 | 14 | TakeBugReport(){ 15 | ldap=$(whoami) 16 | now=$(date +"%m-%d-%Y-%H-%M-%S") 17 | devicename=$($adb -s $serial shell getprop ro.product.name) 18 | finalFilename=$devicename-$ldap-$now.png 19 | finalFilename="${finalFilename//[$'\t\r\n ']}" 20 | 21 | $adb -s $serial bugreport > $finalFilename".txt" 22 | } 23 | 24 | mkdir -p ~/Desktop/AndroidTool 25 | cd ~/Desktop/AndroidTool 26 | TakeBugReport 27 | open . #opens the Android Tool folder in Finder after executing. Could be annoying -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/adb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/adb -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/convertMovieFiletoGif.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # convertMovieFiletoGif.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 5/7/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 10 | inputFile=$3 11 | outputFile=$4 12 | scale=$5 13 | 14 | TakeScreenshot(){ 15 | $thisdir/ffmpeg -i $inputFile -vf scale=iw*$scale:ih*$scale $outputFile 16 | } 17 | 18 | mkdir -p ~/Desktop/AndroidTool 19 | cd ~/Desktop/AndroidTool 20 | TakeScreenshot -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/ffmpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/ffmpeg -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/getDetailsForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 5 | adb=$thisdir/adb #Xcode 6 | #adb="adb" #CL 7 | 8 | declare -a arr 9 | 10 | GetDetails(){ 11 | $adb -s $serial shell getprop 12 | } 13 | 14 | GetDetails -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/getResolutionForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 4 | serial=$2 5 | adb=$thisdir/adb #Xcode 6 | #adb="adb" #CL 7 | 8 | declare -a arr 9 | 10 | GetResolution(){ 11 | $adb -s $serial shell wm size 12 | } 13 | 14 | GetResolution -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/getSerials.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # getSerials.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/23/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | adb=$thisdir/adb #Xcode 11 | #adb="adb" #CL 12 | let deviceCount=0 13 | 14 | declare -a arr 15 | 16 | GetSerials(){ 17 | while read line 18 | do 19 | if [ -n "$line" ] && [ "`echo $line | awk '{print $2}'`" == "device" ] 20 | then 21 | let deviceCount=$deviceCount+1 22 | serial="`echo $line | awk '{print $1}'`" 23 | 24 | if (( deviceCount > 1 )) 25 | then 26 | serials=$serials";" 27 | fi 28 | 29 | serials=$serials$serial 30 | fi 31 | done < <($adb devices) 32 | echo $serials 33 | echo $serials > deviceslog.txt 34 | } 35 | 36 | GetSerials -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/idevicescreenshot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/idevicescreenshot -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/installApkOnDevice.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # installApkOnDevice.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/24/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 11 | serialAndInstallAndPath=$2 12 | adb=$thisdir/adb 13 | 14 | $adb -s $serialAndInstallAndPath > $thisdir/installog.txt 15 | 16 | #open $thisdir/installog.txt 17 | # > $thisdir/installlog.txt -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/installog.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/installog.txt -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libimobiledevice.4.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libimobiledevice.4.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libosxfuse_i32.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libosxfuse_i32.2.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libosxfuse_i64.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libosxfuse_i64.2.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libplist.1.1.10.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libplist.1.1.10.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libplist.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libplist.2.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libusbmuxd.1.0.8.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libusbmuxd.1.0.8.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libusbmuxd.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libusbmuxd.2.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libxml2.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libxml2.2.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/libzip.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool.app/Contents/Resources/libzip.2.dylib -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/postProcessMovieForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # postprocessmovie.sh 4 | # Bugs 5 | # 6 | # Created by Morten Just Petersen on 4/10/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | 10 | #adb="/usr/local/bin/adb" 11 | 12 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 13 | serial=$2 14 | width=$3 15 | height=$4 16 | adb=$thisdir/adb 17 | 18 | deviceName=$($adb -s $serial shell getprop ro.product.name) 19 | buildId=$($adb -s $serial shell getprop ro.build.id) 20 | ldap=$(whoami) 21 | now=$(date +'%m%d%Y%H%M%S') 22 | finalFileName=$deviceName$buildId$ldap$now 23 | finalFileName="${finalFileName//[$'\t\r\n ']}" 24 | 25 | mkdir -p ~/Desktop/AndroidTool 26 | cd ~/Desktop/AndroidTool 27 | 28 | chara=$($adb -s $serial shell getprop ro.build.characteristics) 29 | if [[ $chara == *"watch"* ]] 30 | 31 | then # -- Watch --- 32 | echo 'Copying from watch...' 33 | $adb -s $serial pull /sdcard/screencapture.raw 34 | $adb -s $serial shell rm /sdcard/screencapture.raw 35 | 36 | echo '#Converting...' 37 | 38 | $thisdir/ffmpeg -f rawvideo -vcodec rawvideo -s $width"x"$height -pix_fmt rgb24 -r 10 -i screencapture.raw -an -c:v libx264 -pix_fmt yuv420p $finalFileName.mp4 39 | 40 | # $thisdir/ffmpeg -f rawvideo -vcodec rawvideo -pix_fmt rgb24 -r 10 -i screencapture.raw -an -c:v libx264 -pix_fmt yuv420p $finalFileName.mp4 41 | 42 | 43 | $thisdir/ffmpeg -i $finalFileName.mp4 $finalFileName.gif 44 | 45 | echo 'Cleaning up...' 46 | rm screencapture.raw 47 | 48 | else # -- Phone --- 49 | echo 'copying from phone...' 50 | $adb -s $serial pull /sdcard/capture.mp4 51 | mv capture.mp4 $finalFileName.mp4 52 | $thisdir/ffmpeg -i $finalFileName.mp4 $finalFileName.gif 53 | 54 | echo 'cleaning up' 55 | $adb -s $serial shell rm /sdcard/capture.mp4 56 | fi 57 | 58 | echo 'Opening file...' 59 | open $finalFileName.mp4 60 | -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/startRecordingForSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # startrecording.sh 4 | # Bugs 5 | # 6 | # Created by Morten Just Petersen on 4/10/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 10 | serial=$2 11 | width=$3 12 | height=$4 13 | bitrate=$5 14 | 15 | adb=$thisdir/adb 16 | 17 | chara=$($adb -s $serial shell getprop ro.build.characteristics) 18 | if [[ $chara == *"watch"* ]] 19 | then 20 | echo "Recording from watch..." 21 | $adb -s $serial shell screenrecord --o raw-frames /sdcard/screencapture.raw 22 | else 23 | echo "Recording from phone..." 24 | orientation=$($adb -s $serial shell dumpsys input | grep 'SurfaceOrientation' | awk '{ print $2 }') 25 | if [[ "${orientation//[$'\t\r\n ']}" != "0" ]] 26 | then 27 | $adb -s $serial shell screenrecord --bit-rate $bitrate --verbose --size $height"x"$width /sdcard/capture.mp4 # > $1/reclog.txt 28 | else 29 | $adb -s $serial shell screenrecord --bit-rate $bitrate --verbose --size $width"x"$height /sdcard/capture.mp4 # > $1/reclog.txt 30 | fi 31 | fi 32 | -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/takeScreenshotOfDeviceWithSerial.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # takeScreenshotOfDeviceWithSerial.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 4/23/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | 9 | #!/bin/bash 10 | 11 | declare -a arr 12 | 13 | thisdir=$1 # $1 is the bundle resources path directly from the calling script file 14 | serial=$2 15 | adb=$thisdir/adb 16 | 17 | TakeScreenshot(){ 18 | deviceName=$($adb -s $serial shell getprop ro.product.name) 19 | buildId=$($adb -s $serial shell getprop ro.build.id) 20 | ldap=$(whoami) 21 | now=$(date +'%m%d%Y%H%M%S') 22 | finalFileName=$deviceName$buildId$ldap$now.png 23 | finalFileName="${finalFileName//[$'\t\r\n ']}" 24 | echo "Taking screenshot of $serial" 25 | 26 | $adb -s $serial shell screencap -p /sdcard/$finalFileName 27 | $adb -s $serial pull /sdcard/$finalFileName 28 | $adb -s $serial shell rm /sdcard/$finalFileName 29 | 30 | open $finalFileName 31 | } 32 | 33 | mkdir -p ~/Desktop/AndroidTool 34 | cd ~/Desktop/AndroidTool 35 | TakeScreenshot -------------------------------------------------------------------------------- /binaries/AndroidTool.app/Contents/Resources/takeScreenshotOfDeviceWithUUID.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # takeScreenshotForDeviceWithUUID.sh 4 | # AndroidTool 5 | # 6 | # Created by Morten Just Petersen on 5/4/15. 7 | # Copyright (c) 2015 Morten Just Petersen. All rights reserved. 8 | imobile=$1 9 | uuid=$2 10 | 11 | now=$(date +'%m%d%Y%H%M%S') 12 | ldap=$(whoami) 13 | finalFilename=iOS$ldap$now.png #todo: we could pass iosversion and model as $3. It's in the data model 14 | echo "ready to shoot to $finalFilename" 15 | 16 | TakeScreenshot(){ 17 | export DYLD_LIBRARY_PATH=$imobile 18 | $imobile/idevicescreenshot -u $uuid rawiosshot.tiff 19 | sips -s format png rawiosshot.tiff --out $finalFilename 20 | rm rawiosshot.tiff 21 | open $finalFilename 22 | } 23 | 24 | mkdir -p ~/Desktop/AndroidTool 25 | cd ~/Desktop/AndroidTool 26 | TakeScreenshot -------------------------------------------------------------------------------- /binaries/AndroidTool12.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/binaries/AndroidTool12.zip -------------------------------------------------------------------------------- /ffmpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/ffmpeg -------------------------------------------------------------------------------- /libimobiledevice.4.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libimobiledevice.4.dylib -------------------------------------------------------------------------------- /libosxfuse_i32.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libosxfuse_i32.2.dylib -------------------------------------------------------------------------------- /libosxfuse_i64.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libosxfuse_i64.2.dylib -------------------------------------------------------------------------------- /libplist.1.1.10.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libplist.1.1.10.dylib -------------------------------------------------------------------------------- /libplist.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libplist.2.dylib -------------------------------------------------------------------------------- /libusbmuxd.1.0.8.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libusbmuxd.1.0.8.dylib -------------------------------------------------------------------------------- /libusbmuxd.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libusbmuxd.2.dylib -------------------------------------------------------------------------------- /libxml2.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libxml2.2.dylib -------------------------------------------------------------------------------- /libzip.2.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mortenjust/androidtool-mac/9fc699b87671a3199ab4f217665d78dfbe527757/libzip.2.dylib --------------------------------------------------------------------------------