androidreact-nativeadaptive-icon

AAPT: error: unexpected element <adaptive-icon> found in <manifest>


I am trying to use adaptive icon in react native android but it product following error.

AAPT: error: unexpected element found in

here is my manifes.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.anar">

  <uses-permission android:name="android.permission.INTERNET" />   <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />   <uses-permission android:name="android.permission.VIBRATE" />



  <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme">
    <activity android:screenOrientation="portrait" android:launchMode="singleTop" android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 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="com.facebook.react.devsupport.DevSettingsActivity" />
    <meta-data android:name="com.google.android.geo.API_KEY" android:value="MY_API_KEY_IS_HIDDEN"/>
    <service android:name="io.invertase.firebase.messaging.RNFirebaseMessagingService">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
      </intent-filter>
    </service>

    <service android:name="io.invertase.firebase.messaging.RNFirebaseBackgroundMessagingService" />

  </application>

  <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@color/ic_launcher_background" />
    <foreground android:drawable="@mipmap/ic_launcher_foreground" />   </adaptive-icon>



</manifest>

Solution

  • You have already apply adaptive-icon using android:icon and android:roundIcon. Try to remove those extra code from AndroidManifest.xml

    <application
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round"
        ...>
    
    <!--<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
        <background android:drawable="@color/ic_launcher_background" />
        <foreground android:drawable="@mipmap/ic_launcher_foreground" />   
    </adaptive-icon> -->
    

    If you check inside ic_launcher_round.xml, you will see those code there, If not then follow below steps to create one:

    1. Create a folder mipmap-anydpi-v26 under res
    2. Create a file ic_launcher_round.xml under mipmap-anydpi-v26
    3. Place below code inside ic_launcher_round.xml
    <?xml version="1.0" encoding="utf-8"?>
    <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
        <background android:drawable="@color/ic_launcher_background"/>
        <foreground android:drawable="@drawable/ic_launcher_foreground"/>
    </adaptive-icon>
    

    Update: I have checked the resources that the site provide, It contains every things, just remove adaptive-icon related code from AndroidManifest.xml and keep in mind that adaptive icon only works from API level 26

    Check official documentation for more details