作为一名安卓开发者,对于多渠道 渠道指定debug release,以及不同渠道引用不同模块,不同渠道编译不同代码是通过gradle实现的,在c#里很多经验多年的人也对此表示陌生,他们都沉浸在业务的代码中,不知道优化代码,也不知道高效的管理代码。 甚至连git都不使用。
我决定打破这一点,于是进行的仔细的研究。
经过研究发现,要多个文件识别同一个宏定义只能在编译设置csproject里面操作 ,太麻烦了点,而后发现界面也是可以设置的,至于release和debug可以勾选单独优化。
我要的是模块划分+ 项目划分
如果在项目设置里面设置ACHANNEL ,那么所有文件这样判断,太啰嗦了
我要把每个模块归类到一个模块, 然后父级别控制这个整个模块 是否编译
[图片上传中...(image.png-17c6f5-1661394956949-0)]
也就是说ACHANNEL里面包含A1,A2,A3 单独这样就难搞了,在c++里面可以渠道包含模块,这样控制渠道 渠道就控制模块。
由于只能单一控制,渠道编译虽然可以,但是毕竟麻烦,具体的麻烦就是要全部改成命令,改成命令就没那么麻烦了,如下图,可以单独设置 全局生效的宏定义,另外有一个DefineConstants也是一个关键的东西,通过控制它也可以控制一些渠道。
最后命令 传递p:DefineConstants
msbuild ConsoleApplication1.sln /p:DefineConstants="DEV" /t:Rebuild
理论上可以在开发工具里面直接可以显示出来,但是需要研究csproject的语法
学习相关知识各位朋友可以搜索关键词csproj文件中的DefineConstants 应该可以找到灵感。
通过添加这个item,我认为可以实现安卓的渠道生产功能。
为了方便,我直接用开发工具本来自带的新建功能。
最后的效果如下,多了一个VIPCHANNEL
最后
参考资料
https://stackoverflow.com/questions/10916280/how-to-use-define-from-another-file