Kotlin备忘录—命令行编译

Android日历备忘录开发实战:Kotlin+MVVM+Room完整项目拆解 在移动应用开发中,本地数据持久化与列表渲染是最基础也最核心的能力。如何将复杂的业务逻辑与界面状态解耦,直接决定了项目的可维护性与扩展性。MVVM架构通过ViewModel层隔离UI与数据源,配合Room数据库实现类型安全的SQL操作,而RecyclerView则成为构建动态列表与网格布局的标准方案。本文从架构设计、数据库建表、日历网格算法到Gradle环境配置,系统拆解一个日历备忘录项目的完整实现路径,帮助开发者理解状态驱动UI、Flow响应式查询以及自定义控件的实战技巧,最终沉淀出一套可复用的Androi 阅读详情

接着上回说


首先大家得先知道一个事,就是Kotlin分两种文件,一种是 .kt ,一种是 .kts ,这俩文件的区别如下表

文件类型编译产物生成的类名
.kt.jar / .classXxxxxKT
.kts没有没有

也就是说,.kt 相当于一个.cpp那种,需要编译的,而 .kts ,相当于.py,直接就可以执行的脚本
⚠️:生成的类名那里比如文件名是abc.kt,那么生成的类名就是AbcKT(也就是首字母和KT要大写,不要搞错!)


然后就可以搞代码编译了
先创建一个 .kt 文件,比如test.tk

# test.tk
fun main(){
    println("Hello World")
}

进入命令行,开始编译,有两种命令都贴出来

# 生成包含 Kotlin runtime的可执行 JAR(可独立运行)
kotlinc test.kt -include-runtime -d test.jar

# 只编译,不包含runtime(体积小,但运行时要保证 classpath 上有 Kotlin runtime)
kotlinc test.kt -d test.jar

编译成功后,运行也有两个
⚠️:注意:和上面那俩是一一对应的

# 含runtime
java -jar hello.jar

# 不含runtime(Ps HelloKt 是编译器对 hello.kt 生成的默认类名)
kotlin -classpath hello.jar HelloKt

那。。。
如果文件名太长怎么办,总不能AjdhdhhshusjajjsjsjhsjsjzjhsuisjsjwiiwiansjsjKT吧,输入就得累s
∴你可以在文件指定一个类

// a.kt
@file:JvmName("MyApp")
fun main() {
    println("hello")
}

编译还是正常的,只不过执行时就是这样了

kotlin --classpath a.jar MyApp
仅局限于不包含Runtime的编译

那么,如果是 .kts 文件呢?
首先先新建 .kts 文件,输入以下内容:

# hi.kts
fun main(){
    println("Hi there")
}

回到命令行输入以下两个命令任何一个都可以直接执行

kotlin hi.kts

kotlinc -script hi.kts

现在,你已经会基础编译了,那有没有更多的?
有的有的,包有的~


kotlinc 编译参数大全

参数说明
-version显示编译器版本号
-help / -h显示编译所有选项
-nowarn不输出任何警告
-Werror编译时,有警告就当错误
-verbose编译时,输出详细日志
-script执行Kotlin脚本(.kts)文件
-script-templates 类指定脚本定义模板类
-kotlin-home “路径”自定义Kotlin编译器的home(用于发现runtime库)
-language-version “版本”按指定的Kotlin版本提供源码兼容性
-api-version 版本只允许使用指定版本捆绑库的声明
-progressive使用渐进式编译模式
-P plugin: id :name=值向编译器插件传参
-opt-in 注解启动需要opt-in的API
@文件从文件读取编译参数与源文件路径
-classpath / -cp 路径类文件搜索路径,多路径用 :(Linux/macOS)或 ; (Windows)分隔
-d 路径输出目录或 JAR 文件路径
-include-runtime把 Kotlin 运行时打进 JAR,使其可独立运行
-jdk-home 路径使用自定义 JDK 目录(默认取 JAVA_HOME )
-jvm-target 版本目标 JVM 字节码版本(1.8/9/10/…/26,默认 1.8)
-Xjdk-release=版本指定目标 JDK 版本并限制 API,会自动设 -jvm-target
-java-parameters为 Java 1.8 方法参数反射生成元数据
-module-name 名称设置生成的 .kotlin_module 文件名
-no-jdk不自动把 Java 运行时加入 classpath
-no-stdlib不自动加入 kotlin-stdlib.jar 与 kotlin-reflect.jar
-no-reflect不自动加入 kotlin-reflect.jar
-expression / -e 代码把给定字符串当作 Kotlin 脚本求值

