Search code examples
firebaseflutteradmobgoogle-mobile-ads

I am trying to use "google_mobile_ads" in my flutter project but I am getting this migrated to the Android embedding v2


The plugin google_mobile_ads requires your app to be migrated to the Android embedding v2. Follow the steps on https://flutter.dev/go/android-project-migration and re-run this command.

So I tried following the steps but I couldn't found the "MainActivity.java" in my project anyWhere and couldn't follow along

MyProject tree

migration error

https://flutter.dev/go/android-project-migration this the Link Which it is suggesting to follow


Solution

  • just open this files in your project and copy >> paste this lines of code and it will work .......make sure to delete all lines of code in your this files and replace it to this new ones.

    1: MainActivity.java


    package co.appbrewery.flash_chat;
    
    import io.flutter.embedding.android.FlutterActivity;
    
    public class MainActivity extends FlutterActivity {
      
    }
    

    2: styles.xml


    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
    </resources>
    

    3: AndroidManifest.xml


    <manifest xmlns:android="http://schemas.android.com/apk/res/android"   
              package="co.appbrewery.flash_chat">  
    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. -->
    <application android:label="flash_chat" android:icon="@mipmap/ic_launcher">
        <activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                  until Flutter renders its first frame. It can be removed if
                  there is no splash screen (such as the default splash screen
                  defined in @style/LaunchTheme). -->
            <meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/launch_background" />
            <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>