




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
IT在线教育领跑者麦子学院Android调用JNI方法 及 代码JNI: Java Native Interface, 实现Java和C/C+的互通. 在Android上使用JNI的方法. 时间:2014.9.3 环境: 必须使用标准Eclipse, 安装Android的环境, 才可以使用NDT插件.Eclipse Standard/SDK Version: Luna Release (4.4.0);Android: ADT-23.0.3.zip; NDT: GNU Make 3.81; 基础安装略过. 方法1. 创建接口类:首先新建JNI的接口类, 包含使用的静态方法. 位置: 项目-src-package-JniClient.java /* * */package com.example.hellomyjni;/* * author Administrator * */public class JniClient static public native String sayName();2. 编译接口类:进入项目文件夹, 生成JNI的头文件, 使用命令:javah -classpath bin/classes -d jni com.example.hellomyjni.JniClient命令解析: javah 生成头文件;-classpath 使用类的位置(bin/classes), 都是.class文件;-d jni 需要生成JNI的类(com.example.hellomyjni.JniClient), 包package.classname.按F5刷新项目, 项目会自动生成jni文件夹, 并包含一个头文件com_example_hellomyjni_JniClient.h./* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class com_example_hellomyjni_JniClient */#ifndef _Included_com_example_hellomyjni_JniClient#define _Included_com_example_hellomyjni_JniClient#ifdef _cplusplusextern C #endif/* * Class: com_example_hellomyjni_JniClient * Method: sayName * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_hellomyjni_JniClient_sayName (JNIEnv *, jclass);#ifdef _cplusplus#endif#endif3. 配置Android项目的NativeSupport. 右键点击项目在Android Tools里面点击Add NativeSupport, 就会自动生成: HelloMyJni.cpp和Android.mk.Android.mk不需要修改:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := HelloMyJniLOCAL_SRC_FILES := HelloMyJni.cppinclude $(BUILD_SHARED_LIBRARY)HelloMyJni.cpp需要修改. 4. 添加需要的函数即修改HelloMyJni.cpp. 首先, 添加头文件, 即JNI生成的头文件, #include com_example_hellomyjni_JniClient.h; 此时头文件的报错消失.其次, 复制JNIEXPORT函数, 并填写参数名称.在函数写程序, 并调用其他C+程序. 注意的是此时的编译环境自动为C+. #include #include com_example_hellomyjni_JniClient.h JNIEXPORT jstring JNICALL Java_com_example_hellomyjni_JniClient_sayName (JNIEnv *env, jclass) return env-NewStringUTF(Im Spike!); 5. 修改主程序.默认为输出为HelloWorld.在res-layout-activity_main.xml中, 为TextView添加id, 则可以调用, 如android:id=+id/text_view. 其他不做修改. 在主程序中, src-package-MainActivity.java, 首先修改输出字符, 即重新指定字符: Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.text_view); tv.setText(JniClient.sayName(); 其次, 添加库的引用, 引用名字就是Add NativeSupport时填写的类名, 默认与项目名称相同. static System.loadLibrary(HelloMyJni); 其余不需要修改.全部:package com.example.hellomyjni;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;public class MainActivity extends Activity protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.text_view); tv.setText(JniClient.sayName(); public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; public boolean onOptionsItemSelected(MenuItem item) / Handle action bar item clicks here. The action bar will / automatically handle clicks on the Home/Up button, so long / as you specify a parent activity in AndroidMani
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纪检监督知识培训会讲话课件
- 2025年度蔬菜水果储藏室购置与保鲜技术合同
- 2025年度风力发电场施工合同条件2
- 2025版化工设备采购与专业维护合同
- 2025调料品国际采购与分销合同
- 2025年度商品混凝土节能技术改造投资合作协议
- 2025年度合同财务审计与风险评估制度
- 红酒杯知识培训方案设计课件
- 红酒品鉴礼仪和知识培训课件
- 红酒业务培训课件
- 《查理和巧克力工厂》-共24张课件
- 6.授权文件待修改大华服务承诺函
- 项目管理(PMBOK)讲义全套
- 2022中华慈善日PPT课件模板
- 汽车维修高级工技师理论考核试题库与答案
- 画法几何授课计划-供参考
- 新人教版部编本四年级上册语文全册教材分析与教学建议(课堂PPT)
- 典范英语5a_01
- 常见急危重症的快速识别要点与处理技巧
- (完整版)GHS标识(高清)
- 混凝土结构设计原理教案(参考)
评论
0/150
提交评论