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:
- 单击文件。
- Select 项目结构。
- Select 平台设置中的 SDK。
- 在右侧检查是否有更早的 API 显示 API 26.
- Select 较早 API 秒并单击删除 (-) 按钮。
删除所有早于 API 的 API 26。
点击应用并确定。
它会起作用:)
这是我修复它的方法。
- 文件 -> 项目结构
- Select 模块
- 将编译SDK更改为以上API 26(我认为是可选的)
- Select 选项卡默认配置并将目标 SDK 版本更改为以上 API 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:
- 单击文件。
- Select 项目结构。
- Select 平台设置中的 SDK。
- 在右侧检查是否有更早的 API 显示 API 26.
- Select 较早 API 秒并单击删除 (-) 按钮。
删除所有早于 API 的 API 26。 点击应用并确定。
它会起作用:)
这是我修复它的方法。
- 文件 -> 项目结构
- Select 模块
- 将编译SDK更改为以上API 26(我认为是可选的)
- Select 选项卡默认配置并将目标 SDK 版本更改为以上 API 26