Update IDEA project files (#12391)

* Generate Android framework config

* Fix templates

* Moar templates fixing

* Minor tweaking
diff --git a/packages/flutter_tools/templates/create/.idea/workspace.xml.tmpl b/packages/flutter_tools/templates/create/.idea/workspace.xml.tmpl
index 1e7e0cd..5b3388c 100644
--- a/packages/flutter_tools/templates/create/.idea/workspace.xml.tmpl
+++ b/packages/flutter_tools/templates/create/.idea/workspace.xml.tmpl
@@ -20,10 +20,17 @@
     </layout>
   </component>
   <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+    </navigator>
     <panes>
       <pane id="ProjectPane">
         <option name="show-excluded-files" value="false" />
       </pane>
     </panes>
   </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="dart.analysis.tool.window.force.activate" value="true" />
+    <property name="show.migrate.to.gradle.popup" value="false" />
+  </component>
 </project>
diff --git a/packages/flutter_tools/templates/create/projectName.iml.tmpl b/packages/flutter_tools/templates/create/projectName.iml.tmpl
index dafb001..d6ba21b 100644
--- a/packages/flutter_tools/templates/create/projectName.iml.tmpl
+++ b/packages/flutter_tools/templates/create/projectName.iml.tmpl
@@ -3,13 +3,17 @@
   <component name="NewModuleRootManager" inherit-compiler-output="true">
     <exclude-output />
     <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/.idea" />
       <excludeFolder url="file://$MODULE_DIR$/.pub" />
       <excludeFolder url="file://$MODULE_DIR$/build" />
       <excludeFolder url="file://$MODULE_DIR$/packages" />
+      <excludeFolder url="file://$MODULE_DIR$/test/packages" />
     </content>
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" name="Dart Packages" level="project" />
     <orderEntry type="library" name="Dart SDK" level="project" />
+    <orderEntry type="library" name="Flutter Plugins" level="project" />
   </component>
-</module>
\ No newline at end of file
+</module>
diff --git a/packages/flutter_tools/templates/create/projectName_android.iml.tmpl b/packages/flutter_tools/templates/create/projectName_android.iml.tmpl
index 8e9d155..faa8d0d 100644
--- a/packages/flutter_tools/templates/create/projectName_android.iml.tmpl
+++ b/packages/flutter_tools/templates/create/projectName_android.iml.tmpl
@@ -1,9 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/android/gen" />
+        <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/android/gen" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/android/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/android/res" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/android/assets" />
+        <option name="LIBS_FOLDER_RELATIVE_PATH" value="/android/libs" />
+        <option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/android/proguard_logs" />
+      </configuration>
+    </facet>
+  </component>
   <component name="NewModuleRootManager" inherit-compiler-output="true">
     <exclude-output />
     <content url="file://$MODULE_DIR$/android">
       <sourceFolder url="file://$MODULE_DIR$/android/app/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/android/gen" isTestSource="false" generated="true" />
     </content>
     <orderEntry type="jdk" jdkName="Android API {{androidSdkVersion}} Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
diff --git a/packages/flutter_tools/templates/package/.idea/modules.xml.tmpl b/packages/flutter_tools/templates/package/.idea/modules.xml.tmpl
index cd52175..7488ebe 100644
--- a/packages/flutter_tools/templates/package/.idea/modules.xml.tmpl
+++ b/packages/flutter_tools/templates/package/.idea/modules.xml.tmpl
@@ -3,7 +3,6 @@
   <component name="ProjectModuleManager">
     <modules>
       <module fileurl="file://$PROJECT_DIR$/{{projectName}}.iml" filepath="$PROJECT_DIR$/{{projectName}}.iml" />
-      <module fileurl="file://$PROJECT_DIR$/{{projectName}}_android.iml" filepath="$PROJECT_DIR$/{{projectName}}_android.iml" />
     </modules>
   </component>
 </project>
diff --git a/packages/flutter_tools/templates/package/.idea/workspace.xml.tmpl b/packages/flutter_tools/templates/package/.idea/workspace.xml.tmpl
index 1e7e0cd..5b3388c 100644
--- a/packages/flutter_tools/templates/package/.idea/workspace.xml.tmpl
+++ b/packages/flutter_tools/templates/package/.idea/workspace.xml.tmpl
@@ -20,10 +20,17 @@
     </layout>
   </component>
   <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+    </navigator>
     <panes>
       <pane id="ProjectPane">
         <option name="show-excluded-files" value="false" />
       </pane>
     </panes>
   </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="dart.analysis.tool.window.force.activate" value="true" />
+    <property name="show.migrate.to.gradle.popup" value="false" />
+  </component>
 </project>
diff --git a/packages/flutter_tools/templates/package/projectName.iml.tmpl b/packages/flutter_tools/templates/package/projectName.iml.tmpl
index dafb001..f07144d 100644
--- a/packages/flutter_tools/templates/package/projectName.iml.tmpl
+++ b/packages/flutter_tools/templates/package/projectName.iml.tmpl
@@ -3,13 +3,17 @@
   <component name="NewModuleRootManager" inherit-compiler-output="true">
     <exclude-output />
     <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
       <excludeFolder url="file://$MODULE_DIR$/.idea" />
       <excludeFolder url="file://$MODULE_DIR$/.pub" />
       <excludeFolder url="file://$MODULE_DIR$/build" />
       <excludeFolder url="file://$MODULE_DIR$/packages" />
     </content>
+    <orderEntry type="jdk" jdkName="Android API {{androidSdkVersion}} Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" name="Dart Packages" level="project" />
     <orderEntry type="library" name="Dart SDK" level="project" />
+    <orderEntry type="library" name="Flutter Plugins" level="project" />
   </component>
-</module>
\ No newline at end of file
+</module>
diff --git a/packages/flutter_tools/templates/plugin/.idea/workspace.xml.tmpl b/packages/flutter_tools/templates/plugin/.idea/workspace.xml.tmpl
index 6310d69..3b4f99b 100644
--- a/packages/flutter_tools/templates/plugin/.idea/workspace.xml.tmpl
+++ b/packages/flutter_tools/templates/plugin/.idea/workspace.xml.tmpl
@@ -2,7 +2,7 @@
 <project version="4">
   <component name="FileEditorManager">
     <leaf>
-      <file leaf-file-name="main.dart" pinned="false" current-in-tab="true">
+      <file leaf-file-name="{{projectName}}.dart" pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/lib/{{projectName}}.dart">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="0">
@@ -11,7 +11,7 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="main.dart" pinned="false" current-in-tab="true">
+      <file leaf-file-name="main.dart" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/example/lib/main.dart">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="0">
@@ -25,14 +25,21 @@
   <component name="ToolWindowManager">
     <editor active="true" />
     <layout>
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
     </layout>
   </component>
   <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+    </navigator>
     <panes>
       <pane id="ProjectPane">
         <option name="show-excluded-files" value="false" />
       </pane>
     </panes>
   </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="dart.analysis.tool.window.force.activate" value="true" />
+    <property name="show.migrate.to.gradle.popup" value="false" />
+  </component>
 </project>
diff --git a/packages/flutter_tools/templates/plugin/projectName.iml.tmpl b/packages/flutter_tools/templates/plugin/projectName.iml.tmpl
index dafb001..4fe2670 100644
--- a/packages/flutter_tools/templates/plugin/projectName.iml.tmpl
+++ b/packages/flutter_tools/templates/plugin/projectName.iml.tmpl
@@ -3,13 +3,17 @@
   <component name="NewModuleRootManager" inherit-compiler-output="true">
     <exclude-output />
     <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
       <excludeFolder url="file://$MODULE_DIR$/.idea" />
       <excludeFolder url="file://$MODULE_DIR$/.pub" />
       <excludeFolder url="file://$MODULE_DIR$/build" />
       <excludeFolder url="file://$MODULE_DIR$/packages" />
+      <excludeFolder url="file://$MODULE_DIR$/example/.pub" />
+      <excludeFolder url="file://$MODULE_DIR$/example/build" />
     </content>
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="library" name="Dart Packages" level="project" />
     <orderEntry type="library" name="Dart SDK" level="project" />
+    <orderEntry type="library" name="Flutter Plugins" level="project" />
   </component>
-</module>
\ No newline at end of file
+</module>
diff --git a/packages/flutter_tools/templates/plugin/projectName_android.iml.tmpl b/packages/flutter_tools/templates/plugin/projectName_android.iml.tmpl
index 8e9d155..03a3436 100644
--- a/packages/flutter_tools/templates/plugin/projectName_android.iml.tmpl
+++ b/packages/flutter_tools/templates/plugin/projectName_android.iml.tmpl
@@ -1,9 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android" name="Android">
+      <configuration>
+        <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/android/gen" />
+        <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/android/gen" />
+        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/android/AndroidManifest.xml" />
+        <option name="RES_FOLDER_RELATIVE_PATH" value="/android/res" />
+        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/android/assets" />
+        <option name="LIBS_FOLDER_RELATIVE_PATH" value="/android/libs" />
+        <option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/android/proguard_logs" />
+      </configuration>
+    </facet>
+  </component>
   <component name="NewModuleRootManager" inherit-compiler-output="true">
     <exclude-output />
     <content url="file://$MODULE_DIR$/android">
-      <sourceFolder url="file://$MODULE_DIR$/android/app/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/android/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/android/gen" isTestSource="false" generated="true" />
+    </content>
+    <content url="file://$MODULE_DIR$/example/android">
+      <sourceFolder url="file://$MODULE_DIR$/example/android/app/src/main/java" isTestSource="false" />
     </content>
     <orderEntry type="jdk" jdkName="Android API {{androidSdkVersion}} Platform" jdkType="Android SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
diff --git a/packages/flutter_tools/test/commands/create_test.dart b/packages/flutter_tools/test/commands/create_test.dart
index c0bd18d..931a5bf 100644
--- a/packages/flutter_tools/test/commands/create_test.dart
+++ b/packages/flutter_tools/test/commands/create_test.dart
@@ -46,7 +46,8 @@
           'ios/Runner/AppDelegate.m',
           'ios/Runner/main.m',
           'lib/main.dart',
-          'test/widget_test.dart'
+          'test/widget_test.dart',
+          'flutter_project.iml',
         ],
       );
     }, timeout: const Timeout.factor(2.0));
@@ -111,6 +112,7 @@
           'example/ios/Runner/AppDelegate.m',
           'example/ios/Runner/main.m',
           'example/lib/main.dart',
+          'flutter_project.iml',
         ],
         plugin: true,
       );