Gradle插件更新到3.0后,应用程序图标未显示

时间:2017-12-18 13:37:43

标签: android android-studio android-gradle aapt2

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

你能帮我找到问题的原因吗?之前的图标已经显示,我现在没有看到合理的原因。

我尝试了所有建议here但没有成功。

这是我的清单文件:

<!-- 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" }
}
}

3 个答案:

答案 0 :(得分:1)

Android系统永远不会显示应用程序的图标。

像你在这里一样使用tools:replace="attr" - &gt; tools:replace="android:icon,..."将替换优先级较高的清单中的图标,并将图标保留在优先级较低的清单中。

答案 1 :(得分:1)

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

enter image description here

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

希望这会有所帮助。

答案 2 :(得分:0)

我在Twitter post中发现了问题。 “Android插件3.0.0默认启用AAPT2”,如Migration guide中所述。看起来这种变化会导致资源出现问题。

要修复应用程序的图标,我必须在1) Which way is effective? a or b? a) I have an API to get data for a parameter, so that I can make use of this call 1600 times to get data for all categories/parameters/sub-parameters. b) Have one call to get all parameters/parameters/sub-parameters data 2) Does AWS charge based on number of the calls? For example, having one call to get data in one shot is cheaper than 1600 calls to get data for each of categories and parameters. 文件中添加android.enableAapt2=false来禁用Aapt2。

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