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

6个技巧加速你的gradle编译

/gradlew :android:assembleDebug --dry-run 在考虑到所有的gradle执行的任务之后,跳过dry-run,会打印出运行这个命令会消耗多少时间。...gradle daemon是一个后台进程,在gradle构建完成之前不会退出。下次你可以直接调用gradle,它仍然等待你下次调用。...gradle不一样,大多数项目都用的gradle编译,修复gradle版本确保构建重复性。如果你的项目用gradle编译确实很棒,并且你也应该用wrapper。...遗憾的是,由于配置上的一些bug,gradle很容易失败: Failed to apply plugin [id ‘com.android.application’] Gradle version...我们谈论了它如何加快Maven和gradle。并行编译,这是另一种孵化功能,您需要提供另一个命令行标志。

2K30

【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )

文章目录 一、下载官方示例源码 二、处理 TINKER_ID 问题 三、编译 debug 包 四、安装 APK 并运行 五、修改 Gradle 构建脚本中的文件名称 六、修改程序逻辑代码 七、生成 patch...包 八、热修复 九、 源码资源 一、下载官方示例源码 ---- Tinker 官方代码示例 : https://github.com/Tencent/tinker/tree/dev/tinker-sample-android...二、处理 TINKER_ID 问题 ---- 下载该 tinker-sample-android 代码 , 先处理 TINKER_ID 问题 , 参考 【错误记录】Tinker 热修复示例运行报错 (...面板中的 " tinker-sample-android / app / Tasks / other / assembleDebug " 任务 , 双击即可 ; 运行 assembleDebug 任务完毕后...命令 , 也可以运行 assembleDebug gradle 任务 ; 四、安装 APK 并运行 ---- 将上述编译好的 app-debug-0423-21-38-18.apk 安装文件 , 部署到应用中

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

初创团队的 Android 应用质量保障之道

对于Android项目来说,你可以理解它可以定期的拉取代码,然后打包你的应用,并且执行一些特定的任务,例如打包之后运行单元测试、压力测试、UI自动化测试、上传到fir.im 上等。...Jenkins的执行流程大致如图 1-1 所示 : 图 1-1 通过定时触发Jenkins构建任务,它能够自动从github拉取代码、打包apk、运行我们的测试任务,最后我们可以将结果通过邮件发送给相关人员...)连接到jenkins主机上,然后触发Jenkins任务启动单元测试的任务,Jenkins就会执行我们配置的Gradle脚本 assembleDebug connectedDebugAndroidTest...如表 2-1 所示: 邮件通知 测试成功 测试失败 假如测试失败,那么我们通过测试报告就知道是哪个测试运行失败,以及为什么失败,然后相关人员就可以快速的修复bug,将基础bug扼杀在摇篮之中。...然后在Jenkins中我们可以为一个项目添加构建任务任务类型 “Execute Shell”, 如图 3-1 所示: 图 3-1 Execute Shell中的内容就是我们要执行的脚本,作用分别为

1.1K00

记一次inline使用不当导致编译期Null指针的排查过程

起因 周五的一个下午,我哼着小曲和往常一样合完代码。准备运行试试看,结果build时发现了这样一个异常。...于是接下来整个任务都变成了如何找到 错误的 代码处。 先说结论 当方法添加了 inline 修饰后,即也就是内联之后,如果方法参数是一个函数对象(lambda),那么不可为 null。...如何定位错误代码 如果直接对着代码找,那么可能就需要对比所有相关 inline 相关的代码,如果使用之处不多,那么也能很快定位。...难道不应该直接搜索如何打印完整的 build 日志吗,然后通过日志查看到底在哪一步失败了,于是刚好想起了前几天同学也发现过这样的问题,直接去问他。.../gradlew clean assembleDebug 开始尝试。结果如下: 我裂开了,于是继续找其他方案,来来回回折腾了快1个小时,还是这样,难不成我只能去对代码了吗?

41430

Android Gradle系列-入门篇

这篇文章定义入门篇,将结合自己刚开始学习Android时的疑惑与现在对Gradle的认识,进一步整理Gradle在Android中的整体结构。...Gradle是怎样将Java与Kotlin代码编译成APK文件? 后来知道Android Studio自身是不能够编译成APK的,它是集成了Gradle。...申明一个task,用来执行相关任务,这里是clean操作,目的是删除build文件夹中的数据 下面是module中的build.gradle 1apply plugin: 'com.android.application...Gradle Tasks gradle tasks是用来执行特定的gradle任务的。...根据输出的日志,也标明它是执行了task: assembleDebug 当然我们也可以在命令行执行指定的task,例如要达到上面相同的效果,我们可以输入如下命令 1.

