bennyhuo / Bennyhuo

bennyhuo.vercel.app
9 stars 3 forks source link

用 Kotlin Native 写 Jni,以后写 Android 基本上要没有别的语言什么事儿了的节奏 | Bennyhuo #9

Open bennyhuo opened 5 years ago

bennyhuo commented 5 years ago

https://www.bennyhuo.com/2018/12/17/kotlin_native_jni/

我在之前写过一篇文章,讲如何用 Kotlin Native 编写 Native 代码通过 JNI 让 Java 调用。当时因为完全没有注意到 CName 这个神奇的东西的存在,所以那篇文章当中还是用 C wrapper 来做的调用。后来,我发现根本不需要这么麻烦啊。我们知道 JNI 如果不通过动态注册的话,Java native 方法与 C 函数的映射关系其实就是一个固定的命名规则:1Java_包

ZhouGongZaiShi commented 5 years ago

感谢大大的文章。 以前也没怎么接触 JNI,有一点疑问。 导入末尾的项目后,打开 main.kt 文件,发现与 Java 交互部分的代码没有代码提示(有点难受),这应该是 Android Studio 还支持不完善的原因?

bennyhuo commented 5 years ago

感谢大大的文章。 以前也没怎么接触 JNI,有一点疑问。 导入末尾的项目后,打开 main.kt 文件,发现与 Java 交互部分的代码没有代码提示(有点难受),这应该是 Android Studio 还支持不完善的原因?

Android Studio 当然不会支持 Kotlin Native 了。至少短期内 Google 应该不会想着让开发者在 Android 上用 Kotlin Native,时机还不成熟,以后会不会就难说了。

这应该是 Android Studio 还支持不完善的原因?

所以不是的,Android Studio 本来也不需要支持。

VincentChen1212 commented 5 years ago

感謝大大的文章

我遇到一個問題 我使用IntelliJ IDEA建立一個Kotlin/Multiplatform Library Project 我依照文章,建立retrun jstring的stringFromJNI 也產生.so 也loadlibrary 但呼叫卻得到NullPointerException 我看產生的.h檔 void (stringFromJNI)..... 回傳是void*

不知我哪裡錯誤了 謝謝

bennyhuo commented 5 years ago

@VincentChen1212 这种情况建议你把代码上传到 github 看下。。。

yizems commented 4 years ago

大佬,看你最近更新了,能专门写个 gradle 构建的 android jni 的demo 么. 你的demo native 不是用的 jni 构建的, 我最近试了很多方法,始终无法构建出来能够调用jni 的 项目,非常感谢

bennyhuo commented 4 years ago

@yizems 近期重心不在 native 上,我也没怎么看这个,短期内应该不会做这个尝试哈