Commit 24a3e58c authored by Mikkel Nygaard Ravn's avatar Mikkel Nygaard Ravn Committed by GitHub

Android plugin registry (#9715)

parent aba60954
...@@ -77,26 +77,20 @@ void _writeFlutterPluginsList(String directory, List<Plugin> plugins) { ...@@ -77,26 +77,20 @@ void _writeFlutterPluginsList(String directory, List<Plugin> plugins) {
const String _androidPluginRegistryTemplate = '''package io.flutter.plugins; const String _androidPluginRegistryTemplate = '''package io.flutter.plugins;
import io.flutter.app.FlutterActivity;
{{#plugins}} {{#plugins}}
import io.flutter.plugin.common.PluginRegistry;
import {{package}}.{{class}}; import {{package}}.{{class}};
{{/plugins}} {{/plugins}}
/** /**
* Generated file. Do not edit. * Generated file. Do not edit.
*/ */
public final class GeneratedPluginRegistrant {
public class PluginRegistry { public static void registerWith(PluginRegistry registry) {
{{#plugins}} {{#plugins}}
public {{class}} {{name}}; {{class}}.registerWith(registry.registrarFor("{{package}}.{{class}}"));
{{/plugins}} {{/plugins}}
}
public void registerAll(FlutterActivity activity) {
{{#plugins}}
{{name}} = {{class}}.register(activity);
{{/plugins}}
}
} }
'''; ''';
...@@ -119,7 +113,7 @@ void _writeAndroidPluginRegistry(String directory, List<Plugin> plugins) { ...@@ -119,7 +113,7 @@ void _writeAndroidPluginRegistry(String directory, List<Plugin> plugins) {
final Directory registryDirectory = final Directory registryDirectory =
fs.directory(fs.path.join(javaSourcePath, 'io', 'flutter', 'plugins')); fs.directory(fs.path.join(javaSourcePath, 'io', 'flutter', 'plugins'));
registryDirectory.createSync(recursive: true); registryDirectory.createSync(recursive: true);
final File registryFile = registryDirectory.childFile('PluginRegistry.java'); final File registryFile = registryDirectory.childFile('GeneratedPluginRegistrant.java');
registryFile.writeAsStringSync(pluginRegistry); registryFile.writeAsStringSync(pluginRegistry);
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
.DS_Store .DS_Store
/build /build
/captures /captures
PluginRegistry.java GeneratedPluginRegistrant.java
/gradle /gradle
/gradlew /gradlew
......
package {{androidIdentifier}}; package {{androidIdentifier}};
import android.os.Bundle; import android.os.Bundle;
import io.flutter.app.FlutterActivity; import io.flutter.app.FlutterActivity;
import io.flutter.plugins.PluginRegistry; import io.flutter.plugin.common.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity { public class MainActivity extends FlutterActivity {
PluginRegistry pluginRegistry; @Override
protected void onCreate(Bundle savedInstanceState) {
@Override super.onCreate(savedInstanceState);
protected void onCreate(Bundle savedInstanceState) { GeneratedPluginRegistrant.registerWith(this);
super.onCreate(savedInstanceState); }
pluginRegistry = new PluginRegistry();
pluginRegistry.registerAll(this);
}
} }
package {{androidIdentifier}}; package {{androidIdentifier}};
import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler; import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.PluginRegistry.Registrar;
/** /**
* {{pluginClass}} * {{pluginClass}}
*/ */
public class {{pluginClass}} implements MethodCallHandler { public class {{pluginClass}} implements MethodCallHandler {
private FlutterActivity activity; /**
* Plugin registration.
public static {{pluginClass}} register(FlutterActivity activity) { */
return new {{pluginClass}}(activity); public static void registerWith(Registrar registrar) {
} final MethodChannel channel = new MethodChannel(registrar.messenger(), "{{projectName}}");
channel.setMethodCallHandler(new {{pluginClass}}());
private {{pluginClass}}(FlutterActivity activity) {
this.activity = activity;
new MethodChannel(activity.getFlutterView(), "{{projectName}}").setMethodCallHandler(this);
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment