用Android studio多渠道打包以及使用不同资源(包括icon或者其他图片等)

来源:互联网 发布:centos 安装 nginx 编辑:程序博客网 时间:2024/05/20 03:40

自己项目需要分渠道打包,且使用不同资源,所以,在百度之后,总结了一下:

利用友盟分渠道打包,首先在manifest里面加一句:

<meta-data    android:name="UMENG_CHANNEL"    android:value="${UMENG_CHANNEL_VALUE}" /><!--  友盟分渠道打包-结束  -->


然后在build.gradle里加:


defaultConfig{
//友盟分渠道打包manifestPlaceholders = [ UMENG_CHANNEL_VALUE:"channel_name" ]
}
以及加上这个:

// ChannelsproductFlavors {    // 自定义偏好设置.    //大括号内的 applicationId可以不要,如果加上,便是打包时的包名    google { applicationId "com.broadmobi.channel.google"}    wandoujia { applicationId "com.broadmobi.channel.wandoujia" }    baidu { applicationId "com.broadmobi.channel.baidu"}    qihu360 { applicationId "com.broadmobi.channel.qihu" }}productFlavors.all { flavor ->    flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]}

注意:上面productFlavors里的每个,代表你不同的渠道,大括号内的applicationId,是你打包时不同渠道的报名,如果需要包名一致,大括号为空即可。


另外,如果担心打包时生成的apk没办法区分,可以在build.gradle的buildTypes的release里加入如下代码,修改名字:

applicationVariants.all { variant ->    variant.outputs.each { output ->        def outputFile = output.outputFile        if (outputFile != null && outputFile.name.endsWith('.apk')) {            def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")            output.outputFile = new File(outputFile.parent, "前缀_" + fileName)        }    }}
在fileName前后都可以加修饰符,自己定义就好,别用中文,我上面的只是个提示。



另外,如果需要使用不同的icon或者背景图片等,可以这样操作:


在src里面新建一个项目名,与productFlavors里面的要相同,和main同级,在下面创建你需要的资源文件夹,放入不同的资源文件即可。

比如,我的创建了wandoujia和baidu两个文件夹,因为我需要使用不同的icon和背景图片。


最主要一点,如果要使用不同的icon,一定要在manifest里面加两行代码:

xmlns:tools="http://schemas.android.com/tools"

和:

android:icon="@drawable/ic_launcher"tools:replace="android:icon"
android:icon="@drawable/ic_launcher"这个是原本就有的,在它下面加一行tools:repalce="android:icon"

这样,就可以使用不同的icon.

如果要用不同的名字,可以在tools:repalce="android:icon"的里面加一个例如;tools:repalce="android:icon,android:label"

就可以引用不同的APP名称了!


自己项目需要,在网上查了好多,没有一个统一的,就摸索结合了好几个,希望对你们有用,有问题可以问我。

1 0
原创粉丝点击