首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )

模块常用配置介绍 ---- android 模块的配置是 AppExtension 扩展类型配置 , 文档 https://google.github.io/android-gradle-dsl/2.3.../com.android.build.gradle.AppExtension.html ; 1、compileSdkVersion 配置 compileSdkVersion 配置 : 必修的。...您的代码将针对android进行编译。这个API级别的jar。您通常应该在这里使用最新的SDK版本。 使用Lint工具确保未经检查,不会使用早期平台版本中不可用的API。...Setter可以用“android-21”之类的字符串或数字来调用。 分配给这个属性的值被解析并以规范化的形式存储,所以读回它可能会得到一个稍微不同的字符串。...要使用的构建工具的版本。 分配给这个属性的值被解析并以规范化的形式存储,所以读回它可能会得到一个稍微不同的字符串。

1.6K30

【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ③ ( 在 Gradle 构建脚本中实现 AndroidManifest.xml 清单文件切换设置 )

二、在 Gradle 构建脚本中实现 AndroidManifest.xml 清单文件切换设置 在上一篇博客 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介...构建脚本 切换设置 , 切换 应用 / 依赖库 ; AndroidManifest.xml 清单文件 切换设置 , 设置 启动 Activity 项 ; 在 【Android Gradle 插件】组件化中的...Gradle 构建脚本实现 ② ( 组件化基本实现 | Project 相关目录 | 定义组件切换标志位 | 切换插件导入 | 切换设置应用 ID ) 博客中实现了 模块化 与 组件化 的切换 ;...AndroidManifest.xml 清单文件 放在该目录中 ; 将 module/src/main/debug/AndroidManifest.xml 清单文件 修改成上述配置 : 2、依赖库模块...构建脚本中实现 AndroidManifest.xml 清单文件切换设置 ---- 在 模块下 的 build.gradle 构建脚本 中的 " android#sourceSets#main " 层级下