编译实例:

# 编译单文件为可执行 JAR
kotlinc hello.kt -include-runtime -d hello.jar

# 编译到目录(生成 class 文件)
kotlinc hello.kt -d out/

# 编译多文件
kotlinc File1.kt File2.kt -d app.jar

# 指定依赖
kotlinc -cp lib/mylib.jar hello.kt -d hello.jar

# 指定 JVM 目标版本
kotlinc -jvm-target 17 hello.kt -d hello.jar

# 抑制警告 / 警告当错误
kotlinc -nowarn hello.kt -d hello.jar
kotlinc -Werror hello.kt -d hello.jar

# 从参数文件读取选项
kotlinc @options/compiler.options hello.kt

特别的,compiler.options文件示例

-include-runtime
-d
hello.jar
hello.kt

附加用法:

文件 classes.list

hello.kt

那么编译命令就可以简化为

kotlinc @compiler.options @classes.list

嗯嗯,命令行编译就到这里啦~

Android备忘录实战:Room、RecyclerView与增删改查 在移动端开发中,本地数据持久化与列表展示是绕不开的基础能力。SQLite 提供结构化存储,Room 在其上封装实体、DAO 与迁移机制,让增删改查在编译期获得校验,并通过 Flow/LiveData 把数据变化自动推送给界面。RecyclerView 则以 ViewHolder 复用和 DiffUtil 差量刷新解决长列表性能与状态同步问题。把这些能力落到一个 Android 备忘录应用里,会同时覆盖 Android Studio 环境配置、Kotlin 协程、页面跳转、数据库版本升级、主线程与生命周期等工 阅读详情

相关推荐

《Kotlin核心编程》下篇

设计模式、函数式编程、异步和并发。

云瀚的自习室 1859

Kotlin备忘录—简介和配置大全

Kotlin 是一门现代、简洁且安全的编程语言,由 JetBrains(做 IntelliJ IDEA 那家公司)设计开发。跟 Java 是“亲兄弟”Kotlin 能直接调用所有的 Java 代码,也能被 Java 调用。这意味着你可以用 Kotlin 写 Android 或后端程序,现有的 Java 代码库完全不用改。写得更少,做得更多同样的业务逻辑,Kotlin 的代码量通常只有 Java 的一半甚至更少。比如定义变量不用写那么多样板代码,类型推断让编译器帮你猜类型。

Tim_Cookerr的博客 240

Android毕设选Java还是Kotlin?从语言特性到答辩话术全攻略

在Android应用开发中,技术选型直接决定了项目推进效率与最终交付质量。Java作为经典的JVM语言,拥有庞大的生态与存量代码;Kotlin则凭借空安全、协程等现代特性,大幅简化了异步回调逻辑与样板代码,两者间良好的互操作性也使得混合开发成为常态。面对毕业设计这类有严格时间约束的项目,选型不能只看“是否主流”,而应综合评估开发周期、个人熟悉度与功能复杂度。Kotlin在蓝牙通信、网络请求等高频异步场景中价值明显,协程能将回调转为顺序代码,显著提升可读性;同时,Java在系统源码分析、PC端工具开发等方向依

weixin_31960565的博客 227

Android备忘录开发实战:Kotlin+Room+RecyclerView

在移动应用开发中,本地数据持久化与高效列表展示是两大基础能力。数据持久化确保应用关闭后数据不丢失,通常借助数据库实现;列表展示则通过视图复用机制优化滚动性能。Room作为SQLite的ORM封装,提供编译期SQL检查与协程支持,让数据操作更安全简洁;RecyclerView配合ListAdapter和DiffUtil,能自动计算差异并刷新局部视图,大幅提升列表流畅度。这些技术广泛应用于备忘录、笔记、待办等场景,是Android开发者必须掌握的技能。一个完整的Android备忘录项目,采用Kotlin、Roo

