返回顶部
首页 > 资讯 > 精选 >Android Gradle插件3.0的示例分析
  • 938
分享到

Android Gradle插件3.0的示例分析

androidgradle 2023-05-30 17:05:03 938人浏览 独家记忆
摘要

这篇文章主要为大家展示了“Android Gradle插件3.0的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Gradle插件3.0的示例分析”这篇文章吧。为了提升编译

这篇文章主要为大家展示了“Android Gradle插件3.0的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Gradle插件3.0的示例分析”这篇文章吧。

为了提升编译速度,这几天用上了 AS 3.0 和 Gradle 3.0 插件,不得不说不论是 AS 3.0,还是 Gradle 3.0 都变化非常大,具体的更新日志参考下官网,其中 Gradle 3.0的配置和可能遇到的问题可以说是非常详细了。

下面来列决下我遇到的坑和解决方法:

配置属性的改动

Gradle 3.0 和之前有一点很大的不同就是配置属性的变化,详情可以参考上面列出的配置属性链接,这里我再具体的把两个关键字implementation和api解释一下。这里我使用的插件版本为build:gradle:3.0.0-beta5

api

api你可以简单的理解为之前的compile。举个例子,你使用api在lib.A下的build.gradle引用一个本地lib包,这里假设名为lib.A,那么当lib.B有改动的时候,重新编译不仅会编译lib.B,还会编译包括lib.A的所有通过api引用它的包。使用api进行引用,相当于把lib.B对外暴露了接口,这时候,假使有一个lib.C引用了lib.A,那么lib.C是可以直接使用lib.B的代码的。简单的画个图来解释下。

Android Gradle插件3.0的示例分析

可以看到,通过api来引用实际上是和原来的compile一样的,虽然可以让lib.B的接口让lib.C来使用,但当lib.B有代码改动的时候,lib.A和lib.C都需要重新编译,无疑编译速度大大降低了。

implementation

如下图所示。implementation 引用的 lib 不会对外暴露自己的接口,也就是说,当lib.A implementation lib.B,lib.C implementation lib.A 的时候,如果lib.B发生了改变,那么只有lib.A会重新编译,lib.C将不会编译!这将大大减少编译时间。

Android Gradle插件3.0的示例分析

总而言之,更好的方式就是尽量使用implementation来进行依赖,这样会大大改善工程的构建时间,除非你明确需要向外暴露当前 lib 依赖的接口时,才需要使用 api 依赖。

官方的 Maven 库

之后很多官方库的最新版本比如multidex等等,都会在官方的 Maven 库中进行更新,所以,如果你需要引用这些最新版本的库,你就需要配置官方的 Maven 地址

maven {    url "https://maven.Google.com"}

如果你使用的是 4.0 版本以上的 gradle,那么可以直接使用 google() 来配置仓库:

repositories {  google()}

一些报错

Error:Could not get unknown property ‘apkVariantData' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.

Gradle 3.0 的 api 有一些变化,所以如果你项目中引用了一些第三方 gradle 插件使用了一些旧的api,就会导致报错,比如这里就是因为apkVariantData这个指令已经从 gradle 3.0 剔除了。

解决方法首先是看看你引用的包的最新版本有没有适配3.0的。如果没有,要么你去下载它的插件源码,升级它的 gradle 插件到 3.0 ,再自己把过时的 api 换掉,要不就先暂时在项目中注释掉相关插件代码。

比如我这里就是因为AndResGuard使用了这个老 api 导致的报错。

Error:The specified Android SDK Build Tools version (23.0.1) is ignored, as it is below the minimum supported version (25.0.0) for Android Gradle Plugin 3.0.0-beta5.Android SDK Build Tools 26.0.0 will be used.

Gradle 3.0 的最低支持 SDK Build Tools 版本为 25.0.0,所以如果你的项目中的 application 和 library 使用了比它低的版本,就会报这个错误。

Error:Removing unused resources requires unused code shrinking to be turned on. See Http://d.android.com/r/tools/shrink-resources.html for more infORMation.

官网的说明很清楚了:

资源压缩只与代码压缩协同工作。代码压缩器移除所有未使用的代码后,资源压缩器便可确定应用仍然使用的资源。这在您添加包含资源的代码库时体现得尤为明显 - 您必须移除未使用的库代码,使库资源变为未引用资源,才能通过资源压缩器将它们移除。

要启用资源压缩,请在 build.gradle 文件中将 shrinkResources 属性设置为 true(在用于代码压缩的 minifyEnabled 旁边)。例如:

android {  ...  buildTypes {    release {      shrinkResources true      minifyEnabled true      proguardFiles getDefaultProguardFile('proguard-android.txt'),          'proguard-rules.pro'    }  }}

加上这些代码。问题即可解决。

Error:java.lang.RuntimeException: Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration.

这个问题是注解适配问题,新的 gradle 插件不再支持 annotation processors,如果需要使用需要显式声明:

defaultConfig{  ...  versionCode 1  versionName 1.0  javaCompileOptions {      annotationProcessorOptions {        includeCompileClasspath false      }    }}

All flavors must now belong to named flavor dimension.

参考官网链接 : 官网解决链接

截个图

Android Gradle插件3.0的示例分析

databinding

不仅需要

 dataBinding {    enabled = true }

