[in_app_purchase] Android: fix potential crash when casting in v1 embedding. (#2585)

diff --git a/packages/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/CHANGELOG.md
index d78df4f..9c454a8 100644
--- a/packages/in_app_purchase/CHANGELOG.md
+++ b/packages/in_app_purchase/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 0.3.1+2
+
+* Fix potential casting crash on Android v1 embedding when registering life cycle callbacks.
+* Remove hard-coded legacy xcode build setting.
+
 ## 0.3.1+1
 
 * Add `pedantic` to dev_dependency.
diff --git a/packages/in_app_purchase/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java b/packages/in_app_purchase/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java
index b7edcfb..de2080c 100644
--- a/packages/in_app_purchase/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java
+++ b/packages/in_app_purchase/android/src/main/java/io/flutter/plugins/inapppurchase/InAppPurchasePlugin.java
@@ -50,7 +50,7 @@
   public static void registerWith(Registrar registrar) {
     InAppPurchasePlugin plugin = new InAppPurchasePlugin();
     plugin.setupMethodChannel(registrar.activity(), registrar.messenger(), registrar.context());
-    ((Application) registrar.context())
+    ((Application) registrar.context().getApplicationContext())
         .registerActivityLifecycleCallbacks(plugin.methodCallHandler);
   }
 
diff --git a/packages/in_app_purchase/example/android/app/src/test/java/io/flutter/plugins/inapppurchase/InAppPurchasePluginTest.java b/packages/in_app_purchase/example/android/app/src/test/java/io/flutter/plugins/inapppurchase/InAppPurchasePluginTest.java
new file mode 100644
index 0000000..0befa87
--- /dev/null
+++ b/packages/in_app_purchase/example/android/app/src/test/java/io/flutter/plugins/inapppurchase/InAppPurchasePluginTest.java
@@ -0,0 +1,40 @@
+// 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.inapppurchase;
+
+import static org.mockito.Mockito.when;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.Context;
+import io.flutter.plugin.common.BinaryMessenger;
+import io.flutter.plugin.common.PluginRegistry;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+public class InAppPurchasePluginTest {
+  @Mock Activity activity;
+  @Mock Context context;
+  @Mock PluginRegistry.Registrar mockRegistrar; // For v1 embedding
+  @Mock BinaryMessenger mockMessenger;
+  @Mock Application mockApplication;
+
+  @Before
+  public void setUp() {
+    MockitoAnnotations.initMocks(this);
+    when(mockRegistrar.activity()).thenReturn(activity);
+    when(mockRegistrar.messenger()).thenReturn(mockMessenger);
+    when(mockRegistrar.context()).thenReturn(context);
+  }
+
+  @Test
+  public void registerWith_doNotCrashWhenRegisterContextIsActivity_V1Embedding() {
+    when(mockRegistrar.context()).thenReturn(activity);
+    when(activity.getApplicationContext()).thenReturn(mockApplication);
+    InAppPurchasePlugin.registerWith(mockRegistrar);
+  }
+}
diff --git a/packages/in_app_purchase/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/in_app_purchase/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
deleted file mode 100644
index 949b678..0000000
--- a/packages/in_app_purchase/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>BuildSystemType</key>
-	<string>Original</string>
-</dict>
-</plist>
diff --git a/packages/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/pubspec.yaml
index ff1f404..b2fd230 100644
--- a/packages/in_app_purchase/pubspec.yaml
+++ b/packages/in_app_purchase/pubspec.yaml
@@ -1,7 +1,7 @@
 name: in_app_purchase
 description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play.
 homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase
-version: 0.3.1+1
+version: 0.3.1+2
 
 
 dependencies: