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

自定义 WorkManager —— 基础概念

这意味着,如果您想自定义它的配置,就必须先禁用默认配置。 如果您尝试通过 initialize() 方法再次初始化 WorkManager,该方法就会抛出一个异常 (于 1.0.0 版本中加入)。...为了避免异常,您需要禁用默认的初始化。您可以稍后在您的 Application 的 onCreate 方法中配置和初始化您的 WorkManager。...因为在这种情况下,您会想要避免在同一个地方使用相同的 JobId 范围。版本 2.4.0 中也加入了一个新的 Lint 规则 来覆盖这种情况。...现在让我们回顾一下我们已经做了的事情,然后深入了解其中每一步的详细信息: 禁用默认初始化 实现一个自定义 WorkerFactory 创建自定义配置 初始化 WorkManager 禁用默认初始化 如 ...WorkManager 的文档 中描述,禁用操作要在您的 AndroidManifest.xml 文件中完成。

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

    一些关于加速Gradle构建的个人经验

    目前绝大多数的Android项目都是基于Grale了,因为Gradle确实给我们带来了很多便利,然而,在使用了Gradle后,最大的不满就是编译起来太慢了。...注意,如果是某个依赖在本地不存在,则会编译出错,解决方法,只需要暂时关闭offline,等依赖下载到本地后,在后续的执行中加入offline即可。...反反复复的分析,知道完成配置的次数。 在Android中,我们可以配置debug禁用Proguard即可。...解决方法是,我们可以选择性的应用crashlytics插件,具体可以参考Error-prone,Google出品的Java和Android Bug分析利器中关于选择开启error-prone的部分。...备注:就个人而言,应用上面的方法,日常的debug版本build时间由原来的一分钟左右降到了30秒左右。我的机器为15.4MBP,i7,8G,SSD.

    1.8K10

    在 Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)

    问题剖析 - 两种不同的构建方式 在一个典型的场景中,在模块化应用程序并使用新的 Gradle 插件后,您的项目结构将如下所示: ? 一个典型的多功能安装 + 即时应用程序项目。...为你所有的即时应用功能启用 ProGuard(混淆) 在可安装的应用程序版本构建过程中,ProGuard(混淆)只运行一次:在使用 com.android.application 插件的模块中。...窍门是使用 Android SDK 中提供的工具来近乎自动化的执行这个操作。 首先,准备好一个调试版本(或者没有启用 ProGuard(混淆)的调试版本)。...新功能:禁用非基本模块中的混淆 现在看来,我在我的指南中遗漏了一个重要的(现在很明显就发现了)的点。...更好的方法是在完整的,可安装的应用程序中重新使用 ProGuard(混淆)映射文件,但设置和维护起来很困难。更简单的方法是简单地禁用非基本特征中的混淆。

    2.6K30

    Gradle For Android(9)--自定义构建

    它通过应用程序中的所有代码路径来查找未使用的代码并删除它。ProGuard也会重命名你的类和属性。这个过程会使得内存占用更小,更难逆向。...'), 'proguard-rules.pro' } } } 当你设置了minifyEnabled为true后,proguardRelease任务就会执行,并且在构建过程中调用...我这也就意味着在IDE中第一次启动构建后,后续的构建都会比较快。如果你从命令行执行构建的话,Gradle Daemon则是关闭的,除非在Properties中启用。...你可以把Build Tool版本提升到21.1.1以上,Gradle版本提升到1.0.0版本以上,然后在defaultConfig代码块中添加属性: android { buildToolsRevision...} } 临时禁用可以使Ant工程可以更快的升级到Gradle中。

    69410

    斯坦福与苹果基于Apple Watch检测心率异常,0.5%人群被检出,其中84%患有房颤

    心房颤动(简称房颤)是最常见的持续性心律失常,房颤患病率与冠心病、高血压病和心力衰竭等疾病有密切关系。...最新推出的以内置的心电图为特色的Apple Watch,并不是这项研究的一部分,因为它是在这项研究发布后发布的。...帮助患者和临床医生了解Apple Watch等设备如何在检测心房颤动等疾病中发挥作用。 0.5%人群被检出,其中84%患有房颤 ?...在收到心律不齐通知,并在一周后使用心电图贴片进行随访的受试者中,只有三分之一(34%)的人检测到患有房颤。研究人员称,由于心房颤动是一种间歇性疾病,因此在随后的心电图补片监测中未检测到它并不奇怪。...斯坦福医学院院长Lloyd Minor医学博士说,“房颤只是一个开始,这项研究为进一步研究可穿戴技术以及如何在疾病发作前预防疾病打开了大门——这是精准医疗的关键目标。”

    3.8K10

    Flink1.12新特性之Flink SQL时态表小总结

    Flink 1.12正式发布后,带来了很多新的特性,本文重点学习和总结一下Flink 1.11和 Flink1.12中时态表的使用和自己的一个小总结,文章如有问题,请大家留言交流讨论,我会及时改正。...本文主要将在Flink1.12中新的时态表的一些新的概念和注意事项,如何在Join中使用会在之后另一个篇文章中具体讨论。...而在Flink1.12中,完善了1.11中的不足,在DDL直接支持事件时间和处理时间两种语义,也引出了版本表(1.12),版本视图(1.12),普通表(1.12),时态表函数(1.11)等概念。...Flink1.12中时态表的类型 时态表可以划分成一系列带版本的表快照集合,表快照中的版本代表了快照中所有记录的有效区间,有效区间的开始时间和结束时间可以通过用户指定,根据时态表是否可以追踪自身的历史版本与否...版本表则是表在不同时间段版本的一个集合,我们可以追踪和并访问它的历史版本。 而在Flink1.12中,对于任何其基础源或格式直接定义变更日志的表,都将隐式定义版本化表。

    1.1K20

    Sentry-CLI 使用详解(2021 Sentry v21.8.x)

    SENTRY_DISABLE_UPDATE_CHECK(update.disable_check): 如果设置为 true,则禁用 sentry-cli 中的自动更新检查。这是在 1.17 中引入的。...对于我们的一些客户端集成,如 Java 和 React Native,这通常是自动完成的。 在属性文件中,您只需使用点符号来设置值。...但是,在某些情况下,您需要手动上传 ProGuard 文件(例如,当您仅发布正在创建的部分构建版本时)。...如果您想向 Sentry 发送混淆崩溃以验证正确的操作,请确保 ProGuard 映射文件在 Project Settings > ProGuard 中列出。...--no-upload 禁用实际上传。这会运行处理的所有步骤,但不会触发上传(这也会自动禁用重新处理。如果您只想验证映射文件并将 ProGuard UUID 写入属性文件,这将非常有用。

    3K30

    ProGuard 在 Android 上的使用姿势

    原始的 DEX 和优化后的机器码都会保留在设备中,所以算一下就知道:代码越少,意味着编译时间越短,存储占用越少。...这些警告的一个原因就是,您的构建路径中没有加入需要依赖的 JARs,如使用了 provided (仅编译时)依赖。而有时候,在 Android 上这些代码的依赖在运行时并不会被真正的调用。...让我们看一个真实的例子。 ? 一个项目依赖 OkHttp 3.8.0 构建时的消息。 OkHttp 库在 3.8.0 版本的类中添加了新的注解(javax.annotation.Nullable)。...ProGuard 和 混淆后的堆栈 我之前提及到,在构建过程中 ProGuard 会在处理类文件时输出映射关系和日志文件。当您需要保留构建产物时,您应当保存好这些文件和 APK 在一起。...您在 Google Play 控制台发布混淆后的生产 APK时,记得为每个版本上传对应的映射文件。

    2.6K40

    Android微信客户端是如何支持R8构建的?

    作者:chrispaul,来自微信客户端团队 背景 在之前的版本,微信Android一直采用Proguard构建Release包,主要原因在于: Proguard优化足够稳定 ApplyMapping也能保证正确性...但Proguard也有明显的不足之处: Kotlin版本的升级与Proguard存在不兼容,导致被迫升级Proguard版本; Proguard版本升级导致编译时间变慢,超过30min; 由于历史原因,...,可以临时通过禁用该优化来解决, Parameters优化的禁用带来了不到1M的包大小损失。...,原因是原始类型类的内存占用、dexid数、运行时构造开销相比enum class要小一些,这里我们沿用了Proguard的禁用方式来规避,带来了100k左右的包大小损失: 「Obfuscated阶段...最后 目前R8已经相对稳定运行在「Android微信的最新版本中」,且问题已基本收敛。同时在「包大小、低端机冷启动性能方面有不错的收益」,欢迎大家留言交流。

    2.4K160

    2019年3月21日 Go生态洞察:在Go 1.12中调试你部署的代码

    2019年3月21日 Go生态洞察:在Go 1.12中调试你部署的代码 摘要 猫头虎博主在此!今天我们将深入探索Go 1.12中的一项关键改进——如何调试优化后的二进制文件。...在Go 1.10中,用户需要完全禁用优化,才能从像Delve这样的交互式工具获得良好的调试体验。但用户不应该为了调试而牺牲性能,尤其是在运行生产服务时。...Delve通常会使用-gcflags "all=-N -l"重建其正在调试的代码,这会禁用内联和大多数优化。...在1.12和最新的Delve版本中,即使在优化后的二进制文件中,你也应该能够检查许多变量。 改进的值检查 在Go 1.10中,调试优化后的二进制文件时,变量值通常完全不可用。...Go 1.11和1.12记录语句边界信息,并在优化和内联中更好地跟踪源代码行号。因此,在Go 1.12中,逐步执行此代码会按照你所期望的顺序在每一行上停止。

    10610

    Kotlin 语言入门宝典 | Android 开发者 FAQ Vol.5

    中增加 7000 个方法和 1M 的大小,如果您使用 Kotlin 替换如 Guava、RxJava 等其他的库,影响可能会小一些。...但是您可以在后期通过 ProGuard 来优化减小包的大小。 ? 随着 Kotlin 的快速崛起,我们注意到越来越多的开发者开始关注这个新兴的语言。...如果您在使用中遇到了问题请参考以下链接中的 “Kotlin 在 Android Studio 的常见问题” 如何在 Android Studio 中使用 Kotlin?...Kotlin 在运行时可能会在您的 debug APK 中增加 7000 个方法和 1M 的大小,如果您使用 Kotlin 替换如 Guava、RxJava 等其他的库,影响可能会小一些。...比如说:在多个 collection 实例中,重复的复制操作会影响 GC 性能,调用一个接受非空类型的方法,会增加一个空检查的方法调用(但是您可以通过设置 -Xno-param-assertions 来禁用编译时运行空指针检查

    2.6K60

    安全测试工具(连载9)

    4.1Dex2jar、Proguard和jd-gui 1. apk文件反编译 首先进入dex2jar目录,把apk文件从手机中取下来(demo4.apk为反编译的apk文件)。...\demo4-dex2jar.jar 然后通过jd-gui工具查看JAVA源代码(jd-gui下载后也放在Dex2jar目录下),如45所示。...使用Proguard工具进行混淆 AndroidSDK工具目录下%SDK_HOME%\tools\自带Proguard工具,但是一般而言版本比较低,建议在网上下载最新版本,放在%SDK_HOME...Eclipse开发,可以在Build Path看见,47显示在Proguard中添加jar文件,48显示在Eclipse的Build Path显示的依赖jar包。...试过上面操作的读者会发现Proguard仅仅对jar文件进行了简单的混淆,比如变量改为a,b,c,d…,而对程序逻辑,算法依旧清晰可见,一般在真正工作开发中希望使用一些专业化的混淆工具,比如360 APP

    65510

    Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡

    Cocos2d-x 游戏开发-打包apk被默认自带了很多不必要的权限导致apk被报毒,如何在Cocos 2d-x中强制去掉不必要的权限-优雅草卓伊凡实战操作去除权限要在 Cocos2d-x 开发的游戏中去掉...在 proguard-rules.pro 文件中添加相应的规则来混淆和去除不必要的权限。...如果没有,创建一个新的文件。添加规则来去掉不需要的权限: ProGuard 本身并不能直接去掉权限,但你可以确保不需要的代码和类不会被打包到 APK 中,从而避免其使用相关权限。...'), 'proguard-rules.pro' } }}重新打包 APK: 保存所有更改后,重新打包你的 APK 文件:sh....一定要确保打包的安卓包在运行安装后没有提示检测到以上不必要权限,视为成功。

    6700

    “码码”再也不用担心我的代码被反编译了!

    由于跨平台的需要,Java字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。...目前最新版本:proguard4.10版本(官方) 测试使用的是:proguard3.8版本(汉化版) 它处理的顺序是:先压缩,然后优化,最后才进行混淆。...对于复杂的混淆来说,图形界面中没有的属性,就要参考proguard提供的使用文件,按照自己想要的要求在.pro文件中配置了。其实proguard的使用关键就是编写这个配置文件。...2、注意:【类库】栏目中默认会自带rt.jar(JAVA基础类库),需要将其修改为和工程相对应的版本。此外应该是jdk1.6中的rt.jar。...最终后得到com.stkj.action.out.jar,可以会反编辑软件打开混淆后的.jar进行查看。如下是打开一个.class文件后看到的效果。其中的某些方法体已经受混淆。

    3K60

    配置Android项目 - 一些重要的事情

    只需输入必要的关键字,如 — Android,Intellij并点击生成按钮。 ? 在模板项目中查看gitignore文件。...通常我在那里放一些自定义的gradle脚本文件,proguard和静态代码分析工具的规则,如pmd,findbugs,lint。 在模板项目中查看 tools文件夹。...这就是为什么最好对发布和调试版本使用不同的proguard规则: rules-proguard.pro rules-proguard-debug.pro ?...用于调试构建的Proguard规则必须具有以下行以强制proguard忽略警告,跳过代码混淆和优化: ? 对于发布版本,设置proguard规则将会更加困难,因为几乎每个库都有自己的特定规则。...我建议你只在调试的时候打开它并且使用detectAll方法来检测所有类型的问题。 ? 这里是当你忘记关闭SQLiteCursor的日志的例子: ? 在模板代码中查看StrictMode。

    66820

    笔记 | Xamarin

    ,这个方法不会,因为这个方法是在 4.4 版本才引入的,所以我们使用的时候需要添加版本的判断 string jsFuncStr = ""; if ((int)Build.VERSION.SdkInt 版本引入的,所以局限性比较大。...默认对 Xamarin.Android 应用程序的调试版本启用 JDWP。 虽然 JDWP 在开发过程中很重要,但它会对已发布的应用程序造成安全问题。...重要 请始终禁用已发布应用程序中的调试状态,因为如果不禁用此状态,则可能(通过 JDWP)获得 Java 进程的完全访问权限并在应用程序的上下文中执行任意代码。...“将程序集捆绑到本机代码”在默认情况下处于禁用状态。 请注意,“捆绑到本机代码”选项执行不意味着程序集会编译到本机代码中。 无法使用 AOT 编译将程序集编译为本机代码。

    24K20
    领券