weixin_34320724的博客 493

9、深入了解Kotlin行为设计模式

本文深入探讨了Kotlin中的常见行为设计模式,包括策略模式、迭代器模式、状态模式、命令模式等,并通过实际示例展示了它们在游戏开发等场景中的应用。每种模式的实现方式和适用场景都进行了详细说明,帮助开发者提升代码的灵活性和可维护性。

cake8的博客 105

移动开发期末大作业:备忘录App高分实现与文档导入指南

数据持久化是移动应用开发的核心技术之一,通过本地数据库实现数据的增删改查与持久存储。其原理基于SQLite等嵌入式数据库,结合ORM框架简化操作,技术价值在于保障应用离线可用与数据一致性。在备忘录、待办清单等场景中应用广泛。针对中职移动应用开发模块a和大作业需求,本文深入讲解备忘录App的开发全流程,涵盖Room数据层搭建、文档导入功能实现及高分文档撰写技巧,助你轻松拿高分。

weixin_28831341的博客 211

Kotlin挂起函数原理

/ 今日科技快讯 /近日,据外媒报道,谷歌首席执行官桑达尔·皮查伊发布的一份内部备忘录显示,谷歌告诉员工,公司将“在今年余下的时间里放缓招聘步伐”。皮查伊表示,公司必须“更具创业精神”,“比阳光明媚的日子里更努力、更专注、更有紧迫感”。/ 作者简介 /本篇文章来自潇风寒月的投稿,文章主要分享了作者对Kotlin挂起函数原理的分析,相信会对大家有所帮助!同...

郭霖 462

多标签学习模型(一):Multi Label Knn

1.什么是多标签分类问题 2.传统的KNN算法 3.为什么传统的KNN算法不能够处理多标签问题 4.ML KNN的推导 5.ML KNN是如何解决多标签问题的 6.总结

weixin_42892235的博客 2605

Android备忘录实战:Room、RecyclerView与Gradle入门

Android 项目开发的核心,不只是学会某个 API,而是把 Activity 生命周期、RecyclerView 列表复用、Room/SQLite 数据持久化、协程异步、Gradle 依赖管理串成完整工程链路。理解这些基础概念后,开发者才能处理真实场景中的增删改查、搜索防抖、通知提醒、深色模式与数据迁移。对初学者来说,从需求边界清晰的备忘录 App 切入,比直接做电商或短视频更高效:它覆盖列表、数据库、文件读写和权限,也能暴露主线程 IO、Adapter 状态错乱、release 混淆等工程问题。配置阶

weixin_34335458的博客 348

【杰理AC696X】ADKEY复用指示灯不定时出现灯不亮或按键失灵的问题

测试SDK版本:《ac696n_soundbox_sdk_v1.5.0-20211217》ADKEY复用指示灯的做法多用于蓝牙小音箱,IC引脚越来越少,复用也就用的越多了,不过,在使用前应评估好功能,因为复用的做法,肯定会牺牲点东西的,如果体验感啥的。 比如这个图,(V-)按键按下时,LED是会一直导通发光的,按不同阻值的按键还有亮度不一致的问题,这样的问题有的客户是不接受的,这就要另寻他法了。某天调好案子,放在一边测试时,发现指示灯不亮了,按键也不起作用,想起之前AC692系列也有类似的问题,很快就定位到

xx842678的博客 1654

Python+OpenCV实战:5分钟搞定机械臂手眼标定(眼在手上模式)

本文详细介绍了使用Python和OpenCV在5分钟内完成机械臂手眼标定(眼在手上模式)的实战教程。通过解析相机坐标系与机械臂基坐标系的转换关系,提供从数据采集到标定矩阵计算的全流程代码实现,帮助开发者快速解决AX=XB问题,提升机械臂视觉引导精度。

weixin_33670786的博客 496

Kotlin入门第一步:从零搭建开发环境并跑通Hello World

