暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

尝试用Kotlin开发鸿蒙App!

鸿蒙技术社区 2022-01-04
1178

先说一说 kotlin,我们知道 kotlin 目前是安卓首选的编程语言。安卓逐渐抛弃 java,拥抱 kotlin 这是大的趋势。


kotlin 的最大优点就是与 java 的互操作性。kotlin 编译的产物和 java 一样是 bytecode(不抬杠,本文只说面向 jvm 的 kotlin)。


kotlin 是一门现代高级语言:

  • java 也是高级语言,但开发效率很低。

  • kotlin 作为一门现代的语言,语法更简洁,而且具有很多高级特性,比如: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 开发中使用 kotlin,但是,我还是不建议在实际中大量使用。


说不准哪一天,DevEco Studio 中完全不支持 kotlin 了,那样之前写的代码维护会不太方便。


但是,如果有一些平台不相关的代码,比如,在 android 和鸿蒙上都会使用,那么我们完全可以放心使用 kotlin 来实现。


另外,在华为开发者大会上(2021-10-22),华为表示,将发布自研编程语言。我们就暂时忍受一下难用的 java 吧。


华为的自研编程语言,在特性上肯定会和 kotlin、swift 之类的现代语言一样。现在学习使用 kotlin 对以后一定会有用的!

👇扫码报名明晚的鸿蒙直播课👇

👇点击关注鸿蒙技术社区👇
了解鸿蒙一手资讯


求分享

求点赞

求在看

文章转载自鸿蒙技术社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论