赞
踩
当需要在多个平台(例如google、华为)发布应用时需要用到多渠道打包。修改应用级别的build.gradle文件,在Android标签内增加如下内容,
上图中配置了两个渠道:google及华为,Falvor的名字可以自己定,每个Flavor里面一定要指定dimension,可以相同也可以不同,在productFlaovrs前面要定义flavorDimensions,如果定义多个可以使用逗号分隔。对于不同渠道如果有特定的依赖需要导入可以使用favor名+Implementation导入,这样只在指定的flavor编译时导入,例如华为渠道需要导入如下依赖,则可以使用huaweiImplementation,
注意:如果要使用条件依赖,dependencies标签一定要位于android标签下面,否则上图中会提示无法找到的方法huaweiImplementation。
如果我们想要在程序中取当前的渠道,可以在AndroidManifest.xml文件中增加元数据,
在build.gralde的不同渠道中通过manifestPlaceholders设置其值即可,
然后可以在代码里面通过如下方式获取,
对于不同渠道如果依赖特定的资源或者代码逻辑不同时,可以在src目录下新建一个falvor同名的目录,然后添加资源到该目录下,如果需要写特定代码可以在该flavor目录下新建一个java文件夹(新建后右击Mark Directory As Sources Root才能在此目录下新建Package)然后新建包并添加代码文件。
例如华为渠道需要特定的json文件及增加新的元数据,
Huawei目录下的AndroidManifest.xml文件内容如下,
在编译时候会将application节点下的内容合并到主的清单文件中。
在模块的src目录下新建渠道命名的文件夹,例如google及huawei,然后各自新建一个java目录,设为Resources Root后新建同名的包及在相应的包下新建同名的类,
在模块的build.gradle文件中添加与应用级build.grable同样的productFalvors,
然后在该文件中添加相应的依赖。如果有其它模块引用了该模块,则必须在引用的模块中的build.gradle文件中也添加相同的productFlavors。
打开Build Variants菜单,找不到可以搜索,然后选择编译变体即可,
如果在打包时候需要指定目录,可以在应用级build.gradle文件的android标签内增加如下内容,
则打包后生成的文件都位于release目录下,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。