在JVM生态持续演进的大背景下,Java开发者正越来越多地转向语法更简洁、空指针安全设计更完善的Kotlin。无论是安卓原生开发还是服务端应用,Kotlin的现代化特性都显著提升了工程效率。而要进入Kotlin世界,首要环节就是搭建可靠的本地开发环境。JDK 17或21的选型、PATH与JAVA_HOME的配置、IntelliJ IDEA的安装,以及kotlinc命令行编译器的使用,构成了一条完整的JVM工具链。理解Kotlin源码编译为字节码并在JVM上运行的基本原理,能帮助初学者快速定位环境问题。本文从

weixin_30984001的博客 226

基于深度学习实现实时视频目标检测

实时视频目标检测是计算机视觉领域的研究热点之一,其应用场景包括智能监控、自动驾驶、机器人视觉等多个领域。深度学习技术的快速发展使得实时视频目标检测变得更加可行和准确。本文提出一种基于深度学习实现的实时视频目标检测系统,使用Python和OpenCV作为开发工具,具有高效、准确和实时的特点。 本系统的主要需求是实现实时视频目标检测功能,可以在不同的应用场景中使用。具体的需求如下:2.1 视频输入本系统需要从摄像头或视频文件中获取实时视频流,并对视频流中的目标进行检测和跟踪。2.2 目标检测本系统需要使用深度学

分享毕业设计的案例和论文 1940

终极Kotlin设计模式避坑指南:10个常见陷阱与解决方案

