看官方的版本发布说明,就能知道大概了: developer.android.google.cn/studio/rele…
如:
- 对java8的一些feature的支持;
- profiler debug;
- device file explorer;
- instant apps support;
- app links support;
- layout editor;
- apk analyzer;
- d8 dex compiler;
- ...
kotlin、cmake的支持,新建一个项目,应用这些特性,就能看到配置了,就不贴了
AS3.0的gradle变化的说明地址:developer.android.google.cn/studio/buil…
- #新的dex编译器
- android.enableD8 = true
- demo {
- dimension "DimenA"
- applicationId "com.stone.myapplication.pro"
- ...
- }
这些dimension要配置在一个地方,一般放在defaultConfig中:
- defaultConfig {
- ...
- flavorDimensions "DimenA", "DimenB"
- }
3.0 之前:flavors和buildTypes的子项 会多对多匹配;即会有 m * n 个build variant
3.0 之后:flavors中需要配置dimension, 其又声明在flavorDimensions里面;
匹配规则是:不同dimension的flavor会被联合,然后与buildTypes的每项匹配。
如buildType有:debug和release; productFlavors如下:
- demo {
- dimension "DimenA"
- applicationId "com.stone.myapplication.pro"
- }
- full {
- dimension "DimenA"
- applicationId "com.stone.myapplication.free"
- }
- xxx {
- dimension "DimenB"
- applicationId "com.stone.myapplication.xxx"
- }
这样就会组合成如下6项build variant:
- demoXxxDebug
- demoXxxRelease
- demoXxxStaging
- fullXxxDebug
- fullXxxRelease
- fullXxxStaging
3.0前可以改变apk的输出路径和名字:
- applicationVariants.all {
- variant - >variant.outputs.each {
- output - >output.outputFile = ...
- }
- }
3.0中,outputFile只有get方法,没有set方法了,所以不能通过这种方式设置
可以通过如下方式,设置输出apk的名字:
- applicationVariants.all {
- variant - >variant.outputs.all {
- outputFileName = "v${variant.versionName}_${variant.flavorName}}.apk"
- }
- }
关于
要说的一点是:该迭代器,访问的对象需要在构建之前就已经是存在的。测试时发现如果在each内操作一个File对象,其对应的文件必须事先存在,才能操作;且在构建任务一开始运行时就被执行了。
- variant.outputs.each
来源: https://juejin.im/entry/59fb101b6fb9a0451d40d06b