开发者社区 问答 正文

Gradle批量打包时怎么动态改变manifest文件中的渠道号?:报错

@打杂程序猿 你好,想跟你请教个问题:

根据我查的资料,在Gradle批量打包时,需要在build文件中增加

buildTypes {
         hiapk {
             packageNameSuffix ".hiapk"
         }
         playstore {
             packageNameSuffix ".playstore"
        }
     }

这样便会打出两个渠道的包。但现实打包时需要在manifest文件中更改每个渠道对应的渠道号,下面这段代码可以实现将渠道对应的名字替换到相应的位置。

android.applicationVariants.all{ variant -> 
    	variant.processManifest.doLast{
        	copy{
	            from("${buildDir}/manifests"){
	                include "${variant.dirName}/AndroidManifest.xml"
	            }
	            into("${buildDir}/manifests/$variant.name")
	
	            filter{
	                String line -> line.replaceAll("CHANNEL_VALUE", "$variant.dirName")
	            }
	            variant.processResources.manifestFile = file("${buildDir}/manifests/${variant.name}/${variant.dirName}/AndroidManifest.xml")
        	}    
   		}
	}

但这时假如我有很多的渠道,便需要在上面的build-types中增加相应的渠道配置,这样就很麻烦了。

有没有其他的办法可以批量动态的打包且修改渠道号?

展开
收起
kun坤 2020-06-06 14:54:39 810 分享 版权
1 条回答
写回答
取消 提交回答
  • 写shell脚本生成.....

    例如.你有一堆 渠道的的数据

    然后用awk for 循环一次生成这个脚本..
    ######

    引用来自“打杂程序猿”的答案

    写shell脚本生成.....

    例如.你有一堆 渠道的的数据

    然后用awk for 循环一次生成这个脚本..
    没有怎么研究过Linux,有没有适合于Windows上用的办法?比如在最后那段拷贝的代码中增加数组,依次放进去。但是我试过这种办法,Gradle打包时不会按照build-types中设定的渠道顺序去打包。所以我自己认为没有办法用数组。并且Gradle会默认打两个包,也是个问题。我现在使用的方法时把渠道号直接写成build-types中渠道的名字,然后再用下面那个拷贝的方法就可以了。但是渠道多了话需要依次修改build-types中的渠道名称,太麻烦了,而且手动依次改容易出错。有没有别的办法?
    ######打包顺序是按照flavor名字排序的######因为,我没这种需求,,所以我也没怎么研究..

    还有一种是根据目录来替换,我博文有说过

    gradle插件 约定了一种目录加载方式.

    build-types
    -play
    --Andxxx.xml
    -amazon
    --Andxx.xml

    注意项目主Andxx.xml 不要加渠道信息那两行代码
    ######可以留下联系方式请问一下您如何实现的吗?######

    用build flavor啊

    详见

    http://devyang.me/blog/2014/11/03/android-gradle-duo-qu-dao-da-bao-pei-zhi/

    ######不行啊,不起作用,值改不了######按照Android Gradle的使用指导,可以创建与工程目录app/main同级的渠道目录,并且渠道目录下面的子目录结构与main完全一直,这样就可以在该目录结构下,放置与mian目录下有区别的文件。同时配置productFlavors{},这样就可以了。具体请参照:http://developer.android.com/sdk/installing/studio-build.html#workBuildVariants
    2020-06-06 14:54:48
    赞同 展开评论