S3.0 新特性
看官方的版本发布说明,就能知道大概了: https://developer.android.google.cn/studio/releases/index.html
如:
|
|
Gradle 变化
kotlin、cmake的支持,新建一个项目,应用这些特性,就能看到配置了,就不贴了
AS3.0的gradle变化的说明地址:https://developer.android.google.cn/studio/build/gradle-plugin-3-0-0-migration.html
gradle.properties
|
|
<module>/build.gradle
- 新的依赖项
|
|
作者君,某天就被api和implementation 坑了好久。还以为哪里的环境出了问题,报各种gradle相关错误。
引发的场景:有一个android-Lib-module, 内部有依赖一些jar文件… 在app-module中,有代码使用到了jar文件中的类;而在android-Lib-module中jar的依赖是这样的
implementation fileTree(include: ['*.jar'], dir: 'libs')
,造成在app中老是提示cannot access xxx-class
…
- productFlavors 要求每个flavor都有配置一个dimension属性
|
|
这些dimension要配置在一个地方,一般放在defaultConfig中:
|
|
3.0 之前:flavors和buildTypes的子项 会多对多匹配;即会有 m * n 个build variant
3.0 之后:flavors中需要配置dimension, 其又声明在flavorDimensions里面;
匹配规则是:不同dimension的flavor会被联合,然后与buildTypes的每项匹配。
如buildType有:debug和release; productFlavors如下:
|
|
这样就会组合成如下6项build variant:
|
|
- applicationVariants中的变化
3.0前可以改变apk的输出路径和名字:
|
|
3.0中,outputFile只有get方法,没有set方法了,所以不能通过这种方式设置
可以通过如下方式,设置输出apk的名字:
|
|
关于variant.outputs.each
要说的一点是:该迭代器,访问的对象需要在构建之前就已经是存在的。测试时发现如果在each内操作一个File对象,其对应的文件必须事先存在,才能操作;且在构建任务一开始运行时就被执行了。