I want to upload my Flutter AppBunble to PlayStore but I got this message from PlayStore:
And Here are AndroidManifest.xml codes:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="co...">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:usesCleartextTraffic="true"
android:icon="@mipmap/ic_launcher"
android:label="... هروی">
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:exported="true"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" />
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<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>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="http"
android:host="akhlaqmarefat.com" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="http"
android:host="host"
android:pathPrefix="/book" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
</application>
</manifest>
I run this command to generate AppBundle:
flutter build appbundle --obfuscate --split-debug-info=~/Projects/Lajward/LibraryApp
My System Info:
Flutter 3.0.2
Dart 2.17.3
Ubuntu 22.04 LTS
And also I tried all of the answers in this post, but still the same issue.
Please help me with what is wrong exactly here. Thanks
3
Answers
After unit testing, we found the problem was from this package
epub_viewer: ^0.2.5
, the AndroidManifest.xml of this package was empty:and also doesn't have any activity or service, but this solution work for me, by adding these lines of code to my AndroidManifest.xml file:
the PlayStore accepted my AppBundle.
Main Suggestion: You have to set your
android:exported=true
for the activity.For more details see here:
https://developer.android.com/guide/topics/manifest/activity-element#exported
Suggestion 2:
Also, if you are using packages which have native code and include an activity then you might also have to add android:exported flag there also.
Suggestion 3(Workaround):
If possible you can change your target SDK version below the API level of Android12 to make it go away.
Edit:
If you are using third party packages then you might try checking if all your other packages come with support of Android 12. Try running
pub outdate
to see the packages which can be upgraded or manually check all the packages which you have:To Check:
Go to your FlutterSDK Path and go to .pub-cache/hosted/
and look at the build.gradle file for each of the package you are using cause many packages might be having target sdk below 12 which might be causing the issue. Also try updating those packages.
Also, try without obfuscation it might solve your problem.
Simply open your native app as below
After opening that go through your android manifest file i seen that you have already added the exported="true" in mainactivity but after opening the manifest file see the error and suggestions in manifest