开篇,初识 Compose,永久激活 IntelliJ IDEA
- 如果评论区没有及时回复,欢迎来公众号:ByteCode 咨询
- 公众号:ByteCode。致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、算法、译文、系统源码相关的文章
Jetpack Compose 是 Android UI 的现代工具包,简化了 Android 上 UI 的开发。你无需编辑任何 XML 布局,使用声明性函数即可构建一个简单的 UI 组件,UI 构建工作将由 Compose 编译器完成。通过更少的代码、强大的工具和直观的 Kotlin api,加速 Android 上 UI 的开发——来自官网。
Compose 是用 Kotlin 编写的 UI 工具包,JetBrains 基于 Google 提供的 Compose 开发了 Compose for Desktop 简化了桌面应用程序 UI 的开发,因此 Android 和 桌面应用程序之间大部分 UI 代码是共享的。也就是说在 Android 上使用的部分 UI 组件,同样也适用于桌面应用程序 UI 开发,降低了学习成本,在后文中会有详细的演示案例。
在 Compose for Desktop 之前也提供了 JavaFX 、Java Swing 等等,都是为 Java 设计的 UI 工具包。
之前我用 JavaFX 开发过 Win 和 Mac 桌面应用程序,最近我也打算用 Compose for Desktop 重写之前开发的桌面应用程序,后面会出一系列文章。
如何将程序打包成可安装的桌面应用程序,提供给使用者在 Win、Mac 上进行安装,因为篇幅限制,会在后续的文章中介绍。
通过这篇文章你将学习到以下内容:
- 使用破解补丁无限制的使用 IntelliJ IDEA
- 破解补丁源码分析
- Compose for Desktop or Android 应用程序所需的环境配置
- 如何配置多个不同版本的 JDK
- Compose for Desktop or Android 示例
环境
使用 Compose for Desktop 开发桌面应用程序,需要如下工具:
- IntelliJ.IDEA-2020.3 以上
- JDK 11 以上
- Kotlin 1.4.2 以上
如果你的电脑上安装的是低版本的 JDK,我不建议你贸然升级到最新版本,因为你之前很多项目都是基于当前 JDK 版本进行开发的,而且有一些软件只在低版本的 JDK 上才能运行,例如 JD-GUI,所以可以在电脑上安装多个 JDK,例如开发 Compose for Desktop 使用 JDK 11,开发 Android 项目使用 JDK 8。
IntelliJ IDEA 开发工具是收费的,而且价格相对而言挺贵的,如果资金允许的前提下,可以前去购买,在本文中也会提供破解补丁,永久激活 IntelliJ IDEA。
我已经将 JDK 11 、IntelliJ.IDEA-(2020.3 ~ 2021.1) 以及 IntelliJ.IDEA 破解补丁已经上传到网盘上,可以 「关注下方公众号」或者「搜索关注公众号:ByteCode」,回复关键词:compose,即可获取所有软件。
如何配置多个 JDK
这一小节中将会介绍如何在 MAC 上安装多个 JDK(PS: win 配置方式网上有很多教程,可自行搜索):
- 首先从 Oracle 官网下载并安装 JDK 11 也可以在公众号内,回复关键词:compose,即可获取
我们自己安装的 JDK 默认存放在 /Library/Java/JavaVirtualMachines/
目录下。
- 在命令行中输入
vi ~/.bash_profile
打开bash_profile
文件 - 在
bash_profile
文件中配置不同版本 JDK 的路径
export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home |
- 在
bash_profile
文件中添加下面命令,用于切换不同 JDK 版本
alias jdk8='export JAVA_HOME=$JAVA_8_HOME' |
- 验证是否配置成功
使用别名 alias jdk8
切换到 JDK 8 ,然后输入 java -version
获取当前 JDK 的版本。
localhost:~ $ jdk8 |
切换到其他 JDK 版本同样如此。
高版本的 JDK 造成很多软件无法正常运行
如果我们安装了高版本的 JDK ,即使电脑上有低版本的 JDK,还是会造成很多软件无法正常运行,例如 JD-GUI,所以我们需要修改一下系统默认的 JDK,查看 JD-GUI 执行脚本可知,在 Mac OS 上都是通过下面的命令来获取系统默认的版本。
/usr/libexec/java_home |
系统默认的排序是根据 JDK 的版本从高到低进行排序的,所以通过上面的命令获取到的是最高版本的 JDK,可以通过下面的命令查看 JDK 的排序。
/usr/libexec/java_home -V |
执行结果如下所示:
Matching Java Virtual Machines (2): |
默认的话使用第一条作为系统默认的 JDK,如果我们想设置 JDK 8 作为默认系统的 JDK,可以修改 Info.plist 文件 JVMVersion
的版本号来调整它的顺序,将 JDK 8 放在第一条,将 JDK 11 和 JDK 16 放在最底下,达到修改默认 JDK 的目的,JDK 11 和 JDK 16 的 Info.plist 文件路径如下所示:
/Library/Java/JavaVirtualMachines/jdk-16.0.1.jdk/Contents/Home/Info.plist |
只需要将 JDK 11 的 Info.plist 文件 JVMVersion
从 11.0.11
修改至 !11.0.11
,JDK 16 的 Info.plist 文件 JVMVersion
从 16.0.1
修改至 !16.0.1
,通过这种方式即可将高版本的 JDK 放在最底下,修改完成之后,执行上述命令 /usr/libexec/java_home -V
查看 JDK 的排序,结果如下所示:
Matching Java Virtual Machines (2): |
最后执行 /usr/libexec/java_home
命令,返回的就是你设置的低版本的 JDK,这样就可以解决高版本的 JDK 造成很多软件无法正常运行的问题。
IntelliJ.IDEA 破解补丁的使用
在这一小节中将会介绍如何使用破解补丁永久激活 IntelliJ IDEA。感谢作者 pengzhile/ide-eval-resetter 提供的插件
- IntelliJ IDEA 破解补丁,仅供个人学习使用, 请勿商用,建议购买正版
- 破解补丁适用于 IntelliJ IDEA 2020 ~ 2021.1 所有的版本,其他版本尚未尝试
- 破解教程适用于 Windows/Mac/Linux 系统
只需要五步即可永久使用 IntelliJ IDEA:
- 首先从 IDEA 官网下载 2021.1 版本并安装,也可以在公众号内,回复关键词:compose,即可获取
- 安装成功之后运行 IDEA 会弹出一个注册框,勾选
Evaluate for free
, 点击Evaluate
, 之后随便创建一个新的项目即可 - 将破解补丁
ide-eval-resetter-2.1.6.zip
拖入 IDEA 界面中, 会弹出如下界面,点击Restart
重启 IDEA 即可(PS:破解补丁放在固定位置,不要移动)
- 重启 IDEA,点击顶部菜单栏
Help
,若列表中出现Eval Reset
选项,则代表安装成功 - 点击顶部菜单栏
Help
->Eval Reset
,弹出如下界面,勾选Auto reset before per restart
,每次重启 IDE 会自动重置所有信息,你无需做额外的事情
验证是否永久激活 IntelliJ IDEA:
- 运行 IDEA,将系统时间修改到 30 天之后
- 点击顶部菜单栏
Help
->Register
查看剩余时间 - 重启 IDEA,再次查看剩余时间,破解补丁会重置试用时间为 30 天
执行完以上步骤就,恭喜你现在可以开始使用 IDEA 开发桌面应用程序了。
破解补丁不仅适用于 IntelliJ IDEA,还适用于 Jetbrains 其他系列产品:AppCode 、 CLion 、 DataGrip 、GoLand 、PhpStorm 、PyCharm 、Rider 、RubyMine 、WebStorm。
以上是关于 Compose for Desktop 所需要的工具配置,Compose for Android 的环境配置非常的简单,从官网下载并安装 Android Studio 2020.3.1 Canary 14 然后在模板列表中选择 Empty Compose Activity ,等待 AS 构建完就可以开始使用了。
破解补丁分析
IntelliJ IDEA 是 Jetbrains 旗下的产品,Jetbrains 的产品会允许你试用 30 天,所以作者 pengzhile 写了一个插件,无限重置 30 天试用期,从而达到永久激活 IDEA 的目的。(PS: 如果 IntelliJ IDEA 版本有更新,千万不要升级)。
首次运行 IntelliJ IDEA 会弹出一个注册框,勾选 Evaluate for free
, 点击 Evaluate
会在 /Users/用户名/Library/Application\ Support/JetBrains/IntelliJIdea2021.1/eval/
目录下生成 idea211.evaluation.key
文件,这个文件记录当前的时间戳,作者会读取当前文件内容,重新写入新的时间戳,重置 30 天试用期,核心源码如下:
src/main/java/io/zhile/research/intellij/ier/ui/form/MainForm.java
Resetter.reset(Resetter.getEvalRecords()); |
- 调用
Resetter.getEvalRecords()
会遍历/Users/用户名/Library/Application\ Support/JetBrains/IntelliJIdea2021.1/
文件夹下面的内容 - 调用
Resetter.reset()
方法,重新写入新的时间戳
接下里我们一起来看一下 Resetter.getEvalRecords()
方法的实现。
src/main/java/io/zhile/research/intellij/ier/common/Resetter.java
protected static File getEvalDir() { |
调用 getEvalRecords()
方法获取 /Users/用户名/Library/Application\ Support/JetBrains/IntelliJIdea2021.1/eval/
文件夹下以 .key
结尾的文件,然后重写里面的时间戳。
src/main/java/io/zhile/research/intellij/ier/common/LicenseFileRecord.java
public void reset() throws Exception { |
Compose for Android or Desktop 示例
在文章开头讲述了,Compose 是由 Kotlin 开发的 UI 工具包,Android 和 桌面应用程序之间大部分 UI 代码是共享的,也就是说在 Android 上使用的部分 UI 组件,同样也适用于桌面应用程序开发。如下图所示。
如上图所示 「创建 Button」核心的代码都是一样的, 如果你之前没有了解过 Compose, 上面的代码可能觉得很陌生,可以先忽略,只需要知道 Android 和 桌面应用程序之间大部分 UI 代码是共享的即可。
参考文章
- https://developer.android.google.cn/jetpack/compose/setup
- https://gitee.com/pengzhile/ide-eval-resetter
全文到这里就结束了,如果有帮助 点个赞 就是对我最大的鼓励
代码不止,文章不停
欢迎关注公众号:ByteCode,持续分享最新的技术
推荐文章:
- 为数不多的人知道的 Kotlin 技巧以及 原理解析(一)
- 为数不多的人知道的 Kotlin 技巧以及 原理解析(二)
- Jetpack 最新成员 AndroidX App Startup 实践以及原理分析
- Jetpack 成员 Paging3 实践以及源码分析(一)
- Jetpack 成员 Paging3 网络实践及原理分析(二)
- Jetpack成员Paging3获取网络分页数据并更新到数据库中(三)
- Jetpack 成员 Hilt 实践(一)启程过坑记
- Jetpack 成员 Hilt 结合 App Startup(二)进阶篇)进阶篇
- Jetpack 新成员 Hilt 与 Dagger 大不同(三)落地篇
- 全方面分析 Hilt 和 Koin 性能
- 神奇宝贝(PokemonGo) 眼前一亮的 Jetpack + MVVM 极简实战
- Kotlin Sealed 是什么?为什么 Google 都用
- Kotlin StateFlow 搜索功能的实践 DB + NetWork
- 再见吧 buildSrc, 拥抱 Composing builds 提升 Android 编译速度
- [Google] 再见 SharedPreferences 拥抱 Jetpack DataStore
- Kotlin 插件的落幕,ViewBinding 的崛起
- 竟然如此简单,DataBinding 和 ViewBinding
- 图解多平台 AndroidStudio 技巧(三)
- Android 12 行为变更,对应用产生的影响
- 本文作者:hi-dhl
- 本文标题:开篇,初识 Compose,永久激活 IntelliJ IDEA
- 本文链接:https://hi-dhl.com/2021/05/09/jetpack/13-compose/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 hi-dhl