尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Unity Android 平台适配:Java/Kotlin 与 Unity 跨语言交互实战

Unity Android 平台适配:Java/Kotlin 与 Unity 跨语言交互实战 开场上个月做一个 AR 项目,产品要求接入支付宝沙箱支付和厂商推送,Unity Asset Store 翻了一圈愣是没找到合适的插件。没办法,只能硬着头皮自己写 Android 原生桥接。结果第一版代码跑起来就翻车——AndroidJavaObject调过去直接空指针,排查半天才发现是 Activity 引用生命周期没对齐。这种痛点几乎每个做 Unity 跨平台的同学都踩过:Unity 跑在 ART 虚拟机之上,和 Android Framework 之间隔着一层 JNI,稍不留神就是内存泄漏或回调丢失。这篇文章先把 JNI 桥接的内部机制讲清楚(为什么它慢、为什么引用会溢出),再给一套自洽的双向调用代码,最后落到 Gradle 工程化和上架清单。一、桥接的本质:JNI 不是免费通道1.1 一次跨语言调用内部发生了什么Unity 通过JNI(Java Native Interface)调用 Java/Kotlin 代码。C# 侧的AndroidJavaClass、AndroidJavaObject、AndroidJavaProxy三个类,本质都是对 JNI 函数的托管包装。理解一次androidJavaObject.Callint("getBatteryLevel")内部要走完的路径,才能理解后面的所有性能建议:查类:按类名FindClass,类名是字符串,查找要走 ClassLoad
返回列表