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

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

二、处理 TINKER_ID 问题 ---- 下载该 tinker-sample-android 代码 , 先处理 TINKER_ID 问题 , 参考 【错误记录】Tinker 热修复示例运行报错 (...Gradle 面板中的 " tinker-sample-android / app / Tasks / other / assembleDebug " 任务 , 双击即可 ; 运行 assembleDebug...也可以运行 assembleDebug gradle 任务 ; 四、安装 APK 并运行 ---- 将上述编译好的 app-debug-0423-21-38-18.apk 安装文件 , 部署到应用中 ,..." , 主要使用 " 0423-21-38-18 " 这个时间参数 ; 在 Gradle 构建脚本中 , 修改如下四个变量中的时间相关值 , 将时间参数修改为 " 0423-21-38-18 " , ext...面板中 , 运行 " tinker-sample-android / app / Tasks / tinker/ tinkerPatchDebug " 任务 , 双击即可 ; 运行完成后 , 在 "

48530

6个技巧加速你的gradle编译

在开始优化之前,我们首先需要理解一下Gradle的生命周期,它被拆分为3个不同阶段: 初始化:扫描项目,找出哪些内容需要被编译 配置:运行build.gradle脚本,创建任务图 执行:构建你APP有用的部分...让我们用手中典型的开发环境用gradle去build这个APP来获取依赖。 再次编译我们的项目,但是用dry-run(能够让gradle去跳过所有任务的执行)。.../gradlew :android:assembleDebug --dry-run 在考虑到所有的gradle执行的任务之后,跳过dry-run,会打印出运行这个命令会消耗多少时间。...配置这样一个命令对gradle一个孵化的功能,所以它不是默认启用的。...模块化项目和并行化编译 最后,这个不是特别重要,但是也许是最有影响力的,它能提高你的项目编译速度并且使你的项目模块快更好。首先,模块化项目可以并行编译。我们谈论了它如何加快Maven和gradle

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

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

这篇文章我就来分享一下我们如何保证应用的稳定性、避免内存泄漏的。...相关人员通过报告发现错误之后就会尽快修复bug, 不需要等到测试阶段经过各种测试路径之后才能发现问题。如果这个问题在QA测试阶段没有被覆盖到,那么就会导致有问题apk交付给用户。...)连接到jenkins主机上,然后触发Jenkins任务启动单元测试的任务,Jenkins就会执行我们配置的Gradle脚本 assembleDebug connectedDebugAndroidTest...在执行Monkey的过程中,如果应用产生了崩溃、ANR等,它都会输出日志,测试结束之后如果测试失败我们只需要查看错误日志就可以发现问题所在。...但并不是有更多的测试就会更好,有的时候也会适得其反,因此运用哪些测试方案、做到什么程度都需要根据各自的情况进行决策。我们的目标提高应用的质量,不是增加测试的数量。

1.2K00

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

无论运行全新构建、增量构建还是更新构建,配置阶段的开销都是相同的。要衡量您的构建过程中配置阶段所消耗的时间,可以以空运行模式 (dry run mode) 运行任务,例如: ..../gradlew :app:assembleDebug --dry-run。 为了进一步避免重复运行配置过程,配置缓存还允许来自同一工程的任务并行运行。...最新版的 Android Gradle 插件版本为 4.1 (目前为 4.1.0-rc03),但如果您希望获取所有的错误修复,请尝试最新的 4.2 版本 (目前为 4.2.0-alpha13)。...通常首先会应用所有插件,同时 DSL 对象会被实例化;接下来会继续评估构建文件, DSL 对象将会被分配您所指定的值。...在此阶段结束时,每个任务的状态都将被完全记录并保留下来。 在第二次构建时,假设 Gradle 能够复用记录的缓存,则会加载所请求任务任务图、跳过 DSL 评估,任务配置等。

2.3K20

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

于是接下来整个任务都变成了如何找到 错误的 代码处。 先说结论 当方法添加了 inline 修饰后,即也就是内联之后,如果方法参数一个函数对象(lambda),那么不可为 null。...如何定位错误代码 如果直接对着代码找,那么可能就需要对比所有相关 inline 相关的代码,如果使用之处不多,那么也能很快定位。...gradlew assembleDebug 继续尝试别的方案,又是一顿搜索,这时候看到了 StackOverFlow 上有人用这个命令也可以,于是死马当活马医,继续尝试。 执行 ..../gradlew clean assembleDebug 开始尝试。结果如下: 我裂开了,于是继续找其他方案,来来回回折腾了快1个小时,还是这样,难不成我只能去对代码了吗?...让大佬来看了一下,大佬的回复很简单: 这应该已经gradle能给出的最大提示了,你想要的错误具体位置,应该是无法打印出的,这种情况,你只能通过合并的diff对比下,看看是哪里导致的。

41730

Gradle 提速:每天为你省下一杯喝咖啡的时间

