美文网首页
Android 中多渠道打包的一些坑坑洼洼

Android 中多渠道打包的一些坑坑洼洼

作者: JackDaddy | 来源:发表于2018-05-30 15:39 被阅读33次

            在Android开发完成时通常需要进行打包,由于有许多应用市场,比如360应用市场,小米应用市场,华为市场等等。那么一份代码打多个包,发布到不同应用市场是非常必要的。因此今天就来说说在Android 中关于多渠道打包的问题。

            首先,要做到一份代码打多个包,我们就要保证每个包的包名不一样,那包名指的是什么呢?你可能会把packageName与applicationId弄混了,简而言之packageName作为R资源,四大组件的路径; applicationId作为应用唯一标识。因此若要做到一份代码打不同的包就要在build.gradle中的多渠道中配置不同的applicationId。

            在build.gradle中的productFlavors中配置,如图所示:

    配置不同的applicationId

    由于在不同的应用市场还需要不同的渠道参数,因此可以利用manifestPlaceholders 来配置,如图所示,由于LZ开发的是定制版APP,因此配置的是渠道参数不是关于应用市场的。

    配置渠道参数

    传统打包通常会在Build Variants中选择不同的版本进行打包如图,然后点Build APK,这样打包的时间会比较久,效率较低。如果是打一个包还好,往往实际情况是一次性打多个包。而且有的公司对包名有着严格的要求,那么要如何完成这两个需求呢。

    Build Variants

    首先在gradle中写获取时间的字段:

    获取时间的字段

    然后写打包的字段:

    applicationVariants.all { variant -> //批量修改Apk名字

            variant.outputs.all { output ->

                if (!variant.buildType.isDebuggable()) {

                    //获取签名的名字 variant.signingConfig.name

                    //要被替换的源字符串

                    def sourceFile = "-${variant.flavorName}-${variant.buildType.name}"

                    //替换的字符串

                    def replaceFile = "V${variant.versionName}_${variant.flavorName}_${variant.buildType.name}_${releaseTime()}"

                    outputFileName = output.outputFile.name.replace(sourceFile, replaceFile)

                }

            }

        }

    }

    以上完成打包名称的替换,通过刚才的步骤以后打出来的包名称为:版本号+包名+日期

    最后是如何一次性将多个渠道的包一次性打出来,在这里,LZ写了一个脚本,下载Git,然后运行脚本,就可以一次性打出渠道下所有的包,需要脚本的评论拿。

    至此,填完渠道打包的坑~~

    Android彭于晏睡觉去啦~~~~

    相关文章

      网友评论

          本文标题:Android 中多渠道打包的一些坑坑洼洼

          本文链接:https://www.haomeiwen.com/subject/lwktsftx.html