作为现代Android开发的**首选语言**,Kotlin凭借其简洁语法和强大特性赢得了广泛喜爱。然而在**设计模式**实现过程中,开发者常常会陷入一些典型陷阱。本文基于[Design-Patterns-In-Kotlin](https://link.gitcode.com/i/5bf85b15d0ff28dca9d17b3dd3a01cd7)项目,为您揭示Kotlin设计模式中的常见错误及解决方

gitblog_00423的博客 505

海格通信嵌入式面试题及参考答案

计算电路的最高工作频率如何计算? 计算电路的最高工作频率主要考虑电路中的关键路径延迟。关键路径是指在整个电路中,信号传播延迟最长的路径。电路的最高工作频率的倒数就是时钟周期,而时钟周期必须大于关键路径的延迟时间。 首先要确定电路中各个模块的延迟。比如对于组合逻辑电路,可以通过查看芯片手册获取门电路的延迟参数。以一个简单的与门、或门、非门组成的组合逻辑为例,每个门都有自己的传输延迟,把信号从输入到输出经过的所有门的延迟相加,就得到这部分组合逻辑的延迟。 对于包含寄存器的电路,还需要考虑寄

大模型大数据攻城狮的专栏 1271

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2446

ADK for Kotlin 实战:用 KSP 在 Android/JVM 构建 AI Agent

AI Agent 是一种能感知输入、调用工具并持续推理的智能循环体,其核心原理在于将大模型与本地工具执行、会话状态管理相结合。在 Android 或 JVM 工程中,借助 Kotlin 协程与 KSP 编译期处理,开发者可以高效定义 Agent、注册工具并生成模型可读的 Schema,从而降低胶水代码与网络延迟,提升隐私与离线能力。这一方案尤其适合智能助手、本地数据查询、内部 API 调用等场景。ADK for Kotlin 正是将这套 Agent 编排能力下沉到 Kotlin 生态的官方实践,让 Andr

weixin_29050271的博客 221

Ollama教程——模型:如何将模型高效导入到ollama框架

本教程详细介绍了如何将GGUF、PyTorch和Safetensors格式的模型导入到ollama框架中。通过一系列步骤,从环境准备、模型转换和量化,到最终的模型创建和运行,我们为开发者提供了一个清晰的指南。此外,我们还探讨了如何发布模型到ollama平台,使得模型可以被更广泛地分享和应用。ollama框架提供了一个灵活、高效的解决方案,帮助开发者在各种环境中部署和运行机器学习模型。无论您是想将现有模型快速部署到生产环境,还是希望探索新的模型架构,ollama都能为您提供所需的工具和资源。

walkskyer的博客 1万+

Twitch 自动领掉落实操:TwitchDropsMiner 完整拆解与 3 分钟上手指南

TwitchDropsMiner 是一款开源的 Twitch 自动领掉落工具:不下载任何直播流,只靠拉取流元数据模拟观看,就能完成挖矿、自动切换频道并领取奖励,全程后台托盘运行。 过去领 Twitch 掉落是这样的:活动页看一眼还剩多少分钟,浏览器挂着直播,主播一下播就得手动换个频道,奖励到了还得盯紧点"领取"。一个几小时的活动,基本等于把一下午搭进去。现在这套流程被压缩成一句话——登录后把想挖

gitblog_00202的博客 249

EMC基础知识总结

电磁干扰(Electromagnetic Interference),简称EMI,有和两种。传导干扰主要是电子设备产生的干扰信号通过导电介质或公共电源线互相产生干扰;辐射干扰是指电子设备产生的干扰信号通过空间耦合把干扰信号传给另一个电网络或电子设备。

学海无涯的专栏 1365

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【先收藏再看系列】Android开发核心知识点笔记,kotlin编译器安卓版

引用类型 动态代理 元注解 Android 知识点汇总 Activity 生命周期 启动模式 启动过程 Fragment 特点 生命周期 与Activity通信 Service 启动过程 绑定过程 生命周期 启用前台服务 BroadcastReceiver 注册过程 ContentProvider 基本使用 数据存储 View MeasureSpec MotionEvent VelocityTrack..

m0_66264798的博客 223

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Kotlin 协程的模型

当协程遇到耗时操作(如 delay 或网络请求)时,它会挂起(暂停执行并保存状态),同时释放底层的操作系统线程去处理其他任务。这不仅仅是一个编程技巧,而是一套完整的设计哲学,它规定了协程如何启动、如何调度、如何管理生命周期以及如何传递异常。异常向上传播:如果一个子协程抛出未捕获的异常,这个异常会沿着树向 上传递给父协程,导致父协程及其所有兄弟协程都被取消。轻量级:一个线程的栈内存通常需要 1MB,而一个协程仅需约 1KB。父管子:当你启动一个协程(子)时,它会自动成为当前作用域(父)的孩子。

bleakisle的博客 232

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android架构组件实战:Room+ViewModel+LiveData开发备忘录应用

现代Android开发中,架构组件是实现高效数据持久化和UI联动的核心技术。Room作为ORM库替代原生SQLite操作,通过编译时SQL验证确保类型安全;ViewModel保存UI相关数据,解决配置变更导致的状态丢失问题;LiveData作为可感知生命周期的数据持有者,天然支持响应式编程。这些组件协同工作形成单向数据流架构,配合DataBinding实现数据与视图的自动同步,大幅减少模板代码。在备忘录等数据驱动型应用中,数据库变更可自动触发UI更新,同时避免内存泄漏风险。本文通过Java实现完整案例,演示

weixin_34341117的博客 377

Grok Bot安卓开放预注册,用Kotlin实现AI对话客户端

AI对话助手正从网页工具演变为移动端常驻应用,这种形态迁移对开发者意味着新的技术挑战。理解流式对话在弱网下的稳定性、会话本地缓存与断线恢复机制,是构建安卓AI Bot应用的基础。基于SSE协议的大模型接口接入、Kotlin协程与StateFlow驱动的消息渲染,构成了此类应用的典型技术架构。从预注册机制看产品验证逻辑,用极简代码实现完整的对话链路,可以帮助开发者快速掌握移动端接入大模型API的核心方法。无论你的目标是参与Grok Bot预注册,还是自主开发一款AI闲聊助手,理解这套工程范式都能让你更从容地应

weixin_34405557的博客 400

Kotlin 语言下设计模式的不同实现

一、创建型模式 1.1 工厂方法模式 工厂方法把创建对象的过程抽象为接口,由工厂的子类决定对象的创建,Kotlin 下的实现与 Java 一样。 interface Product { val name: String } class ProductA(override val name: Stri...

weixin_34210740的博客 129
上一篇: Kotlin备忘录—简介和配置大全
Pilot-Hao
博客等级 码龄5年 5粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pilot-Hao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值