美文网首页Android疑难杂症米拉的Android
Android 使用Gradle实现多渠道打包,同项目不同包名、

Android 使用Gradle实现多渠道打包,同项目不同包名、

作者: 老米拉 | 来源:发表于2021-04-10 20:33 被阅读0次

    最近公司有个新需求,按照之前的项目换个名字,logo及部分资源文件重新打包个新的app

    实现思路
    1.拷贝一份项目更换名字、logo等 (效率低,麻烦 ) ❌
    2.多渠道打包 (方便,快捷) ✅

    实现方法
    项目下build.gradle>android下新以下代码

    android {
        ...
        ...
        //多渠道打包
        productFlavors {
            //百度渠道
            baidu {
                //修改包名
                applicationId "com.product.baidu"
                //修改app名字,string资源下不能包含"app_name"
                resValue "string", "app_name", "百度"
                //修改AndroidManifest.xml部分字段(包含logo)
                manifestPlaceholders = [CHANNEL_VALUE: "baidu",app_icon: "@mipmap/logo"]
            }
            //小米渠道
            xiaomi {
                applicationId "com.product.xiaomi"
                resValue "string", "app_name", "小米"
                //修改AndroidManifest.xml部分字段(包含logo)
                manifestPlaceholders = [CHANNEL_VALUE: "xiaomi",app_icon: "@mipmap/logo"]
            }
        }
    

    替换Logo
    从上面代码中可以看到两个渠道中都有这行代码:

    百度
    manifestPlaceholders = [CHANNEL_VALUE: "baidu",app_icon: "@mipmap/logo"]
    
    manifestPlaceholders = [CHANNEL_VALUE: "xiaomi",app_icon: "@mipmap/logo"]
    

    这行代码是向AndroidManifest.xml传值,但是AndroidManifest.xml需要使用占位符接收

     <application
            android:name=".MoneyApp"
            android:allowBackup="true"
            android:icon="${app_icon}"  <!--占位符,接收上面Gradle传来的值-->
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/NoActionBar"
            tools:replace="android:icon,android:theme">
            ...
            ...
        </application>
    

    但是上面两个渠道传的值都是@mipmap/logo图片,这里需要使用同名不同图片的资源文件,同名文件是不能在同一个文件夹的,这里需要在app/res/下/main同级目录创建渠道单独文件夹

    在这里插入图片描述

    注意!文件夹名字一定要和渠道名相同,然后再各自渠道文件夹下创建logo资源文件

    在这里插入图片描述

    当打包时,各渠道会优先加载各自渠道文件夹的资源,就可以实现不同的logo了

    最后签名打包就可以啦,两个渠道包分别在baidu和xiaomi文件夹下~
    ————————————————
    版权声明:本文为CSDN博主「lvkaixuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lvkaixuan/article/details/83617091

    相关文章

      网友评论

        本文标题:Android 使用Gradle实现多渠道打包,同项目不同包名、

        本文链接:https://www.haomeiwen.com/subject/yonnkltx.html