最近公司有个新需求,按照之前的项目换个名字,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同级目录创建渠道单独文件夹
Android 使用Gradle实现多渠道打包,同项目不同包名、Logo、名字、主题等
注意!文件夹名字一定要和渠道名相同,然后再各自渠道文件夹下创建logo资源文件
Android 使用Gradle实现多渠道打包,同项目不同包名、Logo、名字、主题等
当打包时,各渠道会优先加载各自渠道文件夹的资源,就可以实现不同的logo了

最后签名打包就可以啦,两个渠道包分别在baidu和xiaomi文件夹下~

相关文章:

  • 2021-12-25
  • 2022-12-23
  • 2022-12-23
  • 2021-10-14
  • 2021-10-21
  • 2022-01-09
  • 2021-04-13
猜你喜欢
  • 2021-11-01
  • 2021-07-11
  • 2021-12-26
  • 2021-11-01
  • 2021-08-07
相关资源
相似解决方案