Android的包内资源,安装后依然是在APK包内的,可以用 UnityEngine.WWW
读取,但其接口直接返回byte[],对于大文件这是不可接受的,
所以我决定使用JNI调用 android.content.res.AssetManager
读取,代码地址,
开发过程中发现了AndroidJavaObject.Call 的一个缺陷。
用AndroidJavaObject.Call调用一个需要参数传入缓冲区的函数,函数返回值是正确的,但缓冲区内数据错误,因为其文档不全,网上搜索也没有类似的例子,通过Go to declaration功能看Call的代码,是其实现问题。
传入的缓冲区被AndroidJNIHelper.CreateJNIArgArray被其拷贝了一份,函数调用完成后,没有将缓冲区中的值赋过去。
本文链接, 未经许可,禁止转载