Android Studio 3.3 不允许 SDK 版本低于 26 的自适应图标

Android Studio 3.3 disallows adaptive icons for SDK version less than 26

刚刚从 Android Studio 3.2.1 升级到 3.3。以前我的项目 - 目标 SDK v28 - 构建没有问题,现在我得到这个构建错误:

  • What went wrong: Execution failed for task ':app:processDebugResources'.

    Android resource linking failed C:\app\src\main\res\mipmap-anydpi-v25\ic_launcher_round.xml: error: <adaptive-icon> elements require a sdk version of at least 26.
    error: failed linking file resources.

显然,我在 mipmap-anydpi-v25 文件夹中有一个 <adaptive-icon> 资源。

那么,哪个 AS 版本可以正确处理这个问题; 3.2.1 还是 3.3?我应该删除我的 v25 图标吗?我以为棒棒糖支持这种类型的图标...

which AS version handles this correctly; 3.2.1 or 3.3?

大概是 3.3,因为 adaptive icons were added in Android 8.0(API 26 级)。

Should I remove my v25 icon?

将目录更改为 mipmap-anydpi-v26/,您仍然可以在 Android 8.0+ 中使用该图标。如果您的 minSdkVersion 低于该值(我假设是这样),您将需要为旧设备实施图标的替代实施。

I thought Lollipop had support for this type of icons...

棒棒糖是 Android 5.x、API 21-22 级。您的 -v25 目录不会用于那些 API 关卡。

我遇到了同样的问题,原因是我手动弄乱了文件,但直到更新后我才注意到。 在我的例子中,更新到 AS 3.3 后,冲突的文件是:

  • drawable/ic_launcher_background.xml
  • drawable-v24/ic_launcher_foreground.xml

虽然 AS 通过在 app/build.gradle 上更改最小 sdk "minSdkVersion 26" 构建而没有错误,但对于发布目的来说并不实用。 简单快速的解决方案是:

  • 创建一个空白的新项目
  • 复制完全相同的文件
  • 并在冲突的项目中替换它们

对我来说,在 AS 3.4 中,我必须:

我无法使用 add New |由于自适应图标的图像资源 直到我完成了从列表中删除 SDK 25 的最后一步,即使在尝试正确 select 项目 SDK 和构建目标之后也是如此。

我尝试了几种方法,这是使它对我有用的最后一步。我不知道这是否特定于我的配置中的某些内容,但这让我过去了。

SDK 中 API 小于 26 时显示错误。

要从 SDK 中删除旧的 API:

  1. 单击文件。
  2. Select 项目结构。
  3. Select 平台设置中的 SDK。
  4. 在右侧检查是否有更早的 API 显示 API 26.
  5. Select 较早 API 秒并单击删除 (-) 按钮。

删除所有早于 API 的 API 26。 点击应用并确定。

它会起作用:)

这是我修复它的方法。

  1. 文件 -> 项目结构
  2. Select 模块
  3. 将编译SDK更改为以上API 26(我认为是可选的)
  4. Select 选项卡默认配置并将目标 SDK 版本更改为以上 API 26