2.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Gradle Android插件使用的中那些特别注意的点

    Gradle 插件 这是截至目前在使用Gradle的过程中遇到的最大的坑。目前gradle的Android插件官方提供了两个版本:标准版本和实验性版本。...对于实验性版本的一些特别说明 相关环境 必须使用特定的Gradle版本:使用gradle 2.5 必须使用特定的NDK的版本:r10e 必须使用19.0.0以上的Android build tools...相关配置 JNI 不再需要Android.mk和Application.mk文件,相关配置都添加在build.gradle中 Native的so不是放在libs下面,而是放在代码目录中,与java...-被合并的ant 来源:http://blog.csdn.net/itfootball/article/details/42651705 说明:怎么在gradle中使用ant - android...E5%85%B3%E9%97%AD/ 说明:使用gradle自定义打出jar并修改buildConfig中ENABLE_DEBUG的值 - Android Studio使用新的Gradle构建工具配置

    81760

    【Android Gradle 插件】自定义 Gradle 插件优化图片 ① ( Android 中的 WebP 图片格式使用 | WebP 格式转换 | WebP 参考文档 )

    文章目录 一、Android 中的 WebP 图片格式使用 二、WebP 格式转换 三、WebP 参考文档 Android Plugin DSL Reference 参考文档 : Android Studio.../han1202012/Android_UI 一、Android 中的 WebP 图片格式使用 ---- 在 Android 安装包优化 专栏中 , 介绍了如何 给 Android APK 安装文件进行瘦身...等方法进行 APK 瘦身 ; 之后的系列文章开始介绍如何使用 自定义 Gradle 插件 , 在编译时将资源中的图片都转为 WebP 格式 ; 注意 : 在低于 Android 3.2 版本的系统中..., WebP 格式无法使用 ; Launcher 图标必须使用 PNG 格式的 ; 9patch 图片不能转为 WebP 格式的 ; 使用 WebP 格式的图片 的前提是 API 版本需要大于 14 ;...使用 带透明度通道 的 WebP 格式的图片 的前提是 API 版本需要大于 18 ; Android Studio 自带 WebP 转换功能 , 右键点击资源文件中的图片 , 弹出的菜单中有 " Convert

    1.4K10

    使用ARouter进行Android模块化开发

    支持直接解析标准URL进行跳转,并自动注入参数到目标页面中 支持多模块工程使用 支持添加多个拦截器,自定义拦截顺序 支持依赖注入,可单独作为依赖注入框架使用 支持InstantRun 支持MultiDex...ARouter Helper, 在 Android Studio 插件市场中搜索 ARouter Helper, 或者直接下载文档上方 最新版本 中列出的 arouter-idea-plugin zip...gradle.properties配置 在主项目的gradle.properties中需要设置一个开关,用来控制module的编译模式,例如: isModule=false 当isModule为false...module清单文件 为了完成依赖模式与独立模式的切换,module清单文件需要配置两个,一个作为独立项目的清单文件,一个作为库的清单文件,以module_main模块为例。...buildApp作为依赖库的清单文件,和独立项目的清单文件buildModule区别是依赖库的清单文件Application中没有配置入口的Activity,其他都一样。

    1.5K40

    【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ④ ( 使用路由实现组件间通信 | 引入 ARoute 框架 | Gradle 构建脚本优化问题 )

    文章目录 一、使用路由实现组件间通信 二、抽取构建脚本 在上一篇博客 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块...切换 应用 / 依赖库 ; AndroidManifest.xml 清单文件 切换设置 , 设置 启动 Activity 项 ; 在 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现...② ( 组件化基本实现 | Project 相关目录 | 定义组件切换标志位 | 切换插件导入 | 切换设置应用 ID ) 博客中实现了 模块化 与 组件化 的切换 ; 在 【Android Gradle...插件】组件化中的 Gradle 构建脚本实现 ③ ( 在 Gradle 构建脚本中实现 AndroidManifest.xml 清单文件切换设置 ) 博客实现 使用 Gradle 脚本修改 AndroidManifest.xml...build.gradle 中 , 都要进行如下配置 ; 在 build.gradle 下的 " android / defaultConfig " 层级添加配置 : android { defaultConfig

    71320

    别让引入的 SDK 和第三方库导致您应用被下架!

    这些清单文件根据工程需要包含不同的默认 XML 元素和属性。当构建应用时,Gradle 会将所有清单文件合并到一个清单文件中。您可以 指定 "合并规则" 来定义数值的合并方式。...接下来,我们探讨如何使用这个工具洞悉您所依赖的 SDK。 Android Studio 提供了一种简单的方式来检查最终合并后的清单文件。...如果您在合并后的清单文件中看到任何异常的权限使用,请仔细审阅相关依赖库文档 (或者联系开发者),并确保您了解该权限使用的实际目的。 该权限很有可能对于您所使用的服务来说是可选的。...对于需要最小化数据使用的场景,您可以在应用模块的清单文件中添加一个 "remove" 节点标记 来防止该库的权限请求被合并到最终的应用中。...Android 11 引入了 数据访问审计 的特性,它可以帮助开发者确认在应用使用过程中哪段代码访问了数据。该特性可以让您将隐私数据与应用中的业务场景相关联,比如 "点咖啡" 或者 "与朋友分享"。

    46020

    【Android Gradle 插件】Gradle 扩展属性 ② ( 定义在根目录 build.gradle 中的扩展属性 | 使用 rootProject.扩展属性名访问 | 扩展属性示例 )

    文章目录 一、定义在根目录 build.gradle 中的扩展属性 二、扩展属性示例 Android Plugin DSL Reference 参考文档 : Android Studio 构建配置官方文档...) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html 如果将 ext 扩展属性放到 Android 工程根目录下的...build.gradle 构建脚本中 , 则所有的 Module 模块下的 build.gradle 都可以获取到该扩展属性值 ; 在 Module 下的 build.gradle 中可以使用 rootProject....扩展属性名 来访问定义在根目录中 build.gradle 中定义的扩展属性值 ; 二、扩展属性示例 ---- 在根目录下的 build.gradle 中定义扩展属性 : // 定义扩展属性 , 其中的变量对所有子项目可见...} 在 build.gradle 中定义 变量 , 然后自定义 task 任务 , 输出该变量 , 代码如下 : // 定义局部变量 def hello = 'Hello World!'

    3K20

    Android Gradle插件

    优点: 项目构建时,Gradle 会自动编译项目目录下的 buildSrc 文件夹下的构建脚本和源码,并将其添加到项目构建脚本的 classpath 中,因此在使用 buildSrc 中创建的插件时,无需再手动指定...classpath(依赖的名字)(当然也可以自己创建id) buildSrc 文件夹中构建脚本和 Gradle 插件同一项目均可见,因此同一项目中的其他模块也可以使用 buildSrc 中创建的插件...project中创建注入。...Gradle Plugin 1.5.0-beta1 开始,为了简化注入自定义 class 的操作,Android 提供了 Transform API,允许第三方插件在 class 文件被转换成 dex...插件实战之编译期修改代码 开源库和自己写的插入代码注意不要混淆 buildSrc中build.gradle的AGP版本要和app模块中一致 插入代码引用的类要使用全路径 插入代码中用到的类需要将类路径添加到

    1.2K20

    Hilt 工作原理 | MAD Skills

    所涉主题 多种 Hilt 注解协同工作并生成代码的方式。 当 Hilt 配合 Gradle 使用,Hilt Gradle 插件如何在幕后工作以改善整体体验。...多种 Hilt 注解协同工作并生成代码的方式 Hilt 使用注解处理器生成代码。对注解的处理发生在编译器将源文件转换为 Java 字节码期间。顾名思义,注解处理器作用于源文件中的注解。...但这并不是真实的语法,而是 Hilt Gradle 插件为您提供的语法糖。接下来我们将探讨更多关于 Gradle 插件的内容,在此之前,我们先来看看这个例子在没有语法糖的情况下应该是什么样子的。...然而,通常情况下生成的类会继承传入 AndroidEntryPoint 注解的类。这使得注入操作可以在任何您需要的基类中执行。 生成类的主要目的是处理注入操作。...即使使用 implementation,Hilt Gradle 插件也可以自动从 :app 的传递依赖项中聚合所有的类。 此外,与直接使用 api 相比,Hilt Gradle 插件还具有许多优点。

    1.6K20

    使用新 Android Gradle 插件加速您的应用构建

    Android Gradle 插件的 7.0 版本更新带来了许多实用的特性,本文将着重为您介绍其中的 Gradle 性能改进、配置缓存和插件扩展等方面的内容。...△ 配置缓存带来的性能提升 上图展示包含 24 个子项目的 Gradle 构建示例,这组构建使用了最新版本的 Kotlin、Gradle 和 Android Gradle 插件。...Gradle 服务注入来执行外部进程 (与配置缓存兼容的构建任务例子) 您可以从新代码发现,我们在任务注册期间,将输出文件的位置捕获并存入了某个属性中,然后通过注入的 Gradle 服务来执行 git...△ Android Gradle 插件的执行结构 build 类型 (buildTypes) 和产品变种 (productFlavors) 都是您项目的 build.gradle 文件中的概念。...如果其他插件也想设置您的自定义变体属性,或者将属性用于它们的构建任务,也只需要使用类似上述 onVariants 代码块的方式。

    2.7K30

    【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 应用模块 切换设置 )

    、组件化简介 ---- 在 组件化专栏 中 , 详细介绍了组件化的实现 , 本系列博客继续对组件化中 Gradle 构建过程 进行优化 ; Android 应用常用架构 : 模块化 : 默认的 Android...模块 和 Application 模块 之间相互转换 ; 插件化 : 开发一个 宿主应用 , 在宿主应用中集成 插件化框架 , 在该框架中运行 插件 Apk ; 组件化开发中 , 一般将应用划分为若干模块...: 创建 依赖库模块 / 应用模块 互相切换的模块 , 建议创建时创建为 应用模块 , 因为依赖库模块比应用模块少很多文件 , 都需要自己补齐 ; 分层结构 , 可以很好的避免 , 代码全部写在一个模块中.../ 应用模块 切换设置 ---- 在 Gradle 构建脚本中 , 需要实现如下两个功能 : build.gradle 构建脚本切换设置 AndroidManifest.xml 清单文件切换设置 1、...Sync 同步 Gradle 构建 , 该模块就会变为 依赖库模块 ( " Android Library " 类型的 Module 模块 ) ; 此时这个 依赖库模块 才可以作为依赖库使用 ; 2、

    1.1K20

    ARouter 拦截器之多 module 独立运行

    第一步:配置 gradle.properties 在gradle.properties 文件中添加如下代码 #是否需要单独运行某个模块 true:表示某个模块不作为依赖库使用 isSingleCircleModule...需要两步,将gradle.properties中的代码修改为如下: #isSingleCircleModule=true isSingleCircleModule=false #isSingleHomeModule...=true isSingleHomeModule=false 接着将circle和home模块的清单文件中的 application属性和默认启动配置项删掉,然后再运行就 ok 了。...关于组件之间 AndroidManifest 合并问题 其实这个可以在正式打包的时候,注释掉module中的相关代码即可,毕竟是在组件模式。那有没有办法解决每次都要注释的问题呢?答案是yes....路由拦截器使用 首先还是需要添加几个配置,在工程下的build.gradle文件中添加下面这行代码: classpath 'com.alibaba:arouter-register:1.0.2' 在app

    87940

    浅谈 Android 插件化原理

    :清单文件 其实 Android 系统在打开应用之后,也只是开辟进程,然后使用 ClassLoader 加载 classes.dex 至进程中,执行对应的组件而已。...那大家可能会想一个问题,既然 Android 本身也是使用类似反射的形式加载代码执行,凭什么我们不能执行一个 Apk 中的代码呢?...这其实就是插件化的目的,让 Apk 中的代码(主要是指 Android 组件)能够免安装运行,这样能够带来很多收益,最显而易见的优势其实就是通过网络热更新、热修复,想象一下,你的应用拥有 Native...Runtime Container 上面说到只要做到 ClassLoader 注入后,就可以在宿主进程中使用插件 Apk 中的类,但是我们都知道 Android 组件都是由系统调用启动的,未安装的 Apk...Shadow 的做法是字节码替换插件,我认为这是一个非常棒的想法,简单来说,Android 提供了一些 Gradle 插件开发套件,其中有一项功能叫 Transform Api,它可以介入项目的构建过程

    97130

    浅谈 Android 插件化原理

    :清单文件 其实 Android 系统在打开应用之后,也只是开辟进程,然后使用 ClassLoader 加载 classes.dex 至进程中,执行对应的组件而已。...那大家可能会想一个问题,既然 Android 本身也是使用类似反射的形式加载代码执行,凭什么我们不能执行一个 Apk 中的代码呢?...这其实就是插件化的目的,让 Apk 中的代码(主要是指 Android 组件)能够免安装运行,这样能够带来很多收益,最显而易见的优势其实就是通过网络热更新、热修复,想象一下,你的应用拥有 Native...Runtime Container 上面说到只要做到 ClassLoader 注入后,就可以在宿主进程中使用插件 Apk 中的类,但是我们都知道 Android 组件都是由系统调用启动的,未安装的 Apk...Shadow 的做法是字节码替换插件,我认为这是一个非常棒的想法,简单来说,Android 提供了一些 Gradle 插件开发套件,其中有一项功能叫 Transform Api,它可以介入项目的构建过程

    1.2K10

    格子拼贴 — 关于模块化的故事

    Gradle 现在将生成一个 Android App Bundle(aab),替换生成应用。一个安卓应用束需用到动态功能 Gradle 插件,我们稍后介绍。...这将使得更加清晰地分离依赖项。 外部库 通过旁路模块将一个第三方依赖库包含在核心模块中。此外通过 gradle api 依赖关键字,将所有其它 gradle 依赖从 应用 移动至 核心模块。...我们遇到了一个将样式模块化的问题;我们仅将一个功能使用的样式提取到与该功能相关的模块中,但是它们经常是通过隐式构建在核心模块之上。 ?...复制代码 清单文件合并视图将所有功能模块中清单文件合并到应用模块。合并失败将导致功能模块样式文件在指定时间对应用模块不可用。 为此,我们在核心模块样式文件中为每一样式如下创建一份空声明: 清单文件合并在合并过程中抓取样式,尽管样式的实际实现是通过功能模块样式引入。

    81630

    格子拼贴 — 关于模块化的故事

    Gradle 现在将生成一个 Android App Bundle(aab),替换生成应用。一个安卓应用束需用到动态功能 Gradle 插件,我们稍后介绍。...Plaid 的 核心模块 为开始重构,我们将所有代码和资源都移动至一个 com.android.library 模块。进一步重构后,我们的核心模块仅包含各个功能模块间共享所需要代码和资源。...这将使得更加清晰地分离依赖项。 外部库 通过旁路模块将一个第三方依赖库包含在核心模块中。此外通过 gradle api 依赖关键字,将所有其它 gradle 依赖从 应用 移动至 核心模块。...我们遇到了一个将样式模块化的问题;我们仅将一个功能使用的样式提取到与该功能相关的模块中,但是它们经常是通过隐式构建在核心模块之上。...清单文件合并视图将所有功能模块中清单文件合并到应用模块。合并失败将导致功能模块样式文件在指定时间对应用模块不可用。 为此,我们在核心模块样式文件中为每一样式如下创建一份空声明: <!

    12310

    Android Instant Apps简介

    用于Gradle 3.0.0-alpha1的Android插件 —— 这附带了一些新的gradle插件,可帮助你模块化应用程序; com.android.instantapp和com.android.feature...Feature modules ——  是应用新的 com.android.feature 的Gradle插件的模块。它们只是library 项目,aar在被其他模块使用时产生。...例如,这里是一个Feature module例子的manifest 。 Base feature module —— 基本功能模块可以被认为是项目的根。它包含其他模块要使用的共享代码和资源。...manifest 是将所有其他从其他功能模块继承的manifest合并的结果。...你依赖的某些gradle插件可能无法正常工作。许多用于Android项目的gradle插件使用com.android.application或com.android.library插件检查模块。

    3.6K70

    Android Study 之学(kao)习(bei)官方关于64k异常处理 ^_^

    该情况不应出现在直接从应用代码访问的代码上,因为构建工具能识别这些代码路径,但可能在代码路径可见性较低(如使用的库具有复杂的依赖项)时出现。...例如,如果代码使用自检机制或从原生代码调用 Java 方法,那么这些类可能不会被识别为主 DEX 文件中的必需项。...DEX 文件中的必需项。...这些设置会使适用于 Gradle 的 Android 插件执行以下操作: 执行 pre-dexing:将每个应用模块和每个依赖项构建为单独的 DEX 文件; 将每个 DEX 文件加入 APK,并且不做任何修改...(不执行代码压缩); 最重要的是,模块 DEX 文件不执行合并操作,因此可以避免为确定主 DEX 文件的内容而进行长时间的计算。

    83410
    领券