Kotlin在鴻蒙開發(fā)中的實(shí)踐
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
先說一說kotlin
我們知道:
kotlin目前是安卓首選的編程語言。
安卓逐漸拋棄java,擁抱kotlin這是大的趨勢(shì)。
kotlin的最大優(yōu)點(diǎn)就是與java的互操作性。
kotlin編譯的產(chǎn)物和java一樣是bytecode(不抬杠,本文只說面向jvm的kotlin)。
kotlin是一門現(xiàn)代高級(jí)語言。
java也是高級(jí)語言,但開發(fā)效率很低。
kotlin作為一門現(xiàn)代的語言,語法更簡(jiǎn)潔,而且具有很多高級(jí)特性,比如:Null Safe、Data Class、擴(kuò)展、操作符重載、lambda表達(dá)式、閉包等
第一次嘗試
我使用的鴻蒙ide是DevEco Studio 3.0.0.800。要使用kotlin,肯定要把相應(yīng)的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識(shí)別.kt文件、高亮顯示、語法提示等)
DevEco Studio 3.0.0.800是基于IntelliJ IDEA212.5457.46,所以我們找到相應(yīng)的版本并下載https://plugins.jetbrains.com/plugin/6954-kotlin/versions/stable/150173
把下載的zip包直接拖拽到DevEco界面上就會(huì)自動(dòng)安裝。

建一個(gè)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());
- }
- }
結(jié)果:
能夠識(shí)別.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沖突。這個(gè)問題,已經(jīng)超出了我的能力范圍。
有沒有別的辦法呢?
第二次嘗試
既然org.jetbrains.kotlin:kotlin-gradle-plugin和com.huawei.ohos:hap沖突,我們?cè)俳ㄒ粋€(gè)java library的module,把.kt文件放在這個(gè)module下,是否可行呢?答案是:可行!
直接看源碼吧----> https://gitee.com/andych008/HMkt
總結(jié)
雖然,我們經(jīng)過嘗試,可以在鴻蒙app開發(fā)中使用kotlin,但是,我還是不建議在實(shí)際中大量使用。說不準(zhǔn)哪一天,DevEco Studio 中完全不支持kotlin了,那樣之前寫的代碼維護(hù)會(huì)不太方便。但是,如果有一些平臺(tái)不相關(guān)的代碼,比如,在android和鴻蒙上都會(huì)使用,那么我們完全可以放心使用kotlin來實(shí)現(xiàn)。
另外,在華為開發(fā)者大會(huì)上(2021-10-22),華為表示,將發(fā)布自研編程語言。我們就暫時(shí)忍受一下難用的java吧。華為的自研編程語言,在特性上肯定會(huì)和kotlin、swift之類的現(xiàn)代語言一樣?,F(xiàn)在學(xué)習(xí)使用kotlin對(duì)以后一定會(huì)有用的!
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)