用gradle多渠道打包一般在build.gradle文件里面,productFlavors 标签下添加自己的渠道名,像下面这样

android {

productFlavors {

"xiaomi"{

manifestPlaceholders = [channelName: "xiaomi"]

}

"360market"{

manifestPlaceholders = [channelName: "360market"]

}

"baidu"{

manifestPlaceholders = [channelName: "baidu"]

}

"wandoujia"{

manifestPlaceholders = [channelName: "wandoujia"]

}

}

}

或者

android {

productFlavors {

"xiaomi"{}

"360market"{}

"baidu"{}

"wandoujia"{}

}

productFlavors.all {

flavor -> flavor.manifestPlaceholders = [channelName: name]

}

}

gradle就会自动帮我们替换AndroidManifest.xml文件里面的${channelName}

但最近有个需求,每个渠道的app图标和里面一些界面的图片和文字会不一样,按照上面的方法虽然也可以但会造成打包时会多余出无用的图片和增加一些垃圾代码。后来查了下,在main的同级目录下创建以渠道名命名的文件夹,然后在文件夹里面创建资源文件(资源文件在文件夹里面的路径要和原资源文件在main文件夹里面的路径要一致),然后资源文件就会自动替换或者合并。

比如在原资源文件目录main\res\mipmap-hdpi\ic_launcher.png,那xiaomi渠道要在xiaomi\res\mipmap-hdpi\ic_launcher.png放进资源文件,打包小米渠道的时候会自动替换图片。

还有合并的情况,比如在main下面Strings.xml文件内容是

加载中…

已加载全部

xiaomi下面Strings.xml文件内容是

正在加载中,不要着急吗客官…

打包xiaomi渠道会变成

正在加载中,不要着急吗客官…

已加载全部

当然在main下面的所有文件可以替换或者合并。。。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