如何优化 Gradle 官方的一些优化建议 尽可能的使用最新版本的 Gradle 和 JVM,这是最简单直接的方式,Gradle 开发团队会持续的更新 Gradle 版本,来优化构建速度以及提供一些新的特性...,而使用新版本的 JVM,是因为 Gradle 运行在 JVM 上,所以,如果新版本的 JVM 提升了性能,同样也会让 Gradle 跑的更快。.../gradlew assembleDebug --profile ?...注意一:如果你使用的 Gradle 4.6 版本, com.android.tools.build:gradle 版本是 3.0.1 或者 3.1.0,你需要禁用该配置以避免一些不必要的问题,该问题会在将来的...,不必执行构建时压缩,可以加快你的构建 关闭 PNG crunching,加快构建速度通过禁用自动图像压缩,Gradle 3.0 版本以上在 debug 的构建类型下默认关闭的。

51330

Gradle For Android(5)--管理多Module的编译

Gradle总是会根据根目录来配置依赖关系。 一旦你知道了构建过程Model如何把他们放到一起的时候,我们也就知道了配置多Module的构建配置。...当使用命令行在Project的根目录下执行一个Task的时候,Gradle会检查出哪个模块有这个名字的Task,然后为每个模块执行这个任务 例如,有一个Mobile APP模块,还有一个Android.../gradlew assembleDebug在Android Wear模块的目录下,将只会构建Android Wear模块。 改变目录,然后执行module中指定的任务来构建单独的模块会比较麻烦。...dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } Java Library Module会使用java插件,不是使用...war插件后端运行和分发的重要的插件,这个插件会生成一个War文件,可以在Java Web应用中被应用。最后appengine插件可以加载一系列构建的Task,执行并且部署后端。

2.4K30

vscode 搭建原生Android原生开发环境

会自动下载gradle-5.4.1-all.zip,如下: 使用配置tasks.json配置相关任务如果: 然后就可使用ctrl+shift+b 弹出配置的任务:打包、清理等。 也可在命令窗口中执行..../gradlew assembleDebug 打包apk。 生成一个 .jks (Java KeyStore) 文件通常用于存储你的私钥,以便在构建和发布Android应用时进行签名。...以下如何使用keytool来生成一个.jks文件的步骤: 打开命令行或终端: 首先,你需要打开一个命令行界面或终端。 找到keytool: keytoolJava开发工具包(JDK)的一部分。...在Android项目中,签名配置(signingConfigs)通常放在应用的build.gradle文件中,不是根目录下的build.gradle文件。...以下一个简化的例子,展示了如何在应用的build.gradle文件中配置签名: 创建新项目: 打开VSCode,选择“文件”>“新建文件夹”,并为你的项目创建一个新文件夹。

48411

flutter的环境安装配置问题及解决方法

目前应用比较广泛的还是移动端iOS和安卓,虽然传言Fuchsia会是亲儿子项目,那也不是当下考虑的。 下面重点给大家介绍下flutter的环境安装配置问题及解决方法。...(1)安装android SDK时,会出现Android license 的问题,将JAVA JDK降级到SE8就可以了,很多版本没对应上,JAVA8比较稳定的,包括后面的gradle也需要基于JAVA8...解决:安装JAVA8后,运行flutter doctor –android-licenses (2)卡在Running ‘gradle assembleDebug运行阶段,引用国内阿里云的镜像解决。...问题描述:Running Gradle task ‘assembleDebug’… 解决: 修改项目中`android/build.gradle`文件 buildscript { repositories...:3.2.1' } } 总结 到此这篇关于flutter的环境安装配置问题及解决方法的文章就介绍到这了,更多相关flutter环境安装配置内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

70420

《Android群英传 神兵利器》读书笔记

《Android群英传 神兵利器》 - Android开发的工具使用 这是一本Android开发的工具书,里面的提到的工具基本上每个Android开发者必备的技能,买这本书的起因看到有介绍Gradle...... } } 可选配置 CompileOptions : 配置编译的选项 JDK // 使用lint检查代码时错误的话停止,加上这个之后就会继续,但是一般不启动lint,因为启动后会编译很慢...proguard-rules.pro' signingConfig signingConfigs.release } } 动态设置参数 使用key/value的方式,引入签名的配置,不是直接写入...Lint 用于检测各项目中(包含库)中的一些错误问题,比如资源未用或过时的api等。 在AS命令行使用gradle lint。...(如果gradle版本更新则要更改配置) // 使用lint检查代码时错误的话停止,加上这个之后就会继续,但是一般不启动lint,因为启动后会编译很慢 lintOptions{ abortOnError

56010

使用findbugs静态代码分析工具检查Android Java代码

