Always generate legal UTIs for project identifiers.
diff --git a/packages/flutter_tools/lib/src/commands/create.dart b/packages/flutter_tools/lib/src/commands/create.dart
index aa5408e..7abf6b4 100644
--- a/packages/flutter_tools/lib/src/commands/create.dart
+++ b/packages/flutter_tools/lib/src/commands/create.dart
@@ -98,6 +98,7 @@
   void generateInto(Directory dir, String flutterPackagePath) {
     String dirPath = path.normalize(dir.absolute.path);
     String projectName = _normalizeProjectName(path.basename(dirPath));
+    String projectIdentifier = _createProjectIdentifier(path.basename(dirPath));
     printStatus('Creating ${path.basename(projectName)}...');
     dir.createSync(recursive: true);
 
@@ -108,6 +109,7 @@
       String contents = files[filePath];
       Map m = <String, String>{
         'projectName': projectName,
+        'projectIdentifier': projectIdentifier,
         'description': description,
         'flutterPackagePath': relativeFlutterPackagePath
       };
@@ -150,6 +152,14 @@
   return name;
 }
 
+String _createProjectIdentifier(String name) {
+  // Create a UTI (https://en.wikipedia.org/wiki/Uniform_Type_Identifier) from a base name
+  RegExp disallowed = new RegExp(r"[^a-zA-Z0-9\-.\u0080-\uffff]+");
+  name = name.replaceAll(disallowed, '');
+  name = name.length == 0 ? 'untitled' : name;
+  return 'com.yourcompany.${name}';
+}
+
 const String _analysis_options = r'''
 analyzer:
   exclude:
@@ -244,7 +254,7 @@
 
 final String _apkManifest = '''
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.{{projectName}}"
+    package="{{projectIdentifier}}"
     android:versionCode="1"
     android:versionName="0.0.1">