@@ -83,6 +83,7 @@ class TizenEmulatorManager extends EmulatorManager {
83
83
);
84
84
}
85
85
86
+ assert (_tizenSdk != null );
86
87
final RunResult runResult = await _processUtils.run (
87
88
< String > [
88
89
_tizenSdk.emCli.path,
@@ -102,6 +103,7 @@ class TizenEmulatorManager extends EmulatorManager {
102
103
}
103
104
104
105
List <PlatformImage > _loadAllPlatformImages () {
106
+ assert (_tizenSdk != null );
105
107
final Directory platformsDir = _tizenSdk.platformsDirectory;
106
108
if (! platformsDir.existsSync ()) {
107
109
return < PlatformImage > [];
@@ -231,33 +233,39 @@ class TizenEmulators extends EmulatorDiscovery {
231
233
return < Emulator > [];
232
234
}
233
235
234
- // _tizenSdk is not null here.
236
+ assert ( _tizenSdk != null );
235
237
final Directory emulatorDir = _tizenSdk.sdkDataDirectory
236
238
.childDirectory ('emulator' )
237
239
.childDirectory ('vms' );
238
240
if (! emulatorDir.existsSync ()) {
239
241
return < Emulator > [];
240
242
}
241
243
242
- TizenEmulator loadEmulatorInfo (String id) {
244
+ TizenEmulator loadEmulatorInfo (Directory directory) {
245
+ final String id = directory.basename;
243
246
final File configFile =
244
247
emulatorDir.childDirectory (id).childFile ('vm_config.xml' );
248
+ if (! configFile.existsSync ()) {
249
+ return null ;
250
+ }
251
+
252
+ XmlDocument document;
253
+ try {
254
+ document = XmlDocument .parse (configFile.readAsStringSync ().trim ());
255
+ } on XmlException {
256
+ return null ;
257
+ }
245
258
246
- final XmlDocument xmlDocument =
247
- XmlDocument .parse (configFile.readAsStringSync ());
248
- final XmlElement deviceTemplate =
249
- xmlDocument.findAllElements ('deviceTemplate' ).first;
250
- final String name = deviceTemplate.getAttribute ('name' );
251
- final XmlElement diskImage =
252
- xmlDocument.findAllElements ('diskImage' ).first;
253
- final String profile = diskImage.getAttribute ('profile' );
254
- final String version = diskImage.getAttribute ('version' );
255
-
256
- final Map <String , String > properties = < String , String > {
257
- 'name' : name,
258
- 'profile' : profile,
259
- 'version' : version,
260
- };
259
+ final Map <String , String > properties = < String , String > {};
260
+ final Iterable <XmlElement > deviceTemplates =
261
+ document.findAllElements ('deviceTemplate' );
262
+ final Iterable <XmlElement > diskImages =
263
+ document.findAllElements ('diskImage' );
264
+ if (deviceTemplates.isNotEmpty && diskImages.isNotEmpty) {
265
+ properties['name' ] = deviceTemplates.first.getAttribute ('name' );
266
+ properties['profile' ] = diskImages.first.getAttribute ('profile' );
267
+ properties['version' ] = diskImages.first.getAttribute ('version' );
268
+ }
261
269
262
270
return TizenEmulator (
263
271
id,
@@ -269,11 +277,10 @@ class TizenEmulators extends EmulatorDiscovery {
269
277
}
270
278
271
279
final List <Emulator > emulators = < Emulator > [];
272
- for (final FileSystemEntity entity in emulatorDir.listSync ()) {
273
- if (entity is Directory &&
274
- entity.childFile ('vm_config.xml' ).existsSync ()) {
275
- final String id = entity.basename;
276
- emulators.add (loadEmulatorInfo (id));
280
+ for (final Directory dir in emulatorDir.listSync ().whereType <Directory >()) {
281
+ final TizenEmulator emulator = loadEmulatorInfo (dir);
282
+ if (emulator != null ) {
283
+ emulators.add (emulator);
277
284
}
278
285
}
279
286
return emulators;
@@ -288,7 +295,8 @@ class TizenEmulator extends Emulator {
288
295
@required Logger logger,
289
296
@required ProcessManager processManager,
290
297
@required TizenSdk tizenSdk,
291
- }) : _properties = properties,
298
+ }) : assert (tizenSdk != null ),
299
+ _properties = properties,
292
300
_logger = logger,
293
301
_processUtils =
294
302
ProcessUtils (logger: logger, processManager: processManager),
@@ -316,7 +324,7 @@ class TizenEmulator extends Emulator {
316
324
317
325
@override
318
326
Future <void > launch () async {
319
- final File emCli = _tizenSdk? .emCli;
327
+ final File emCli = _tizenSdk.emCli;
320
328
if (emCli == null || ! emCli.existsSync ()) {
321
329
throwToolExit ('Unable to locate Tizen Emulator Manager.' );
322
330
}
0 commit comments