上周android 3.0稳定版终于面世,自己也是更新了一波。但是这次的版本算是一个大版本了,直接从2.3.3到了3.0。所以跟之前升级相比也有很多配置方面的变化,现在记录如下。
1、升级完成之后首先是会提示升级gradle插件到3.0.0,而gradle版本升级到4.1,如下图所示:
直接点击update就好了,其实这里修改的是两个地方,一个是project目录下的gradle文件(注意不是module目录下的),另外一个是项目gradle目录下的gradle-wrapper.properties文件里面的gradle版本;
意思就是之前module里面gradle文件里面配置的sdk build tools被忽略了,因为它低于gradle插件3.0.0版本要求的最低版本26.0.2,所以必须升级了,点击update就好
这里的意思就是我们平时不都是会打渠道吗?就是那个productFlavors,然后自己配置一些渠道,例如productFlavors里面直接写录入yingyongbao{}这样就代表这个打出来的包是应用宝渠道的包,但是现在人家要求所有的具体渠道必须属于一个命名的flavor dimension,这个属性干什么用的呢?正常情况下就是直接一个yingyongbao{}就代表应用宝渠道,但是如果想要在应用宝渠道下面再分渠道,但是又不想要在productFlavors里面增加很多个不同渠道的跟yingyongbao{}同级的配置,那该怎么办?这个时候这个dimension属性就派上用场了。好比我应用宝和其他所有的渠道都需要一个付费版的和一个免费版的,但是没有必要给所有渠道在增加一个属性吧,可以如下酱紫写:
然后我们尝试进行打包,然后打出来的包的确是如下所示的四个包:
没错,升级到android studio 3.0之后,打出来的包是一个文件夹,然后文件夹里面的才是具体的跟之前的一样子的渠道包和一个output.json,这个json文件是这个包的一些配置信息,例如包名呀之类的。但是其实我还是有个疑问,虽然前两个是xiaomiFree和xiaomiPay,但是根据我从包里面获取到的渠道是跟xiaomi这个字眼没关系的,因为flavorDimensions的后面的属性的优先级是从前往后的。不知道为啥要酱紫搞。其实要是用不到酱紫的功能,直接在外面写一个flavorDimensions "default",里面不用任何配置就好了。
就是说outputFile这个属性是只读的,我们不能修改他,所以需要将重命名apk名字的代码改为output.outputFileName就好了,想想其实也是,我们没有必要去修改文件,只需要该文件的名字就好了。这样改后还有一个好处,就是可以直接run了,且不用注释掉打包时候重命名的方法调用了:
variant -> generateAppName(variant)
}
之前的话,直接run会因为时间差导致安装apk,失败了,会提示如下错误:
有同学可能会问,那把原来项目的outputFile属性改为outputFileName不就好了嘛,改过后会提示没有outputFileName这个属性,那是因为gradle插件低于3.0.0,且那时候没有outputFileName属性。