好记性不如烂笔头------使用Gradle构建不同的应用名和图标

参考学习链接:
https://developer.android.google.cn/studio/build/index.html

总所周知,使用Gradle可以使用productFlavors构建不同的变体,根据不同的配置构建出不同app版本。可以通过使用如下代码打包出这四种不同的app,并且每个app的图标都不一样,

    productFlavors {
         huawei{
            manifestPlaceholders = [ app_icon: "@drawable/icon_huawei"]
        }
        vivo{
            manifestPlaceholders = [ app_icon: "@drawable/icon_vivo"]
        }
        yingyongbao{
            manifestPlaceholders = [ app_icon: "@drawable/icon_yingyongbao"]
        }
        xiaomi{
            manifestPlaceholders = [ app_icon: "@drawable/icon_xiaomi"]
        }
    }

配置了上面了以后还需要在Manifest.xml中配置tools:replace=”android:icon 添加在application标签中,在根节点中需要加入tools的引用xmlns:tools=”http://schemas.android.com/tools” 这里replace 具体含义以及其他属性详见 manifest 合并多个清单文件,然后我们在引入我们配置的app_icon 属性android:icon="${app_icon}" 这样既可解决打包出的不同apk的不同引用图标。

还有一种方式则是在buildTypes 中不同的编译类型如debug中使用resValue的方式来定义,

debug {
            resValue("string", "app_nameV", "appDebugName")
        }

需要注意的是你的String.xml中不能包含定义的这个app_nameV名字,不然会报错,这种写法表示在你构建的版本中会自己生成一个名字为app_nameV,值为appDebugName的资源文件,注意类型string不能是大写的S,否则会报错。然后再manifest中直接使用@string/app_nameV 即可引用到你声明的这个字段名称,android:label="@string/app_nameV" 这样既可,还需要主要的是也需要使用tools:replace="android:icon,android:label" 这样同时替换了label和icon 。

完整的写法

  <application

        android:name=".Application"
        android:allowBackup="true"
        android:icon="${app_icon}" //你定义的app_icon
        android:label="@string/app_nameV" //通过resValue定义的app_nameV字段
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:icon,android:label"> //替换icon 和label

还可以这样写 在buildType中 debug类型(打个比方)

 debug {

            manifestPlaceholders = [app_icon: "@drawable/ic_launcher_ky_beta",label: "@string/app_name_debug"]

        }

这里使用了manifestPlaceholders 同时在里面设置了app_icon和label 要resValue了。 新的为android:label=”${label}” 这样就ok了。可以配置不同的图标和应用名称,不过需要注意的是manifest合并的时候会出现的一些问题,包含有其他第三方库的时候可能会出现的一些冲突,可以看下文章开头的链接学习一下。ヾ( ̄▽ ̄)Bye~Bye~

猜你喜欢

转载自blog.csdn.net/xiaxiayige/article/details/72151381