I just looked at JetBrains\'s App Code IDE and it seems to be able to launch the iOS Simulator and run applications in it.
When I had to automate the deployment of my pr
AppCode use a special wrapper to do this, that you noticed in its console :
/Applications/AppCode-108.379.app/bin/simlauncher 4.3 debug iphone
simlauncher
is a non documented / not friendly mach-o binary... But here is a quick analysis of it:
To launch simulator it uses a private Apple framework (otool -L simlauncher
) :
/Applications/AppCode-108.379.app/bin/simlauncher:
@rpath/iPhoneSimulatorRemoteClient.framework/Versions/A/iPhoneSimulatorRemoteClient (compatibility version 1.0.0, current version 12.0.0)
This framework is bundled with Xcode:
/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/iPhoneSimulatorRemoteClient.framework
And is used like that (class-dump simlauncher
) (DTiPhoneSimulator*
are from Apple Framework):
@protocol DTiPhoneSimulatorSessionDelegate
- (void)session:(id)arg1 didEndWithError:(id)arg2;
- (void)session:(id)arg1 didStart:(BOOL)arg2 withError:(id)arg3;
@end
@interface Launcher : NSObject {
DTiPhoneSimulatorSession *mySession;
}
- (int)launch:(id)arg1 sdkVersion:(id)arg2 wait:(BOOL)arg3 device:(int)arg4 sout:(id)arg5 eout:(id)arg6 argument:(id)arg7 env:(id)arg8;
- (void)session:(id)arg1 didEndWithError:(id)arg2;
- (void)session:(id)arg1 didStart:(BOOL)arg2 withError:(id)arg3;
@end
About the other binary AMDeviceService
I just can say it uses ProtocolBuffers in order I guess to communicate with MobileDevice
service... Once again, undocumented stuff...
Quick conclusion, sorry, there is no easy way to launch iPhoneSimulator using the JetBrains way, unless reversing Apple privates/not documented APIs... like Jetbrains folks did, I love their tools, they are top guns, can't wait appcode to be gold, already working on it everyday :)
EDIT: See answer below from a JetBrains employee... @JetBrains, would be great to have some sort of AMDeviceService
documented to automate some stuff... ;)