Android上,使用JNI调用C的函数,hellojni
来源:互联网 发布:云计算专业认识 编辑:程序博客网 时间:2024/05/23 21:18
参考:http://jingyan.baidu.com/album/495ba841e1d83b38b30ede2b.html?picindex=1
1. 首先,在Android studio中,创建工程。
2. 创建一个接口类JniTest
JniTest.java 的内容是
package com.example.yjx.testjpeg;/** * Created by yjx on 2016-9-26. */public class JniTest { //本地方法获得字符串,本地方法有c/c++实现 public static native String helloPromC(); static { //指定库名,加载动态库需要,需要和build.gradle中指定的库名相一致 System.loadLibrary("hello-jni"); }}
3. Build->Make Project(ctrl+f9) 注意:生成class文件
4. 在AS的Terminal窗口中,切换到工程目录下debug目录 ,生成该类的.h文件,在控制台执行如下命令:
5. 执行完后该debug目录下多了.h文件,将其复制粘贴到android studio的jni目录下
6. 在jni目录下添加功能c代码,jni->new->c/c++ source file 注意勾选生成.h文件
7. C文件内容如下(函数可从com_example_yjx_testjpeg_JniTest.h文件copy改写),注意添加该头文件
#include "hello.h"#include "com_example_yjx_testjpeg_JniTest.h"/*** Class: com.example.yjx.testjpeg.JniTest* Method: helloPromC()**/JNIEXPORT jstring JNICALL Java_com_example_yjx_testjpeg_JniTest_helloPromC(JNIEnv *env, jclass obj){ //char buf[]="Hello jni yin"; // return (*env)->NewStringUTP(env,buf); return (*env)->NewStringUTF(env,"Hello from JNI!");};
8. 在mainactivity.java添加调用方法
package com.example.yjx.testjpeg;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv=(TextView) findViewById(R.id.aaa); JniTest jnitest=new JniTest(); String getC=jnitest.helloPromC(); tv.setText(getC); Toast.makeText(this,"从C读取字符串:"+ getC,Toast.LENGTH_LONG).show(); }}
9. 编辑该项目的build.gradle,在defaultConfig{}内添加如下代码:(添加ndk{},那部分)
10. 编辑整个工作区间的gradle.properties使能ndk
11. 配置ndk路径Open Module Settings(F4):Ndk目录\android-ndk-r11c
12. 运行。
0 0
- Android上,使用JNI调用C的函数,hellojni
- Android上,用mk文件调用C写的函数,承自上一篇(hellojni)
- Android Studio中通过jni实现对C/C++代码的调用,HelloJni,Ubuntu
- Android JNI开发一,HelloJni
- cocos2dx 与android函数的相互调用及使用jni
- cocos2dx 与android函数的互相调用及使用jni
- android使用JNI调用C,C++
- android使用JNI调用C,C++程序
- Android中使用JNI调用C/C++
- android studio 使用JNI调用C程序
- jni tutorial:windows下的HelloJNI
- 学习JNI--Android下使用JNI调用C
- 学习JNI--Android下使用JNI调用C
- Android开发之JNI调用本地C库专题(一):JNI的使用
- 使用 JNI 调用 c 的 DLL
- Java调用C++: JNI的使用入门
- jni的使用(java调用c++)
- 《Android JNI》05 在JNI中调用Java的函数
- ImageView src与background的区别
- using声明和using编译
- 电容器及介质种类
- C++基础篇(2)——面向过程的特点
- createrepo -v -g 产生的源的名字不相同
- Android上,使用JNI调用C的函数,hellojni
- unix 网络编程 Fgets Fputs Fclose Fopen Fdopen
- 插入排序
- 面试题--C++基础篇
- HLS协议
- Android中通过GPS或NetWork获取当前位置的经纬度
- 案例借鉴 | 某通讯巨头的IT建设方案
- CSS控制缩略缺省显示...
- Objective-C修改运动步数