75030

APK重命名gradle插件

build-varints)+(build-type).apk,是不是经常能见到app-debug.apk,这是因为使用AS新建一个项目时,默认module名是app,然后直接使用as的run工具,其实执行的assembleDebug...本文将介绍一个如何给APK重新命名的插件,指定名称,不再局限于module名的限制。本文使用开发Gradle插件并上传至本地maven库中的生成插件模板进行开发。...编写插件代码 这里创建了一个扩展类,有一个可以在build.gradle文件中自定义app名称,如果不配置,那么默认还是使用module名。...中的group、artifactId和version; 执行publistToMavenLocal任务,将插件提交至本地maven库 应用插件 创建一个app项目,在其build.gradle中加入如下代码...后,打出来的包名是: RenameTest-1.0-1-debug.apk 代码 关于代码请查看git地址:https://github.com/wangli135/ApkRenamePlugin 其中也有生成插件的脚本

98130

Android gradle打包并自动上传的方法

fir.im账号一个,有账号对应的apitoken,具体fir.im的细节可查看文档fir.im 开发环境macOS,windows推荐把pycurl部分全部替换为requests,即上传apk部分代码换为上传图标的那种方式...,详细见代码 2 Gradle 脚本编写 我们脚本需要做的事情就是在APK打包完成以后,把apk的路径传递给python脚本即可,如何保证打包好了,就用gradle的dependsOn方法,例如打debug...包,我们就可以写一个task ,这个task dependsOn ‘assembleDebug’,这样这个task调用时,会先执行assembleDebug,然后在执行里面的代码,即符合我们的需要 具体代码...//这个task 需要放在 app/build.gradle文件中的android 代码块里 task assemblewithlog { dependsOn 'assembleDebug' doLast...= -1) { result.write(buffer, 0, length); } println(result.toString("UTF-8")); //阻塞gradle代码直到python

2.1K61

关于gradle你应该知道的一些小事

; 揭开Gradle的面纱 一、理解打包命令 gradle clean assembleDebug/assembleRelease 以上这条命令可以分解三个部分,gradle,clean, assembleDebug...;实际上就和我们执行脚本一样,gradle是执行器,而clean 和 assembleDebug是入参, 在这里它们两个代表不同的task,就类似gradle task1 task2 这样。...(源码追踪和依赖分析出编译流程) 1、打开gradle-4.5.1/bin/gradle文件可以看到执行了代码: eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $...1、我们经常在app/build.gradle看到这样的代码: project.afterEvaluate {...} android.applicationVariants.all {...} gradle.addListener...gradle :app:dependencies 1.txt 分析整个app的aar依赖 可以用于排查依赖库异常的问题; 请注意!

1.1K10

Gradle构建提速

/gradlew app:assembleDebug -PdevBuild 包含最少的资源 如果你的app是包含多资源的,比如多语言的和多分辨率。...同时,这样使用会导致你的构建不稳定,可能今天还能构建成功,但是明天就失败了 注意gradle缓存 在新建一个项目的时候,默认在 gradle.properties 中设置了 gradle 使用的内存为...开启代码如下: org.gradle.caching = true 使用implementation 或者 api 代替 compile 假设你有如图这几个项目 app 依赖与lib1,lib1依赖于...) 如何调试缓慢构建 Gradle 提供了工具去帮助知道哪里花了大部分时间 --dry-run --info --profile Gradle profile --dry-run 可以让你知道花费了多少时间在...使用方法:gradle yourtask --dry-run --info 这个参数可以告诉你,当前任务执行的详细信息,包括在执行什么,还有为什么执行。

1.4K50

Android 需要配置的环境变量

在Terminal中使用adb和gradle命令。 环境变量配置 在系统变量中新建一个变量名字ANDROID_HOME的变量,值你的sdk目录。 ?...如图 在系统变量中新建一个变量名字GRADLE_HOME的变量,值你的gradle存放的目录。 ?...adb connect 192.168.1.5:5555 //连接手机(5555是手机开放的端口号,可省略) ,如果连接成功会进行相关的提示,此时在电脑上可以输入adb相关的命令进行调试该手机,如果失败的话.../从本地向设备中添加文件 adb push //从设备上拷贝文件到本地 adb help //显示帮助信息 adb shell //进入设备的data目录 exit //退出...的常用命令 gradlew -v //版本号 gradlew clean //清除app目录下的build文件夹 gradlew build //检查依赖并编译打包 gradlew assembleDebug