它可以检查Java类或者JAR文件,运行Java字节码不是源码,检查原理:将字节码与一组缺陷模式进行对比来发现可能存在的问题,这些问题包括空指针引用、无限递归循环、死锁等。...检查的bug类型包括: Bad practice 坏的实践:常见代码错误,序列化错误,用于静态代码检查时进行缺陷模式匹配; Correctness 可能导致错误的代码,如空指针引用等; 国际化相关问题:...如错误的字符串转换; 可能受到的恶意攻击,如访问权限修饰符的定义等; 多线程的正确性:如多线程编程时常见的同步,线程调度问题; 运行时性能问题:如由变量定义,方法调用导致的代码低效问题。.../bin 目录下 -textui 说明通过 无界面的方式运行 -exclude 和紧随其后的要排除的检查的描述文件 myApp.jar 要检查的jar 文件。...提供了插件支持 findbugs 引入插件 apply plugin: 'findbugs' 写一个 task task findbugs(type: FindBugs, dependsOn: "assembleDebug

2.1K00

APK重命名gradle插件

Android打包流程的结果一个apk文件,apk的命名默认使用的(module-name)+(build-varints)+(build-type).apk,是不是经常能见到app-debug.apk...,这是因为使用AS新建一个项目时,默认module名app,然后直接使用as的run工具,其实执行的assembleDebug命令再加安装。...本文将介绍一个如何给APK重新命名的插件,指定名称,不再局限于module名的限制。本文使用开发Gradle插件并上传至本地maven库中的生成插件模板进行开发。...这边用的appname+versionname+versioncode.apk的命名规则,这里可以根据自己的需求进行修改,或者将其放到扩展参数里,留给用户在build.gradle中设置。...中的group、artifactId和version; 执行publistToMavenLocal任务,将插件提交至本地maven库 应用插件 创建一个app项目,在其build.gradle中加入如下代码

98730

Jetpack Compose 使用前后对比

2020 年,我开始了缓慢迁移 Tivi UI 的任务,目标使其转为由 Jetpack Compose 编写。大约 12 个月之后,任务完成!...为了让您对架构有一个直观印象,下面应用的模块图: △ Tivi 的模块图,使用 Jake Wharton 所提供的,十分方便的 Gradle 任务 生成 由于导航图使用 深度链接 URI 实现,大多数...: 我们使用了 APK Analyzer 报告的 "APK file size" (不是下载时的大小)。...代码行数 我知道在比较软件项目时,计算源代码行数不是特别有用的统计方式;但这种方式能够提供一个视角,帮助我们了解事物如何变化的。 为了进行测试,我使用了 cloc 工具。.../gradlew assembleDebug。 为了执行测试,我循环运行了下列命令五遍: .

1K30

Android性能- RocketX

,由于讲起来篇幅太长,有兴趣可查阅开源库代码 4.5、hook 编译流程,完成后置换 loacal maven 中被修改的 aar 点击三角形 run,执行的命令 app:assembleDebug..., 需要在 assembleDebug 后面补一个 uploadLocalMavenTask, 通过 finalizedBy 把我们的 task 运行起来去同步修改后的 aar : val localMavenTask...插件一个 AS 插件: 五、一天一个小惊喜( bug 较多) 5.1、发现点击 run 按钮 ,执行的命令 app:assembleDebug ,各个子 module 在 output 并没有打包出...aar 解决:通过研究 gradle 源码发现打包由 bundle${Flavor}${BuildType}Aar 这个task执行出来,那么只需要将各个模块对应的 task 找到并注入到 app:...assembleDebug 之后运行即可: android.applicationVariants.forEach { getAppAssembleTask(ASSEMBLE

53330

Gradle Plugin for Android Development User Guide 1

本篇文章来自http://tools.android.com/的Gradle Plugin User Guide我想应该是最好的读物了,于是细细地通读了一下,边读边注解,注意不是翻译,因为宝贵的时间有限而且原文并不难懂...[Gradle会监视一个任务的输入和输出,重复运行build结果都没有变化的话Gradle会提示所有的任务都是UP-TO-DATE,这样可以避免不必要的build操作] Java project tasks...[任务jar直接或者间接地依赖其他的任务,例如用来编译Java代码的任务classes; 测试代码由testClasses 任务来编译的,但是你不需要去调用这个task,因为test 任务依赖于testClasses...[从Gradle Plugin 0.11.0 版本开始在build.gradle 文件中使用applicationId 不是 packageName 来指定AndroidManifest文件中的packageName...[第2列当你在build script中使用自定义逻辑去查询第1列元素对应的默认结果,如果结果不是你想要的话,你可以指定另一个结果,但是在build时如果这个结果null的话,build系统就会使用第

80030

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

在这种情况下,仓库代表了这个Project所依赖的资源或者说我们所需要的一些可下载的Libraries都是保存在这个仓库中。JCenter一个知名的Maven仓库。...Assemble任务默认由assembleDebug以及assembleRelease构成,如果有更多的Build Type的话,则会有更多的任务。...installRelease:在已经连接的设备或者模拟器上安装一个特定的版本 所有的install任务都会有相对应的uninstall任务 build任务依赖于check任务不是connectedCheck...如果需要指定默认的任务的话,则需要在顶层的build.gradle中加入默认任务: defaultTasks 'clean', 'assembleDebug' 这样的话,执行gradlew就会默认执行这两个任务...通过gradlew tasks | grep "Default tasks"也可以查看默认的任务

54830
领券