1.在frameworks/base/core/java/android/view/Threadedrenderer.java下新增JNI函数:
声明native函数:nInitRenderNodeIfSame
返回值:void
参数:boolean
2.在frameworks/base/core/jni目录下新增一个文件android_view_Threadedrenderer.cpp,命名规则是java文件的路径+java文件
3.实现android_view_Threadedrenderer.cpp
红色边框里的是固定模板,在不同的条件下修改参数即可。
第一个变量name是Java中函数的名字;
第二个变量signature,用字符串是描述了函数的参数和返回值
字符串格式为:(参数)返回值
字符串映射关系如下:
所以nInitRenderNodeIfSame函数对应的字符串为”(Z)V”
第三个变量fnPtr是函数指针,指向C函数;
参数为java文件的路径
按照需求,实现android_view_ThreadedRenderer_nInitRenderNodeIfSame函数功能
4.在frameworks/base/core/jni目录下的AndroidRuntime.cpp中注册步骤3中的JNI文件(android_view_Threadedrenderer.cpp)
在namespace android中添加
extern int register_android_view_ThreadedRenderer(JNIEnv* env);
在static const RegJNIRec gRegJNI[] 中添加
REG_JNI(register_android_view_ThreadedRenderer),
5.在frameworks/base/core/jni目录下的Android.bp文件中新增需要编译的文件:
在“AndroidRuntime.cpp”下添加
“android_view_ThreadedRenderer.cpp”
6.部分编译framework.jar和libandroid_runtime.so,并将新生成的文件刷入手机中即可。