IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Kotlin 和 Java 中内部类中的 static native 方法(JNI 函数) -> 正文阅读

[移动开发]Kotlin 和 Java 中内部类中的 static native 方法(JNI 函数)

Java 内部类中的 static native 方法

package com.example.app;

public class JavaClass {
    static {
        System.loadLibrary("mylib");
    }
    static class Native {
        public static native byte[] encrypt(byte[] str);
    }
}

对应的 JNI 函数为:

JNIEXPORT jbyteArray JNICALL
Java_com_example_app_JavaClass_00024Native_encrypt(
    JNIEnv *env, jclass clazz, jbyteArray bytes) {
    // TODO: implement encrypt()
}

其中 ,Java_com_example_app_JavaClass_00024Native_encrypt 的名字解析:

  • Java_ JNI 函数前缀
  • com_example_app_JavaClass_00024Native 为内部类 com.example.app.JavaClass$Native
  • _ 是分隔符,类名 com.example.app.JavaClass$Native 和 Java 方法名 encrypt 之间的分隔符
  • encrypt 对应 Java 方法名

com_example_app_JavaClass_00024Native 中的 _00024 的意思:
_00024_00024 两部分组成,
_0 表示这是一个转义字符,
0024 是Unicode字符 $,即内部类的连接符

参考: https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html#wp615

转义解释
_0XXXX表示 Unicode 字符 XXXX ,
通常用小写字母表示,
例如,使用小写字母的 _0abcd,而不是 _0ABCD

Kotlin companion object 中的静态的 native 方法

package com.example.app

class KotlinClass {
    companion object {
        init {
            System.loadLibrary("mylib");
        }

        external fun encrypt(bytes: ByteArray): ByteArray?
    }
}

对应的 JNI 函数:

JNIEXPORT jbyteArray JNICALL
Java_com_example_app_KotlinClass_00024Companion_encrypt(
    JNIEnv *env, jobject thiz, jbyteArray bytes) {
    // TODO: implement encrypt()
}

其中, 对 Java_com_example_app_KotlinClass_00024Companion_encrypt 的解析:

  • Java_ JNI 函数前缀
  • com_example_app_KotlinClass_00024Companion 为内部类 com.example.app.KotlinClass$Companion
  • _ 是分隔符,类名 com.example.app.KotlinClass$Companion 和 Kotlin 方法名 encrypt 之间的分隔符
  • encrypt 对应 Kotlin 方法名

Java 中的 static 变量,static Java 方法,在 Kotlin 中,放到 companion object { } 中。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:51:08  更:2022-04-30 08:51:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:33:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码