考虑这样一种场景:我们是一个汽车生产商,我们生产各种品牌的汽车,比如宝马、奔驰、奥迪等等,为了面向对象开发,我们定义一个基类 Car
Gradle在android开发中应用地十分广泛,但相信有很多同学并不很了解gradle 本文主要介绍了使用gradle的一些实用技巧,帮助读者增进对这个熟悉的陌生人的了解 主要包括以下内容
上一篇博客 【Android APT】编译时技术 ( ButterKnife 原理分析 ) 简单介绍了下编译时技术 , 并简单分析了 ButterKnife 的实现原理 ;
您应该确保为您的启动器提供适当的命名空间。即使您使用不同的Maven groupId ,也不要使用 spring-boot 启动模块名称。我们可能会为您
上篇说到 Android 在编译过程中发起 kotlin 编译的流程。今天分享一下关于 Kotlin 编译里面比较重要的相关步骤:kapt。在 kotlin 里,需要使用 apt 的话,需要使用 kapt 插件来替代 annotationProcessor 的声明:
Kotlin Native是一种将Kotlin源码编译成不需要任何VM支持的目标平台二进制数据的技术,编译后的二进制数据可以直接运行在目标平台上,它主要包含一个基于LLVM的后端编译器的和一个Kotlin本地运行时库。设计Kotlin Native的目的是为了支持在非JVM环境下进行编程,如在嵌入式平台和iOS环境下,如此一来,Kotlin就可以运行在非JVM平台环境下。
Android Studio升级到3.0后,有不少的改动和新特性,先贴出官方的迁移说明。
前面我们参考 EventBus 的实现逻辑模仿了一个最简单的 EasyBus。这个其实也是观察者模式的实现,所以整体逻辑理解起来应该是不难的。在 EasyBus 中进行注册的时候是通过反射机制对观察者的信息进行注册,然后解析出监听接口和事件类型( onEventXXXMethod(MessageEvent)方法以及其参数)。可以看出在这个注册的过程中,使用了运行时的反射机制,这在追求性能极致的基础组件中,这是可以优化的点。那么如何优化呢?这就需要用到今天提到的注解以及注解解析器的相关技术了。
近期导入了一个项目,因为种种原因始终是失败,各种引入错误,不是这个就是那个,归根到底还是对gradle相关知识不够了解,今天来整理一下。
本文翻译自官网 :https://gradle.org/whats-new/gradle-5/
之前一直是在java项目中使用Glide加载图片,自从去年Google宣布Kotlin成为Android官方开发语言之后,我也开始使用kotlin开发了项目,自从使用kotlin之后,再也回不到了java的怀抱了.
Gradle是一种功能强大的构建自动化工具,被广泛应用于软件开发领域。本文旨在向读者介绍Gradle的基本结构和语法,以帮助他们更好地理解和利用Gradle,从而提升项目构建和管理的效率。
Anko (https://github.com/Kotlin/anko) 是一个用 Kotlin 写的Android DSL (Domain-Specific Language)。长久以来,Android视图都是用 XML 来完成布局的。这些 XML可重用性比较差。同时在运行的时候,XML 要转换成 Java 表述,这在一定程度上占用了 CPU 和耗费了电量。
在 Android 中 , 使用 Room 数据库访问框架操作数据库 , 运行是报如下错误 ;
ButterKnife 算是一款知名老牌 Android 开发框架了,通过注解绑定视图,避免了 findViewById() 的操作,广受好评!由于它是在编译时对注解进行解析完成相关代码的生成,所以在项目编译时会略耗时,但不会影响运行时的性能。
Gradle 5.0 正式版发布了,官方表示这是史上最快、最安全,最强大的版本,且没有之一。改进的增量编译和增量注释处理构建在已经具有构建缓存和最新检查功能的可靠性能基础之上。依赖对齐和版本锁定提供了可扩展且灵活的依赖管理模型。通过新的性能和依赖关系管理、日志记录和弃用的 API 使用检查,构建扫描得到了显著的改进。静态类型的 Kotlin DSL 可在创建构建逻辑时提供代码完成、重构和其他的 IDE 辅助。
话说,最近尝试了一下写了个注解处理器,也就是我们常见的 apt,在 Kotlin 当中有个插件叫 kapt,说的就是注解处理器。注解处理器能干什么呢?能帮我们生成一些代码,让我们变懒,让我们的代码变优雅(也许吧)。
由代码可见,mHomeWorkId 是一个不能为null的String。然后通过intent.getStringExtra 方法给mHomeWorkId赋值。
Room是Google官方推荐使用的数据库,相比较某些优秀数据库框架来说,不用过于担心某天库会停止维护,且访问数据库非常流畅,并且提供了与常规的ORM框架一样,通过添加编译期注解来进行表和字段的配置,譬如@Database、@Dao、@Entity、@Query、@Insert、@Update、@Detele等的注解,可以使用简单代码实现相比以前SQLite更复杂的代码的效果,这点儿有点儿类似于java世界里的mybatis。总而言之, Room功能强大,速度和稳定性不弱,还简单易用,算得上是一个优秀的数据库。
不得不说 JetBrains 是一家务实的公司,各种IDE让人赞不绝口,用起来也是相当溜。同样的,诞生自 JetBrains 的 Kotlin 也是一门务实的编程语言,Kotlin以工程实用性为导向,充分借鉴了Java, Scala, Groovy, C#, Gosu, JavaScript, Swift等等语言的精华,让我们写起代码来可谓是相当优雅却又不失工程质量与效率。Kotlin Native能把 Kotlin代码直接编译成机器码,也就是站在了跟 C/C++、Go和Rust的同一个层次,于是这个领域又添一位竞争对手。
Gradle Plugin是我们在编译期修改代码的重要武器,也是我们精准化测试的核心组成部分。
gradle的最新版本是6.7,从2009年的第一个版本,到2020年的6.7,已经发展了11年了。gradle是作为android的官方构建工具引入的,除了java,它还能够支持多种语言的构建,所以用途非常广泛。
在前文的讲解中对 EventBus 的实现逻辑有了大概的理解之后,我们知道 Java 解析注解可以在运行时解析也可以在编译期间解析。由于运行时解析是通过反射来获取注解标记的类、方法、属性等对象,它的性能要受到反射的影响。因此在一些基础组件中更常见的做法是使用注解解析器技术,像 Dagger、 butterknife、 ARouter 以及本文所接触的 EventBus等框架库都是使用到了注解解析器的技术。接下来我们来实现一个注解解析器。(本文代码有点多)
在 build.gradle 中 开启 Proguard , 在编译时 , 会自动进行如下一系列优化 :
大家退后,今天我要开始表演一下装逼的艺术。这次我们尝试性的使用谷歌前一阵子公布的ksp(Kotlin Symbol Processing),一款专门拿来给Kotlin项目提升注解生成速度的。
由于 Kotlin 具有丰富的功能,如一等函数和扩展方法等,因此它可以保留和改进 Gradle 构建脚本的最佳部分——包括简明的声明式语法以及轻松制作 DSL 的能力。
如果你从Android Studio内部点击更新的话,会跳转到Android的官网,没有梯子的同学可以去这个网站下载更新:
如果想要注解处理器能够在编译器生成代码,需要做一个配置说明,这里有两种配置方法: 具体参考这篇文章:Java AbstractProcessor实现自定义ButterKnife
@Retention还能指定两种,一种SOURCE级别,只在源码中,不维持至字节码:
Gradle 构建工具 的本质是 Java 应用程序 , 是运行在 Java 虚拟机 上的 ; 在空白的目录中 执行该 Gradle 构建工具 , 可以 生成一系列的构建文件 ;
Gradle 是 Android 构建环节非常重要的一环,但并不是所有Android开发者对Gradle都足够熟悉,因为它在我们平时业务开发中,相对使用频率还是较少的。 小编准备以自定义Gradle插件为入口,带大家一起认识一下Gradle。
由于内容比较多,所以拆分了两部分来讲解。欢迎点赞和关注给作者一些动力感谢感谢。如果有任何的想法和创意都可以直接和我联系讨论。整体内容主要分为六部分来介绍:
Java的框架文章太难写了,因为他引用了太多框架,而没一个框架都有很繁琐的配置,把每个框架都写一遍,就等于写书了;所以本文只能大体上介绍,但大体上介绍,感觉读起来又没有生气,总之非常难写。
大家都知道,JSP在请求的时候,会先转化成Servlet(其实就是个java类),然后生成class文件,再提供服务。 那么生成的java、class文件在哪呢?Eclipse中根本找不到呀! 首先应该了解的是Tomcat在Eclipse的映射关系,参考前一篇博文所述:Tomcat的服务器目录配置 可以了解到,Tomcat在Eclipse中提供了三种位置配置选项: 1 Use workspace metadata 2 Use Tomcat installation 3 Use c
Kotlin Multiplatform Mobile ( KMM ) 是一个 SDK,旨在简化跨平台移动应用程序的创建。在 KMM 的帮助下,您可以在 iOS 和 Android 应用程序之间共享通用代码,并仅在必要时编写特定于平台的代码。
前不久我录制了一套讲解注解处理器的视频,当中用到了一个叫 “Tieguanyin” 的框架的简化版,这篇文章主要介绍下完整版。
和尚因为种种原因需要升级 Android Gradle,Gradle > 3.0 时默认支持 Java 8;每次大版本升级都会涉及很多内容,和尚尽可能慎重,但还是简单记录一下升级过程中遇到的问题;
我们如果是进行SDK或者API的提供者。那么当编写过多的代码之后。需要提供规范的API帮助文档。
嗨,我是写博客满脑子骚东西的哈利迪~今天和大伙聊聊Android中的xml和view的那些事,首先会分析一下xml布局解析inflate的流程,然后会介绍一些业内的方案,如:
经过多次拉取Spring源码编译失败经历,一下抓取配置编译过程各个软件版本可能有影响因此先做以记录(时间不同也会导致版本出入要注意) Idea:2020.1.1(参考文献博主2019.3.3版本也可) 插件:maven(3.6.3)(未用到)Gradle (4.10.3) Kotlin(idea内装) JDK:原机安装1.8版本 需要11版本(后续会说明JDK1.8问题) 注:流程可能较长,源码拉取编译不易,耐心阅读
build.gradle是gradle中非常重要的一个文件,因为它描述了gradle中可以运行的任务,今天本文将会带大家体验一下如何创建一个build.gradle文件和如何编写其中的内容。
在上一篇博客 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ① ( 组件化简介 | 创建组件化应用 | 依赖库模块 / 应用模块 切换设置 ) 最后提到了 在 Gradle 构建脚本中 , 需要实现 依赖库模块 / 应用模块 切换设置 , 主要涉及如下两个方面 :
上面的Module build.gralde的配置必须写在使用注解所在的 Module 中!
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。 面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。 Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。来源:(百度百科)
对于 Room 框架 来说 , 使用 Java 语言 开发和使用 Kotlin 语言 开发 , 需要在 build.gradle 构建脚本 中进行不同的配置 , 主要有以下两个配置不同 :
领取专属 10元无门槛券
手把手带您无忧上云