title: Purpose and Usage of `GeneratedPluginRegistrant.class` when developing Native Plugin
body: <p>I'm currently building a Plugin to make use of native API's on Android and iOS.</p>
  
  <p>I've written <code>MyPlugin</code> which implements <code>MethodCallHandler</code>. In my plugin project, I have an example app. This example app has a generated class <code>GeneratedPluginRegistrant.class</code>, which calls the static method <code>registerWith</code>. All of this is used as a one liner in the <code>MainActivity</code>.</p>
  
  <p>I have several questions.</p>
  
  <ol>
  <li><p>It seems that <code>MyPlugin</code> must match the name of the plugin project. IE - project is <code>flutter_tools</code>, my plugin must be named <code>FlutterToolsPlugin</code>, otherwise <code>GeneratedPluginRegistrant</code> will break. How is <code>GeneratedPluginRegistrant</code> generated?</p></li>
  <li><p>What is the purpose of <code>GeneratedPluginRegistrant</code>?</p></li>
  <li><p>What is actually happening to my plugin when it is registered?</p></li>
  <li><p>If I want to use <code>MyPlugin</code>, can it be done so without the <code>GeneratedPluginRegistrant</code>? I wish to respond to lifecycle methods like <code>onActivityResult</code>, and it seems this encapsulation prevents me from interacting with the plugin directly in the <code>FlutterActivity</code>.</p></li>
  <li><p>Can I interact with other native plugins from my own on the native side without having to go back and forth through Dart?</p></li>
  </ol>