Skip to content

Commit 24d5f8d

Browse files
author
Dimitar Tachev
authored
Merge pull request #226 from NativeScript/tachev/fix-expected-messages
fix: make the android debugging backwards compatible
2 parents c868bac + 6507b01 commit 24d5f8d

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"@types/lodash": "^4.14.109",
3737
"@types/mocha": "^5.2.1",
3838
"@types/node": "6.0.46",
39+
"@types/semver": "^5.5.0",
3940
"@types/universal-analytics": "0.4.1",
4041
"cpx": "^1.5.0",
4142
"mocha": "^5.2.0",

src/project/androidProject.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
import { ChildProcess } from 'child_process';
22
import { EventEmitter } from 'events';
3+
import * as semver from 'semver';
34
import * as stream from 'stream';
45
import { NativeScriptCli } from './nativeScriptCli';
56
import { IDebugResult, Project } from './project';
67
import * as scanner from './streamScanner';
78

89
export class AndroidProject extends Project {
10+
private cliVersion: string;
911

1012
constructor(appRoot: string, cli: NativeScriptCli) {
1113
super(appRoot, cli);
14+
this.cliVersion = cli.executeGetVersion();
1215
}
1316

1417
public platformName(): string {
@@ -37,24 +40,26 @@ export class AndroidProject extends Project {
3740

3841
const debugProcess: ChildProcess = super.executeDebugCommand(args);
3942
const tnsOutputEventEmitter: EventEmitter = new EventEmitter();
43+
const shouldWaitAfterRestartMessage = semver.lt(semver.coerce(this.cliVersion), '5.1.0');
44+
const waitForRestartMessage = shouldWaitAfterRestartMessage || args.indexOf('--debug-brk') > -1;
4045

41-
this.configureReadyEvent(debugProcess.stdout, tnsOutputEventEmitter, args.indexOf('--debug-brk') > -1);
46+
this.configureReadyEvent(debugProcess.stdout, tnsOutputEventEmitter, waitForRestartMessage);
4247

4348
return { tnsProcess: debugProcess, tnsOutputEventEmitter };
4449
}
4550

46-
protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter, debugBrk?: boolean): void {
51+
protected configureReadyEvent(readableStream: stream.Readable, eventEmitter: EventEmitter, waitForRestartMessage?: boolean): void {
4752
super.configureReadyEvent(readableStream, eventEmitter);
4853
let debugPort = null;
4954

5055
new scanner.StringMatchingScanner(readableStream).onEveryMatch(new RegExp('device: .* debug port: [0-9]+'), (match: scanner.IMatchFound) => {
5156
// device: {device-name} debug port: {debug-port}
5257
debugPort = parseInt((match.matches[0] as string).match('(?:debug port: )([\\d]{5})')[1], 10);
53-
if (!debugBrk) {
58+
if (!waitForRestartMessage) {
5459
setTimeout(() => { eventEmitter.emit('readyForConnection', debugPort); }, 1000);
5560
}
5661
});
57-
if (debugBrk) {
62+
if (waitForRestartMessage) {
5863
new scanner.StringMatchingScanner(readableStream).onEveryMatch('# NativeScript Debugger started #', (match: scanner.IMatchFound) => {
5964
// wait a little before trying to connect, this gives a chance for adb to be able to connect to the debug socket
6065
setTimeout(() => { eventEmitter.emit('readyForConnection', debugPort); }, 1000);

0 commit comments

Comments
 (0)