今天我们来说一说Gradle多版本差异化管理,在实际开发中我们往往经常需要打不同的APK来满足我们不同需求。不用手动改来改去一些多余的需求,用我们AS+Gradle就可以完美解决。废话不多说,开车。
先看图,我们通过切换不同的Build Variant,生成我们需要的APK
下面我们来看看在AS中我们要如何展开这项工作的,在我们app的gradle配置中我们只需要这么做,首先我们要明确两个概念
- buildTypes
可以为不同的用户、不同的渠道打包不同的apk包,以便在程序行为上针对不同使用需求做少量定制(如是否可以更改远程服务器地址等)- productFlavors
productFlavors主要针对于”不同的版本之间差异非常小,本质上是同一应用”这种情况。可以根据渠道不同在版本名中增加相应后缀,可以根据特殊客户要求打包不同 ApplicationID 的apk包,并可分别使用不同的资源文件(如不同的应用图标等)
1 | defaultConfig { |
这里可以看到我们加了productFlavors,里面一个pro版,一个free版,我们为高级版的定了不同的applicationId,而普通版的就是使用我们默认的applicationId,gradle中简单配置就先这样了。
然后我们需要在src目录下面新建我们刚刚加的两个渠道
快速生成我们的java,res目录,新建一个空Activity就好了,然后在里面植入我们需要的代码,下面贴上代码。
这里我在pro,free文件中各自新建了一个自定义的MyView,里面代码很简单
free:
1 | public MyView(Context context){ |
pro:
1 | public MyView(Context context) { |
然后我们就可以在main文件中的Activity去调用他们了。
1 | viewById.setOnClickListener(new View.OnClickListener() { |
这里自定义的一个dialog,你自定义啥都行,你也可以写Activity,然后main里面跳转,都是可以的。
如果想把pro的apk名字改一下也和简单,正常处理就好了,在strings.xml目录中加入app_name就好了,然后下面到了最后一步
可以看到这里有四个版本,分别对应我们设置的debug,release版本,选择运行,这样就可以在手机上面显示我们自己的两个apk了!!!
这里需要注意的是我们新建flavors文件要看好了,注意它们的依赖关系,我们新建的布局文件记得依赖当前文件,不是依赖main文件哦。不然会出问题的!
参考文章
利用 Android Studio 和 Gradle 打包多版本APK
版权声明:
除非注明,本博文章均为原创,转载请以链接形式标明本文地址。