[device_info] Update Android embedding to match latest Flutter stable release (#2590)

* Update V2 plugin migration to match current flutter stable
* Bump AGP to 3.6.1
diff --git a/packages/device_info/CHANGELOG.md b/packages/device_info/CHANGELOG.md
index 68aeed8..c6f8fb2 100644
--- a/packages/device_info/CHANGELOG.md
+++ b/packages/device_info/CHANGELOG.md
@@ -1,3 +1,10 @@
+## 0.4.2+1
+
+* Bump the minimum Flutter version to 1.12.13+hotfix.5.
+* Remove deprecated API usage warning in AndroidIntentPlugin.java.
+* Migrates the Android example to V2 embedding.
+* Bumps AGP to 3.6.1.
+
 ## 0.4.2
 
 * Add systemFeatures to AndroidDeviceInfo.
diff --git a/packages/device_info/android/build.gradle b/packages/device_info/android/build.gradle
index d1dd790..58bdfd3 100644
--- a/packages/device_info/android/build.gradle
+++ b/packages/device_info/android/build.gradle
@@ -8,7 +8,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.3.0'
+        classpath 'com.android.tools.build:gradle:3.6.1'
     }
 }
 
@@ -32,29 +32,3 @@
         disable 'InvalidPackage'
     }
 }
-
-// TODO(cyanglaz): Remove this hack once androidx.lifecycle is included on stable. https://github.com/flutter/flutter/issues/42348
-afterEvaluate {
-    def containsEmbeddingDependencies = false
-    for (def configuration : configurations.all) {
-        for (def dependency : configuration.dependencies) {
-            if (dependency.group == 'io.flutter' &&
-                dependency.name.startsWith('flutter_embedding') &&
-                dependency.isTransitive())
-            {
-                containsEmbeddingDependencies = true
-                break
-            }
-        }
-    }
-    if (!containsEmbeddingDependencies) {
-        android {
-            dependencies {
-                def lifecycle_version = "1.1.1"
-                compileOnly "android.arch.lifecycle:runtime:$lifecycle_version"
-                compileOnly "android.arch.lifecycle:common:$lifecycle_version"
-                compileOnly "android.arch.lifecycle:common-java8:$lifecycle_version"
-            }
-        }
-    }
-}
diff --git a/packages/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java b/packages/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java
index a0435a4..8061959 100644
--- a/packages/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java
+++ b/packages/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java
@@ -23,8 +23,7 @@
 
   @Override
   public void onAttachedToEngine(FlutterPlugin.FlutterPluginBinding binding) {
-    setupMethodChannel(
-        binding.getFlutterEngine().getDartExecutor(), binding.getApplicationContext());
+    setupMethodChannel(binding.getBinaryMessenger(), binding.getApplicationContext());
   }
 
   @Override
diff --git a/packages/device_info/example/android/app/src/main/AndroidManifest.xml b/packages/device_info/example/android/app/src/main/AndroidManifest.xml
index 45242ab..f9f91fa 100644
--- a/packages/device_info/example/android/app/src/main/AndroidManifest.xml
+++ b/packages/device_info/example/android/app/src/main/AndroidManifest.xml
@@ -12,15 +12,20 @@
                   android:exported="true"
                   android:windowSoftInputMode="adjustResize">
         </activity>
-        <activity android:name=".MainActivity"
-            android:theme="@android:style/Theme.Black.NoTitleBar"
-            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
-            android:hardwareAccelerated="true"
-            android:windowSoftInputMode="adjustResize">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
+
+        <activity android:name="io.flutter.embedding.android.FlutterActivity"
+          android:theme="@android:style/Theme.Black.NoTitleBar"
+          android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale"
+          android:hardwareAccelerated="true"
+          android:windowSoftInputMode="adjustResize">
+          <meta-data
+            android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
+            android:value="true" />
+          <intent-filter>
+            <action android:name="android.intent.action.MAIN"/>
+            <category android:name="android.intent.category.LAUNCHER"/>
+          </intent-filter>
+        </activity>        
+        <meta-data android:name="flutterEmbedding" android:value="2"/>
     </application>
 </manifest>