还需要

implementation 'com.android.databinding:library:1.3.1'implementation 'com.android.databinding:adapters:1.3.1'

以上是“Android Gradle插件3.0的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Android Gradle插件3.0的示例分析

本文链接: https://lsjlt.com/news/220190.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android Gradle插件3.0的示例分析
    这篇文章主要为大家展示了“Android Gradle插件3.0的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Gradle插件3.0的示例分析”这篇文章吧。为了提升编译...
    99+
    2023-05-30
    android gradle
  • Android Studio 3.0 gradle提示版本太老的示例分析
    这篇文章主要介绍了Android Studio 3.0 gradle提示版本太老的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。很多朋友在用Android Studi...
    99+
    2023-05-30
    android studio
  • 【Android Gradle 插件】Gradle 基础配置 ⑤ ( gradle-wrapper.properties 配置分析 | GRADLE_USER_HOME 目录 )
    文章目录 一、gradle-wrapper.properties 配置分析二、GRADLE_USER_HOME 目录 一、gradle-wrapper.properties 配置分析 Gradle Wrapper 配...
    99+
    2023-08-21
    android gradle android studio gradle wrapper maven
  • Android Studio 3.0上内存泄漏的示例分析
    这篇文章主要为大家展示了“Android Studio 3.0上内存泄漏的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android Studio 3.0上内存泄漏的示例分析”这篇文章...
    99+
    2023-05-30
    android studio
  • 构建Gradle的示例分析
    小编给大家分享一下构建Gradle的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Gradle构建过程根据在上图中所示,Gradle 的构建过程主要分为三...
    99+
    2023-06-15
  • Mybatis分页插件的示例分析
    这篇文章主要介绍Mybatis分页插件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Mybatis分页插件的实例详解1.前言:我们知道,在MySQL中,分页的sql是使用l...
    99+
    2024-04-02
  • OCR插件Ocrad.js的示例分析
    这篇文章主要介绍了OCR插件Ocrad.js的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Ocrad.js 相当于是 Ocrad ...
    99+
    2024-04-02
  • Vue中插件的示例分析
    这篇文章主要为大家展示了“Vue中插件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中插件的示例分析”这篇文章吧。以上是“Vue中插件的示例分析”这篇文章的所有内容,感谢各位的阅...
    99+
    2023-06-25
  • 【Android Gradle 插件】Android Studio 工程 Gradle 构建流程 ② ( settings.gradle 构建脚本分析 | 根目录下 build.gradle 分析 )
    文章目录 一、settings.gradle 构建脚本分析1、Maven 远程仓库配置2、目录配置3、完整代码示例 二、根目录下 build.gradle 构建脚本分析 一、settings.gradle 构建脚本分...
    99+
    2023-08-16
    android android studio gradle settings.gradle build.gradle
  • jQuery插件开发的示例分析
    这篇文章将为大家详细讲解有关jQuery插件开发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。进行jQuery插件开发前,首先要知道两个问题:什么是jQuery...
    99+
    2024-04-02
  • Chrome插件开发的示例分析
    这篇文章给大家分享的是有关Chrome插件开发的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本文目录:demo部分截图:前言什么是Chrome插件严格来讲,我们正在说的东西应该叫Chrome扩展(Chr...
    99+
    2023-06-15
  • Vue CLI插件开发的示例分析
    这篇文章主要为大家展示了“Vue CLI插件开发的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue CLI插件开发的示例分析”这篇文章吧。1. 什么...
    99+
    2024-04-02
  • .NET Framework插件演变的示例分析
    这期内容当中小编将会给大家带来有关.NET Framework插件演变的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,我认为.NET Framework这是一个很有用的插件,如果继续得到改进...
    99+
    2023-06-17
  • 小程序缓存插件的示例分析
    这篇文章主要为大家展示了“小程序缓存插件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“小程序缓存插件的示例分析”这篇文章吧。背景wx.request是...
    99+
    2024-04-02
  • layer弹窗插件操作的示例分析
    这篇文章主要介绍了layer弹窗插件操作的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:1、首先去http://layer...
    99+
    2024-04-02
  • jQuery插件扩展操作的示例分析
    这篇文章将为大家详细讲解有关jQuery插件扩展操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:如下DEMO 展示了为dom扩展一个myshowHt...
    99+
    2024-04-02
  • JavaScript插件化框架MinimaJS的示例分析
    这篇文章将为大家详细讲解有关JavaScript插件化框架MinimaJS的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript编写的插件化框架——...
    99+
    2024-04-02
  • 微软新出Pylance插件的示例分析
    这篇文章主要介绍了微软新出Pylance插件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微软于7月1日发布一款新的VS Code插件,名为Pylance,这个名称...
    99+
    2023-06-20
  • canvas中视频遮罩插件的示例分析
    这篇文章将为大家详细讲解有关canvas中视频遮罩插件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一个长视频可能包含多个遮罩,每个遮罩有特定的显示时间(在此时间外,隐藏该遮罩)。前端实现视频遮...
    99+
    2023-06-09
  • 插入性能的示例分析
    这篇文章给大家介绍插入性能的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。使用append提示进行insert叫做直接路径加载插入。【特点】使用这种提示因为系统不去查找freelist链表中的空闲块,直接在高水...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作