1

我想将我的 Android Plugin for Gradle 从 2.3.3 升级到 3.0.1。我可以按照Migration Guide修复所有错误。我现在的问题是,在 Android Nougat (24) 和 Android Marshmallow (23) 上,应用程序图标被默认的机器人图标替换。

你能帮我找出问题的原因吗?以前显示了图标,我看不出为什么现在不显示的逻辑原因。

我在这里尝试了所有建议但没有成功。

这是我的清单文件:

<!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...

<application
    android:name="...Application"
    android:allowBackup="false"
    android:allowTaskReparenting="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/application"
    android:largeHeap="true"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/Theme.MyTheme"
    tools:replace="android:icon,theme,label,allowBackup">

<uses-library android:name="com.google.android.maps" />

    <activity
        android:name="...SplashActivity"
        android:label="@string/application"
        android:theme="@style/Theme.Splash">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

...


</application>

这是项目 Gradle 文件:

buildscript {
ext.kotlinVersion = '1.2.10'
repositories {
    jcenter()
    google()
}

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
    classpath 'com.google.gms:google-services:3.1.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}

allprojects {
ext {
    androidApplicationId = 'myapp.android'
    androidVersionCode = 1
    androidVersionName = "1.0"
    testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
}

repositories {
    maven { url "https://maven.google.com" }
}
}
4

3 回答 3

2

我也为此浪费了大约 2 个小时。蛮力解决方案是创建一个独立项目并复制我的资产。从那里,我发现了解决方案:

在此处输入图像描述

Android Studio 现在默认为mipmap-anydpi-v26。以前我只有mipmap-anydpi,它在将 gradle 更新到 3.0+ 之前工作。

希望这可以帮助。

于 2018-06-28T22:50:52.090 回答
1

在您这样做之前,Android 系统永远不会显示应用程序的图标。

像您在此处使用的工具:replace="attr"tools:replace="android:icon,..." ->将替换较高优先级清单中的图标,并保留较低优先级清单中的图标。

于 2017-12-18T14:03:57.853 回答
0

我在这篇Twitter 帖子中发现了问题。“Android 插件 3.0.0 默认启用 AAPT2”,如迁移指南中所述。看起来这种变化会导致资源出现问题。

要修复应用程序的图标,我必须通过添加文件android.enableAapt2=false来禁用 Aapt2 。gradle.properties

注意:当我使用相同的 gradle 设置创建新应用程序时,我无法重现该问题。

于 2017-12-19T09:05:13.463 回答