首页
社区
课程
招聘
[求助]android中C程序如何调用JAVA方法
发表于: 2014-3-20 10:26 7851

[求助]android中C程序如何调用JAVA方法

2014-3-20 10:26
7851
在用NDK中,可以使用 JNIEnv *env 来获取一些java使用的方法,比如:

jclass cls_context = (*env)->FindClass(env, "android/content/Context");


但是直接写的android linux C 程序 没有传入的JNIEnv *env,这样情况下怎么调用java里面的类或者方法。

求教

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
原生程序是没有加载dalvik虚拟机的。 所以需要自己手动加载~ 。 也就是类似于app_process做的事情。  

相关代码可以参考android源代码。   我也木有干过
2014-3-20 11:14
0
雪    币: 19
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
谢谢, 要是需要把android源码相关的模块自己复制出来单独编译的话就太复杂
2014-3-20 11:27
0
雪    币: 2307
活跃值: (1013)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
dlsym libdvm.so JNI_CreateJavaVM &call 试试…
2014-3-20 11:39
0
雪    币: 19
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
谢谢,试试了
2014-3-21 18:55
0
雪    币: 19
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
你好

        handle = dlopen("/system/lib/libdvm.so", RTLD_LAZY);

返回的是空指针。。。。 应该怎么加载才行
2014-3-21 20:06
0
雪    币: 30
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
可以参考http://blog.csdn.net/luoshengyang/article/details/18006645
具体的,AndroidRuntime中创建JniInvocation,来初始化jni环境。这个过程中加载libdvm.so。

与lz的对比了下,貌似人家用的是RTLD_NOW。

建议楼主可以看下源码。ps:上面链接中代码分析针对早期版本,后面新版代码略有变化。
2014-6-14 10:34
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
JNI+NDK生成(armeabi.so)在Eclipse调用
2014-6-27 11:06
0
游客
登录 | 注册 方可回帖
返回
//