首页 > 其他分享 >Kotlin基础入门 - 创建、兼容一个属于自己的Kotlin项目

Kotlin基础入门 - 创建、兼容一个属于自己的Kotlin项目

时间:2023-04-26 16:24:47浏览次数:47  
标签:Java 入门 Kotlin 兼容 build kotlin android gradle

这应该是我年前就想记录的一个基础入门,但是因为一直比较忙,当时只是做了一个备忘草稿,正文就拖到了现在,趁着有时间,赶紧来帮助一下新入行的朋友…

关于为何我把这篇Blog叫做 创建、兼容一个属于自己的Kotlin项目? 主要是因为在实际开发中会遇到以下俩种项目场景 > <

  • 从0 - 1 的Kotlin项目,后续混用Java(自带兼容,基本无需处理)
  • Java项目,后续兼容Kt(原始为Java项目,基本无kt;后期加入kt

其实兼容一个原始Java项目让其能顺利的运行,我们仅需创建一个Kotlin项目,然后对比俩者的相关kt配置,就可以查缺补漏了~

      • 创建一个从0 - 1 Java、Kotlin 项目
        • Java项目
        • Kotlin项目
        • Java兼容Kt
      • 兼容中可能遇到的问题
        • java 调用 kotlin 找不到符号
        • 报错 Plugin with id 'kotlin-android' not found.*
        • module使用kotlin报错找不到类

创建一个从0 - 1 Java、Kotlin 项目

在新建项目时,我们的Language 对应选择 Java、Kotlin 即可,新建过后gradle会加载相关依赖配置

在这里插入图片描述

Java项目

我们先把Java项目的配置作为标准,看一下Project、和moudlebuild.gradle配置

build.gradle(app)

在这里插入图片描述

build.gradle(Project)

在这里插入图片描述

Kotlin项目

通过Kotlin项目对比Java项目,主要看一下Project、和moudlebuild.gradle配置(主要注意标红区域)

build.gradle(app)

在这里插入图片描述

build.gradle(Project)

在这里插入图片描述

Java兼容Kt

我在Java项目中使用到了Kt类,提示让我配置信息,这时候我们可以以下操作二选一

  • 直接通过提示让As自行配置
  • 也可以尝试将Kt中的标红部分copy过来试一试

在这里插入图片描述

在Kt类As在右上角会提示configure ,点击之后可以选择配置全部组件或单个组件

在这里插入图片描述

我们来看下添加的配置,把标红的copy进去也行

build.gradle(app)- 图示

在这里插入图片描述

build.gradle(app)- 代码

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    namespace 'com.example.javademo'
    compileSdk 32

    defaultConfig {
        applicationId "com.example.javademo"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation 'androidx.core:core-ktx:+'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

build.gradle(Project)- 图示

在这里插入图片描述

build.gradle(Project)- 代码

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    id 'com.android.application' version '7.3.1' apply false
    id 'com.android.library' version '7.3.1' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.0-Beta' apply false
}

兼容中可能遇到的问题

主要记录我当时在Java项目中首次使用kt遇到的问题

java 调用 kotlin 找不到符号

检查kotlin配置时,发现module下的build.gradle中没有使用kotlin插件

 apply plugin: 'kotlin-android'

报错 Plugin with id ‘kotlin-android’ not found.*

你可以查看下你的项目Gradle文件,加上如图两行代码:

 ext.kotlin_version="1.3.30"
 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

图示

在这里插入图片描述

module使用kotlin报错找不到类

module开发时,如果选择语言为kotlin可能会出现编译时报错,Unresolved reference:xxx.xxx.xxx

其实类本身是存在的,但是由于是kotlin语法写的,所以需要一个转译,否则编译的时候无法识别。

在module的build.gradle下添加下面语句:

 apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-android-extensions'

提示: apply plugin: 'kotlin-android-extensions'早期使用,现在基本已经被废弃了

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

标签:Java,入门,Kotlin,兼容,build,kotlin,android,gradle
From: https://www.cnblogs.com/cps666/p/17356449.html

相关文章

  • Kotlin基础认知 - 为何Kotlin文件有的带.kt后缀,有的不带?
    有一天看到项目中的Kotlin类,有的有.kt后缀,有的没有,针对这个情况我就简单看了下,然后记录一波创建KotlinClass或KotlinFile创建Kotlinclass创建KotlinFile俩者区别展现形式外部展现内部展现延伸扩展、对向转换Class无后缀→File有后缀File有后......
  • Android结构优化 - Java、Kotlin项目结构分包
    随着Android中Java、Kotlin的混编开发场景越来越多,其中大多人都会将java文件和kt文件放在同一个资源文件夹下,在项目越来越大的情况下,我们进行代码查询、项目重构、优化都不太便捷,所以本篇主要记录通过kotlin分包、java分包来区分、整合java类和kotlin类因为目前项目为......
  • Kotlin实战基础 - 设置点击事件、Activity跳转、传值
    基础过度Kotlin基础入门-变量、方法、对象、继承、接口Kotlin实战基础-设置点击事件、Activity跳转、传值Kotlin实战基础-Activity、Fragment传递参数尚未完整,遇缺再补-点击事件Activity跳转Activity跳转+Intent传值点击事件点击事件是基础功......
  • git和github的入门操作
    之前因为工作中用的都是SVN版本控制工具,没接触过git和github,现在开始深入自学Django框架技术后,看到官网推荐使用git,然后这两天网上查阅了很多文章教程,学到入门操作需要学习的点,太多的知识点要后面慢慢深入学习了。看到一个网上教程说的一段话:“如果你是一枚Coder,但是你不......
  • Kotlin基础入门 - for、forEach 循环
    Kotlin基础入门-for、forEach循环liuyong.blog.csdn.net成就一亿技术人!不论身处何方for循环这种操作都随处可见,鉴于大多数Android开发都是从Java转到Kt的,所以我的思路是从Java的使用习惯来讲一些Kt的for、forEach循环方式基础for循环惯性for循环进阶for循......
  • 第1章 jQuery入门
    学习要点:1.什么是jQuery2.学习jQuery的条件3.jQuery的版本4.jQuery的功能和优势5.其他JavaScript库6.是否兼容低版本IE7.下载及运行jQuery一.什么是jQueryjQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一整套定义好的方法。它的作者是JohnResig,于2006年创建的一个开......
  • SpringSecurity从入门到精通:其他权限校验方法&自定义权限校验方法
    其他权限校验方法我们前面都是使用@PreAuthorize注解,然后在在其中使用的是hasAuthority方法进行校验。SpringSecurity还为我们提供了其它方法例如:hasAnyAuthority,hasRole,hasAnyRole等。​这里我们先不急着去介绍这些方法,我们先去理解hasAuthority的原理,然后再去学......
  • SpringSecurity从入门到精通:从数据库查询权限信息&自定义失败处理
    从数据库查询权限信息      记得打开redis      自定义失败处理我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道SpringSecurity......
  • 若依vue框架添加kotlin依赖,实现kotlin和java混合编译
    第一步:在最外部pom.xml文件添加版本号和依赖管理properties添加版本号<kotlin.version>1.4.21</kotlin.version><!--启用kotlin增量编译--><kotlin.compiler.incremental>true</kotlin.compiler.incremental>dependencyManagement添加依赖管理<!-......
  • fork-join 入门例子
    一介绍Fork/Join模式有自己的适用范围。如果一个应用能被分解成多个子任务,并且组合多个子任务的结果就能够获得最终的答案,那么这个应用就适合用Fork/Join模式来解决。图1给出了一个Fork/Join模式的示意图,位于图上部的Task依赖于位于其下的Task的执行,只有当所有的子任务......