jni工作机制简介.ppt

jni工作机制简介.ppt

ID:50174234

大小:65.50 KB

页数:22页

时间:2020-03-06

jni工作机制简介.ppt_第1页
jni工作机制简介.ppt_第2页
jni工作机制简介.ppt_第3页
jni工作机制简介.ppt_第4页
jni工作机制简介.ppt_第5页
资源描述:

《jni工作机制简介.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Androidjava层与linux底层相互调用Android与linux底层程序互调用Android调用底层程序java程序如何访问windows,linux底层c++/c的程序?JNI-JavaNativeInterfaceJNI标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI是本地编程接口,它使得在Java虚拟机(VM)内部运行的Java代码能够与用其它编程语言(如C、C++和汇编语言)编写的应用程序和库进行交互操作JNI工作机制JAVAVMLinux组件(C,C++)Java类编译为Dex型式的Bytecode之后必须靠Dalvik虚拟机来执行JN

2、I开发环境-ndk(推荐)Android提供了windows和linux下的JNI开发环境ndk-NativeDevelopmentKit交叉编译器编译的代码符合arm-linux提供了用于编译的android基本sdk库提供了bash方式的编译命令,使用非常简单Linux下ndk配置linux下直接下载并解压ndk开发包即可Ndk-windows开发环境Ndk是在linux下运行的程序,在windows上需要模拟一个linux环境才能执行ndk。怎么模拟?cygwinWindows配置ndk步骤:1.下载windows版本的ndk,2.安装cygwin,并被指ndk环境3.每次编写好程

3、序代码后,启动cygwin,然后执行ndk编译命令编译JNI开发步骤1.采用标准c或c++语言编写程序2.类似于linux在makefile,android的jni编译需要.mk文件编译:采用命令ndk-bulid例子:1、我们选择ndk自带的例子hello-jni,我的位于E:android-ndk-r5sampleshello-jni(根据你具体的安装位置而定),2、运行cygwin,输入命令cd/cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:android-ndk-r5sampleshello-jni目录。3、输入$N

4、DK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)4、此时去hello-jni的libs目录下看有没有生成的.so文件举例我们首先用java编写helloworld应用程序(APK),这个代码很简单创建一个HelloWorldactivitypublicclassHelloWorldextendsActivity{privatestaticfinalStringTAG="HelloWorld";static{System.loadLibrary("hell

5、oworld");}privatenativeStringprintJNI();/Calledwhentheactivityisfirstcreated./@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Log.d(TAG,"ActivitycallJNI:"+printJNI());}}C语言实现helloworld共享库使用javah工具,可以根据java源程序,生成Native代码的头文件jav

6、ahcom.simon.HelloWorld注意:该命令必须在bin/classes下执行执行后得到,一个头文件com_simon_Helloworld.h,这里包含有printJNI接口的C/C++声明创建com_simon_Helloworld.c文件#include#defineLOG_TAG"HelloWorld"#include/Nativeinterface,itwillbecallinjavacode/JNIEXPORTjstringJNICALLJava_com_simon_HelloWorld_printJNI(JNIEnvenv

7、,jobjectobj){LOGI("HelloWorldFromlibhelloworld.so!");return(env)->NewStringUTF(env,"HelloWorld!");}/Thisfunctionwillbecallwhenthelibraryfirstbeload.Youcandosomeinitinthelibray.returnwhichversionjniitsupport./jintJNI_On

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。