Kotlin在鴻蒙開發(fā)中的實踐
先說一說kotlin
我們知道:
kotlin目前是安卓首選的編程語言。
安卓逐漸拋棄java,擁抱kotlin這是大的趨勢。
kotlin的最大優(yōu)點就是與java的互操作性。
kotlin編譯的產物和java一樣是bytecode(不抬杠,本文只說面向jvm的kotlin)。
kotlin是一門現(xiàn)代高級語言。
java也是高級語言,但開發(fā)效率很低。
kotlin作為一門現(xiàn)代的語言,語法更簡潔,而且具有很多高級特性,比如:Null Safe、Data Class、擴展、操作符重載、lambda表達式、閉包等
第一次嘗試
我使用的鴻蒙ide是DevEco Studio 3.0.0.800。要使用kotlin,肯定要把相應的gradle插件、ide插件等配置上。
gradle插件(作用:編譯.kt文件)
project的gradle.build中配置
- buildscript {
- dependencies {
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
- }
- }
entry的gradle.build中配置
- apply plugin: 'kotlin'
ide插件(作用:讓ide識別.kt文件、高亮顯示、語法提示等)
DevEco Studio 3.0.0.800是基于IntelliJ IDEA212.5457.46,所以我們找到相應的版本并下載https://plugins.jetbrains.com/plugin/6954-kotlin/versions/stable/150173
把下載的zip包直接拖拽到DevEco界面上就會自動安裝。

建一個kotlin的Data Class, User
- data class User(val name: String, val age: Int)
在MainAbilitySlice中使用User
- public class MainAbilitySlice extends AbilitySlice {
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- super.setUIContent(ResourceTable.Layout_ability_main);
- User andy = new User("andy", 28);//使用Data Class ,就像java的類一樣
- Text text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
- text.setText(andy.getName());
- }
- }
結果:
能夠識別.kt文件,并且語法高亮都沒問題,說明ide插件配置成功。
但是,編譯失敗,提示The 'java' plugin has been applied, but it is not compatible with the Hap plugins.。我的理解是,org.jetbrains.kotlin:kotlin-gradle-plugin和com.huawei.ohos:hap沖突。這個問題,已經超出了我的能力范圍。
有沒有別的辦法呢?
第二次嘗試
既然org.jetbrains.kotlin:kotlin-gradle-plugin和com.huawei.ohos:hap沖突,我們再建一個java library的module,把.kt文件放在這個module下,是否可行呢?答案是:可行!
直接看源碼吧----> https://gitee.com/andych008/HMkt
總結
雖然,我們經過嘗試,可以在鴻蒙app開發(fā)中使用kotlin,但是,我還是不建議在實際中大量使用。說不準哪一天,DevEco Studio 中完全不支持kotlin了,那樣之前寫的代碼維護會不太方便。但是,如果有一些平臺不相關的代碼,比如,在android和鴻蒙上都會使用,那么我們完全可以放心使用kotlin來實現(xiàn)。
另外,在華為開發(fā)者大會上(2021-10-22),華為表示,將發(fā)布自研編程語言。我們就暫時忍受一下難用的java吧。華為的自研編程語言,在特性上肯定會和kotlin、swift之類的現(xiàn)代語言一樣?,F(xiàn)在學習使用kotlin對以后一定會有用的!