3.4K20

Android 热修复解析

如何实现呢?还记得我们之前讲解过的 gradle 系列么?现在就是学以致用的时候了。...然后在 app 项目的 build.gradle 添加下面的代码: project.afterEvaluate { project.tasks.each { if (it.name...热修复不同于插件化,不需要考虑各种组件的生命周期,唯一需要考虑的就是如何能将问题的方法/类/资源/so 替换为补丁中的新方法/类/资源/so。...(只实现了 Android N 上的修复),下面看一些重点代码。...,需要在原有代码中新增逻辑,而且需要对方法进行插桩,将这里逻辑自动化处理 增大包体积 11 资源热修复方案 关于资源的修复方案,没有像代码修复一样方法繁多,基本上集中在对 AssetManager 的修改上

94141

Android编译的小知识

背景 Android是如何进行编译的? 项目中的源代码如何一步步被执行为可以安装到手机上的apk的? 文章会一一给大家介绍,尽量以代码例,好让大家快速理解。 文末有福利~ 1....assembleDebug/assembleRelease编译命令的时候,Gradle就会开始进行编译构建流程。...Configuration配置阶段 配置阶段的任务是执行各module下的build.gradle脚本,从而完成Project的配置,并且构造Task任务依赖关系图以便在执行阶段按照依赖关系执行Task...可以理解AGP是Gradle构建流程中重要的一环。.../gradlew assembleDebug --scan 1)基于这个报告,我们可以分析编译耗时的task 2)分析依赖情况(当然本地也可以) 可以知道具体被打包进apk的aar版本究竟是哪个

57330

【Android Gradle 插件】Gradle 基础配置 ⑥ ( Android工程 Gradle 常用命令 | gradlew 可执行文件 | 查看帮助文档 | 查看应用依赖 )

Gradle将尝试重用以前构建中的构建配置。[孵化] --configuration-cache-problems 配置配置缓存如何处理问题(失败或警告)。默认为失败。...值“plain”、“auto”(默认值)、“rich”或“verbose”。 --continue 任务失败后继续执行任务。...-S, --full-stacktrace 打印所有异常的完整(非常详细)堆栈跟踪。...Gradle不会退出,并将在任务文件输入更改时重新执行任务。 --update-locks 执行依赖项锁的部分更新,让传入的模块符号更改版本。...三、执行 help 任务 ---- 执行 gradlew help 命令 , 其作用是 执行 help 任务 , 这是一个 Gradle 任务 , 是系统默认提供的任务 , 该任务的作用是 查询构建过程中代码是否出错

1.4K30

Gradle For Android(2)--基础的定制构建

Gradle之前的构建系统中,PackageName有两个作用,唯一表示一个App以及用于R.java赋予包名。...出现问题的时候,会打断Build过程 build:执行assemble以及check任务 Assemble任务默认由assembleDebug以及assembleRelease构成,如果有更多的Build...以下为最重要的新的Tasks: connectedCheck:在已经连接的设备或者模拟器上执行tests任务 deviceCheck:其他插件在远程设备上调试提供的占位任务 installDebug/...from gradle.properties Hello from the command line 默认的任务 如果使用gradle没有指定具体的任务的话,则会执行help任务。...如果需要指定默认的任务的话,则需要在顶层的build.gradle中加入默认任务: defaultTasks 'clean', 'assembleDebug' 这样的话,执行gradlew就会默认执行这两个任务

54530

深入探索 Android Gradle 插件的缓存配置

要衡量您的构建过程中配置阶段所消耗的时间,可以以空运行模式 (dry run mode) 运行任务,例如: ./gradlew :app:assembleDebug --dry-run。...最新版的 Android Gradle 插件版本 4.1 (目前为 4.1.0-rc03),但如果您希望获取所有的错误修复,请尝试最新的 4.2 版本 (目前为 4.2.0-alpha13)。...Gradle 的版本应为 6.6,同时如果您正在使用 Kotlin,请将 Kotlin Gradle 插件更新最新的 1.4 版 (相关 Kotlin issue)。...无论您遇到任何问题,都可以在 Android Studio issue 跟踪 或 Gradle issue 跟踪 中向我们反馈。 它是如何工作的?...下面的示例展示了如何获取影响配置的 enableTask 系统属性值,以及如何获取仅作为任务输入的系统属性 anotherFlag。

2.3K20
领券