Android如何使用不同的应用程序图标和应用程序名称在产品口味[复制]

vqlkdk9b  于 2022-12-25  发布在  Android
关注(0)|答案(1)|浏览(190)
    • 此问题在此处已有答案**:

How to use sourceSets to replace/override app icon in gradle(1个答案)
昨天关门了。
我用了两种不同口味的产品
1.付费版本
1.免费版本
我需要使用不同的应用程序图标和应用程序名称,请最好的建议
安卓系统{
源集{

main {
        res.srcDirs = ['/src/main/res','/src/paid/res','/src/paid/res']
        java.srcDirs = ['/src/main/java','/src/free/java','/src/free/java']
    }
    paid {
        res.srcDirs = ['/src/paid/res']
        java.srcDirs = ['/src/paid/java']
    }
    free {
        res.srcDirs = ['/src/free/res']
        java.srcDirs = ['/src/free/java']
    }
}
productFlavors {
    create("paid") {
    
        applicationId="com.paid"
        versionCode 12
        flavorDimensions "main"
  
    }
    create("free") {
       
        applicationId="com.free"
        versionCode 12
        flavorDimensions "main"
    }
}

}

deyfvvtc

deyfvvtc1#

您可以使用构建变体来达到您的目的:

  • 构建分级 *
android{

    defaultConfig {
        applicationId "com.example.test"
      //...
    }
    flavorDimensions "mode"
    productFlavors {

        paid {
            applicationIdSuffix ".paid"
            flavorDimensions "mode"
        }

        free {
            applicationIdSuffix ".free"
            flavorDimensions "mode"
        }
    }
}
  • 机器人清单.xml:*
<manifest 

    ...
        <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

    ...

    </application>

</manifest>

这样,您就可以在项目中创建两种类型的sourceSet,如下所示:例如,您可以在string.xml中创建应用名称字符串,并在自定义免费sourceSet的mipmap中添加新的应用图标

除了创建两个sourceSet(如下图所示)之外,您还可以使用manifestPlaceholders,并且不需要创建任何其他sourceSet:

  • 构建分级 *
android{
    defaultConfig {
        applicationId "com.example.test"
      //...
    }
    flavorDimensions "mode"
    productFlavors {

        paid {
            applicationIdSuffix ".paid"
            flavorDimensions "mode"
            manifestPlaceholders = [
                 "app_icon": "@mipmap/icon_paid",
                 "app_name": "paid~~~",
            ]
        }

        free {
            applicationIdSuffix ".free"
            flavorDimensions "mode"
            manifestPlaceholders = [
                 "app_icon": "@mipmap/icon_free",
                 "app_name": "free~~~",
            ]
        }
    }
}
  • 机器人清单.xml*
<manifest 

    ...
        <application
        android:allowBackup="true"
        android:icon="${app_icon}"
        android:label="${app_name}"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

    ...

    </application>

</manifest>

相关问题