JNI 相关流程

                整个JNI流程

                                                    
                                                    配置CmkList.txt        
                                                    编写cpp        
                                                    编译.so        
                                                            
                                                    新建LibMoudle            
                                                        Gradle配置 Task    
                                                        执行gradle/other/makeJar    
                                                        生成aar   提供三方使用    
                                                            
                                                    三方Module项目测试
                                                        依赖LibMoudle 
                                                        实现调用
                                                            
                                                            
                 JNI 层赋值到Java 层            
                                                            
                                                    通过对应的Get方法将指针地址读取出来
                                                    object *p = Get        
                                                    通过该指针 *p  得到需要创建对应的 object b  Java函数对象所需的 内存容量        
                                                        
                                                    释放该指针对象 ReleaseXXXArrayElements     
                                                    通过SetObjectArrayElement 赋值        
                                                            
                                                    返回创建的对象         b

 

              相关逻辑构造

                                                 

android 加载库方式
                                                            静态加载
                                                            动态加载     自动激发 JNI_OnLoad()方法读取_JavaVM 

                                                        
                                                    总java外静态接口 1
                                                            4 初始化Java类方法回调
                                                    
                                                    实现功能cpp/h  2
                                                            .h文件基本操作
                                                                继承
                                                                公共类属性定义(区分)
                                                                        公共属性
                                                                        公共方法
                                                                        
                                                            5 使用单独的静态java回调接口回传
                                                            
                                                    单独的java静态回调方法 3
                                                            注意cpp反射的类型  常见java类都需要在前边加j
                                                            回传类反射读取java对应的类  
                                                                object = instance
                                                                javaVm反射重置 object对象 
                                                                jcalss = GetObjectClass
                                                                jcalss -> GetMethodID (构造方法id,及传参 详情可查看列表)
                                                                使用虚拟机对象 jnv 调用 CallVoidMethod 调动java对象
                                                            拿取对应类的方法和所需传参(构造方法 id)
                                                            数据类型处理 ---> 类型转换
                                                            通过构造的方法id 调用方法回传到java层
                                                    
                                                            
                                                    JNI相关简化操作        
                                                    
                                                    注意事项"
                                                        参数构造不需要修饰词进行修饰
                                                            
                                                            
                                                            
                                                    JNI 反射调用 Java方法流程(以下如果不注明前边调用的对象都是使用上一个对象)
                                                        ... 代表参数
                                                        jniEnv -> NesGlobalRef(object)
                                                               -> GetObjectClass(object)
                                                               -> GetMethodID(jlz,"类里边的方法名","(...)V")
                                                               -> CallVoidMethod(object,mothedId,...,)
                                                               -> DelectLocalRef(...)    

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值