Android(安卓)Framework中JNI调用
1.JNI层
在/Android/android-1.6_r2/frameworks/base/core/jni路径下创建例子android_mytest_hellojni.cpp文件,这个文件就是在JNI层实现接口。文件内容如下:(可参考同一目录下的android_debug_JNITest.cpp文件编写)
2.JNI层:对编译的修改配置
2.1修改/Android/android-1.6_r2/frameworks/base/core/jni目录下的Android.mk文件,在LOCAL_SRC_FILES:=\下面加上
android_mytest_hellojni.cpp\
2.2修改/Android/android-1.6_r2/frameworks/base/core/jni目录下的AndroidRuntime.cpp文件在externint后面添加
externintregister_android_mytest_hellojni(JNIEnv*env);
然后在staticconstRegJNIRecgRegJNI[]={下面添加
REG_JNI(register_android_mytest_hellojni),
这样,JNI层的修改就到此为止了。
3.Javaframework层
在/Android/android-1.6_r2/frameworks/base/core/java/android/新建文件目录mytest,在该目录下新建文件hellojni.java声明接口。内容如下:(可以参考android-1.6_r2/frameworks/base/core/java/android/debug目录下的JNITest.java文件编写)
4.下面我们要对我们做过更改的libandroid_runtime.so和framework.jar进行重新编译。
在源代码工程目录下输入makelibandroid_runtime重新编译生成libandroid_runtime.so
…
targetthumbC++:libandroid_runtime<=frameworks/base/core/jni/android_mytest_hellojni.cpp
targetthumbC++:libandroid_runtime<=frameworks/base/core/jni/AndroidRuntime.cpp
targetSharedLib:libandroid_runtime(out/target/product/generic/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/LINKED/libandroid_runtime.so)
targetPrelink:libandroid_runtime(out/target/product/generic/symbols/system/lib/libandroid_runtime.so)
targetStrip:libandroid_runtime(out/target/product/generic/obj/lib/libandroid_runtime.so)
Install:out/target/product/generic/system/lib/libandroid_runtime.so
然后再输入makeframework重新编译生成framework.jar
…
Install:out/target/product/generic/system/framework/framework.jar
更多相关文章
- Android如何调用第三方SO库
- 关于Android(安卓)Studio里的Gradle文件
- 反编译介绍
- Android(安卓)ApiDemos示例解析(15):App->Activity->SetWallpaper
- Android应用正确使用扩展SD卡
- Android(安卓)开发——'Android(安卓)Pre Compiler'空指针问题的
- android使用http协议上传文件
- 【Flutter】修改图标、应用名称、包名等
- android studio 新建 activity 失败