diff --git a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1Activity.java b/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1Activity.java
index 0bfaee8..48678a7 100644
--- a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1Activity.java
+++ b/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/EmbeddingV1Activity.java
@@ -6,12 +6,12 @@
 
 import android.os.Bundle;
 import io.flutter.app.FlutterActivity;
-import io.flutter.plugins.GeneratedPluginRegistrant;
+import io.flutter.plugins.deviceinfo.DeviceInfoPlugin;
 
 public class EmbeddingV1Activity extends FlutterActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
-    GeneratedPluginRegistrant.registerWith(this);
+    DeviceInfoPlugin.registerWith(registrarFor("io.flutter.plugins.deviceinfo.DeviceInfoPlugin"));
   }
 }
diff --git a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/MainActivity.java b/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/MainActivity.java
deleted file mode 100644
index b820542..0000000
--- a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/MainActivity.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package io.flutter.plugins.deviceinfoexample;
-
-import io.flutter.embedding.android.FlutterActivity;
-import io.flutter.embedding.engine.FlutterEngine;
-import io.flutter.plugins.deviceinfo.DeviceInfoPlugin;
-
-public class MainActivity extends FlutterActivity {
-
-  // TODO(cyanglaz): Remove this once v2 of GeneratedPluginRegistrant rolls to stable.
-  // https://github.com/flutter/flutter/issues/42694
-  @Override
-  public void configureFlutterEngine(FlutterEngine flutterEngine) {
-    super.configureFlutterEngine(flutterEngine);
-    flutterEngine.getPlugins().add(new DeviceInfoPlugin());
-  }
-}
diff --git a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/MainActivityTest.java b/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/MainActivityTest.java
deleted file mode 100644
index 36967eb..0000000
--- a/packages/device_info/example/android/app/src/main/java/io/flutter/plugins/deviceinfoexample/MainActivityTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package io.flutter.plugins.deviceinfoexample;
-
-import androidx.test.rule.ActivityTestRule;
-import dev.flutter.plugins.e2e.FlutterRunner;
-import org.junit.Rule;
-import org.junit.runner.RunWith;
-
-@RunWith(FlutterRunner.class)
-public class MainActivityTest {
-  @Rule public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class);
-}
diff --git a/packages/device_info/example/android/build.gradle b/packages/device_info/example/android/build.gradle
index 541636c..83f114c 100644
--- a/packages/device_info/example/android/build.gradle
+++ b/packages/device_info/example/android/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.3.0'
+        classpath 'com.android.tools.build:gradle:3.6.1'
     }
 }
 
diff --git a/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties
index 2819f02..c243e25 100644
--- a/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties
+++ b/packages/device_info/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Fri Jun 23 08:50:38 CEST 2017
+#Mon Mar 09 11:05:13 GMT 2020
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
diff --git a/packages/device_info/example/pubspec.yaml b/packages/device_info/example/pubspec.yaml
index 89bf430..dc63d8b 100644
--- a/packages/device_info/example/pubspec.yaml
+++ b/packages/device_info/example/pubspec.yaml
@@ -15,8 +15,3 @@
 
 flutter:
   uses-material-design: true
-
-environment:
-  sdk: ">=2.0.0-dev.28.0 <3.0.0"
-  flutter: ">=1.9.1+hotfix.2 <2.0.0"
-
diff --git a/packages/device_info/pubspec.yaml b/packages/device_info/pubspec.yaml
index 06a530b..0769f98 100644
--- a/packages/device_info/pubspec.yaml
+++ b/packages/device_info/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Flutter plugin providing detailed information about the device
   (make, model, etc.), and Android or iOS version the app is running on.
 homepage: https://github.com/flutter/plugins/tree/master/packages/device_info
-version: 0.4.2
+version: 0.4.2+1
 
 flutter:
   plugin:
@@ -26,4 +26,4 @@
 
 environment:
   sdk: ">=2.0.0-dev.28.0 <3.0.0"
-  flutter: ">=1.10.0 <2.0.0"
+  flutter: ">=1.12.13+hotfix.5 <2.0.0"