-
背景信息
-
开发背景
笔者基于 Kotlin 开发头戴设备部署 AI 模型的时候,所参照的示例普遍也基于 Kotlin 实现,之所以出现 Java 和 Kotlin 要互相调用的情况,是因为要适配相对成熟的 Java for Android 开发。
前辈们已经为此目的铺好了路,所以这里分享完整的互相调用的示例,而不是只呈现核心代码或注意事项的情况。同时非常感谢公司对笔者研发的支持,给予了足够的耐心让笔者向网上的前辈学习,希望能够在解决一个个的问题中,早日为公司的边缘端设备赋能 AI,而且稳定又好用。
-
开发环境
Android Studio Narwhal | 2025.1.1 Patch 1
-
-
app 入口
-
build.gradle.kts 的配置没有什么特殊要求,笔者是沿着 Android Studio 所创建的
Empty模板而完成的本文。如果计划将kotlin/java所开发的代码作为模块导入,则在dependencies块中加入如下类似的配置即可。KotlinForJava是笔者创建的模块名implementation(project(":KotlinForJava")) -
app\src\main\res\activity_main.xml<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> -
MainActivity.java注意,此处
Detector的实例化是从模块中导入的package com.example.javacallkotlinpurecode; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import com.example.kotlinforjava.purecode.Detector; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView myTextView = findViewById(R.id.myTextView); Detector detector = new Detector(); String message = detector.detect(); MyKotlinUtils tester = new MyKotlinUtils(); String testerMsg = tester.greetingFromKotlin(); myTextView.setText(message); Log.i("JAVA Caller", testerMsg); } } -
MyKotlinUtils.kt注意本代码同 MainActivity.java是同在
app\src\main\java\com\example\javacallkotlinpurecode目录下package com.example.javacallkotlinpurecode class MyKotlinUtils { fun greetingFromKotlin(): String { return "Hello form Kotlin in the same directory level!" } }
此时 Android Studio 在
MainActivity.java的main方法处应该就有一个绿色的运行按钮了。 -
-
main 入口
在 Android Studio 中,笔者实现的是以模块的形式运行纯代码
-
build.gradle.kts
重点是
id("java-library"),其意思为构建一个纯 Java 库plugins { id("java-library") alias(libs.plugins.jetbrains.kotlin.jvm) } java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlin { compilerOptions { jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11 } } -
Detector.kt
package com.example.kotlinforjava.purecode class Detector() { fun detect(): String { return "Kotlin: Aloha!!" } } -
Main.java
package com.example.kotlinforjava.purecode; public class Main { public static void main(String[] args) { System.out.println("Java main method started."); Detector detector = new Detector(); System.out.println(detector.detect()); System.out.println("Java main method finished."); } }此时就可以看到如下的输出了

-
04-03
1090
1090
05-10
945
945
09-08
4236
4236





