草庐IT

Kotlin 云端差分缓存技术

本文由字节跳动Buildinfra团队出品。在我们的工程上线Monorepo全源码后,Kotlin编译成了整个编译中最耗时的步骤,全源码过程中大量的BuildCacheMiss导致我们的编译数据落后原来多仓二进制时代很多,且业界没有相关的解决方案。本篇文章我们来具体阐述下BuildInfra团队自研的解决方案-Kotlin云端差分方案的原理和技术实现。一、Monorepo中的噩梦在2022-2023年,我们的头部业务开始慢慢地从原来的多仓二进制模式,迁移到全新Monorepo方案。在多仓二进制时代,由于Maven的加持,大部分时候我们的都不需要直接编译代码,而是复用Maven的『缓存』。在工程

Android开发—入门Kotlin编程语言

一、Kotlin简介为什么Kotlin能代替Java此为Android官方第一支持的开发语言?1)Kotlin的语法更加简洁,对于同样的功能,使用Ktolin开发的代码量可能会比使用Java开发减少50%甚至更多;2)Kotlin语法更加高级,相比于Java比较老旧的语法,Kotlin增加了很多现代高级语言的语法特性,使得开发效率大大提升;3)Kotlin在语言安全性方面更强,几乎杜绝了空指针这个全球奔溃率最高的异常。Kotlin有一个最为重要的特性,那就是它和Java是100%兼容的。Kotlin可以直接调用使用Java编写的代码,也可以无缝使用Java第三方的开源库。二、如何运行Kotli

Android画布Canvas矩阵Matrix放大裁剪Rect区域的Bitmap,Kotlin

Android画布Canvas矩阵Matrix放大裁剪Rect区域的Bitmap,Kotlin  privatefunmydraw(){valoriginBmp=BitmapFactory.decodeResource(resources,R.mipmap.pic).copy(Bitmap.Config.ARGB_8888,true)valnewBmp=Bitmap.createBitmap(originBmp.width,originBmp.height,Bitmap.Config.ARGB_8888)valcanvas=Canvas(newBmp)//把原图绘制在画布Canvas//can

Kotlin扩展函数与属性原理解析

一、扩展函数扩展函数可以方便地给现有类增加属性和方法而不改动类地代码。二、原理funString.addTo(s:String):String{returnthis+s}反编译:@Metadata(mv={1,6,0},k=2,d1={"\u0000\n\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\u001a\u0012\u0010\u0000\u001a\u00020\u0001*\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0001¨\u0006\u0003"},d2={"addTo","","s"

安卓虚拟摄像头LSPosed kotlin

安卓虚拟摄像头基于Xposed的虚拟摄像头请勿用于任何非法用途,所有后果自负!!使用演示演示gif开发环境AndroidSDK34Xposed82xiaomi9MIUI11.0.3xiaomi8MIUI11.0.3酷比魔方50proMIUI14.0.5Lsposedlastest使用方法在Lsposed中勾选自己想要的播放平台在软件中选择自己想要播放的视频打开视频开关建议使用备选播放器,更加稳定注意事项视频播放需要与平台播放的格式相同,基本支持16:9的视频,例如:1920x1080,1280x720,854x480,640x360,426x240,256x144画面黑屏,相机启动失败,因为视

Kotlin 协程库v1.7.1的核心模块(kotlinx-coroutines-core)-- kotlinx.coroutines篇

目录asContextElement:asCoroutineDispatcher:jsasDeferred:asExecutor:jsasPromise:async:jsawait:awaitAll:awaitCancellation:cancelAndJoin:cancelChildren:CancellableContinuation:CancellationException:CloseableCoroutineDispatcher:CompletableDeferred:CompletableJob: completeWith: CompletionHandler:CoroutineD

Android Room的使用详解

AndroidRoom的使用详解一:Room的基本介绍Room是Android架构组件的一部分,Room持久性库在SQLite上提供了一个抽象层,以便在充分利用SQLite的强大功能的同时,能够流畅地访问数据库。具体来说,Room具有以下优势:针对SQL查询的编译时验证。可最大限度减少重复和容易出错的样板代码的方便注解。简化了数据库迁移路径二:Room库由3个主要组件组成:实体:Entity表示数据库中的一个表,必须用@Entity进行注释。每个实体至少包含一个字段,必须定义一个主键。DAO(数据库访问对象):在Room中,您可以使用数据访问对象来访问和管理您的数据。DAO是Room的主要组件

Android kotlin build.gradle.kts配置

1.添加maven仓库1.1.settings配置1.1.1.settings.gradlerepositories{maven{url'https://maven.aliyun.com/repository/public/'}mavenCentral()}1.1.2.settings.gradle.ktsrepositories{maven{setUrl("https://maven.aliyun.com/repository/public/")}mavenCentral()}1.2.gradle配置1.2.1.build.gradleimplementation'com.github.bu

该系统找不到Kotlin中指定的文件

我尝试在同一软件包中从文件中读取,因此当我运行代码时,它会给我错误varbuffer:BufferedReader?=nullvalresult=try{buffer=BufferedReader(FileReader("file.txt"))valchars=CharArray(30)buffer.read(chars,0,40)0}catch(e:IndexOutOfBoundsException){println("Exceptionhandle")1}catch(e:FileNotFoundException){println(e.message)2}finally{buffer?.c

解决Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of ..

问题今天在启动项目时,项目启动不起来,报错:Error:Kotlin:ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadatais1.5.1,expectedversionis1.1.13.如下图所示:分析经过分析,发现是ideadeKotlin版本过低导致,有两种解决方式:    一是将项目中的Kotlin版本降低;    二是升级idea中Kotlin的插件版本我采用的是在idea升级Kotlin插件升级kotlin插件版本1、升级方法1打开kotlin面板Windows系统:File-