Flutter 应用程序中不可导出的 MainActivity

问题描述 投票:0回答:1

我们目前正在开发 Flutter 移动应用程序,安全工程师建议我们必须将 AndroidManifest.xml 中的每个 Activity 标记为不可导出:

<activity
 android:screenOrientation="landscape"
 android:configChanges="keyboard|keyboardHidden|screenSize|orientation"
 android:name=".activities.MainActivity"
 android:exported="false">
  <intent-filter>
   <action android:name="android.intent.action.MAIN" />
   <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

完成此操作后,我们在上传的应用程序上遇到了不同的行为。在所有 Android 设备上安装后,PlayStore 在尝试启动应用程序后崩溃。例外是 MainActivity 未导出。当我单击应用程序图标时,它会产生不同的结果。在某些设备上,应用程序按预期启动(Android 11、12、13),而在某些设备上,会出现“应用程序未安装”通知,并且不会启动(也见于 Android 11/12)。这种情况也发生在三星的两台具有不同 Android 版本的同等设备上,其中一台可以运行,另一台无法运行。即使发生异常,我也可以通过长按图标来运行应用程序,然后转到应用程序信息并单击开始,然后它在每个设备上运行。

所以问题是,据我所知,我应该能够将标志设置为 false,我是否在清单中遗漏了某些内容。但当我尝试寻找 Flutter 的示例时,我没有找到任何关于此的信息。我知道我可以将标志设置为 true 并忽略它,但我想了解为什么我必须这样做,并且 MainActivity 本身不可能吗?

android flutter security manifest
1个回答
0
投票

安全工程师建议我们必须将 AndroidManifest.xml 中的每个 Activity 标记为不可导出

需要导出第三方应用发现并启动的Activity。这包括启动器要显示的任何活动,例如代码中显示的带有

<intent-filter>
的活动。很少有应用程序的导出活动为零。

据我所知,我应该能够将标志设置为 false

应导出该活动,并将该标志设置为

true

© www.soinside.com 2019 - 2024. All rights reserved.