在android studio 2.1 实现简单的ndk
来源:互联网 发布:dubstep软件怎么用 编辑:程序博客网 时间:2024/06/07 18:57
在android studio 2.1 实现简单的ndk
我从这里参考的,然后自己琢磨好久才自己实现了。第一次玩这个!!!
http://blog.csdn.net/yanbober/article/details/45309049
1, 在Settings->中先下载android ndk
2,创建NdkJniUtils类
package com.example.edu.ndktest;/** * Created by Administrator on 2016/4/27. */public class NdkJniUtils { public native String getCLanguageString();}
3.然后build project得到其中中间文件,我们关注的是.class文件。编译OK以后生成的class文件在AS工程的如下目录:
NdkTEST\app\build\intermediates\classes\debug
4,点开AS的Terminal标签,(view->tool windows->Terminal) 输入命令:
cd app\build\intermediates\classes\debug
然后执行如下javah命令生成h文件。
javah -jni com.example.edu.ndktest.NdkJniUtils
执行完之后你可以在文件夹NdkTest\app\build\intermediates\classes\debug下看见生成的 .h头文件为:
其内容为:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_example_edu_ndktest_NdkJniUtils */#ifndef _Included_com_example_edu_ndktest_NdkJniUtils#define _Included_com_example_edu_ndktest_NdkJniUtils#ifdef __cplusplusextern "C" {#endif/* * Class: com_example_edu_ndktest_NdkJniUtils * Method: getCLanguageString * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_edu_ndktest_NdkJniUtils_getCLanguageString (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫jnitest.c 。然后编辑代码如下
//// Created by Administrator on 2016/4/27.//#include "com_example_edu_ndktest_NdkJniUtils.h"/* * Class: com_example_edu_ndktest_NdkJniUtils * Method: getCLanguageString * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_edu_ndktest_NdkJniUtils_getCLanguageString (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"This just a test for Android Studio NDK JNI developer!"); }
5.接下来在工程的local.properties文件中添加NDK路径(上面下载好的那个NDK),类似其中的SDK路径一样,我的添加后如下:
6,接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下
7,现在生成的so库名字也有了,那就去代码的NdkJniUtils Java文件添加静态初始化load代码,添加如下:
static { System.loadLibrary("YanboberJniLibName"); //defaultConfig.ndk.moduleName }
8,编写MainActivity类
package com.example.edu.ndktest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) this.findViewById(R.id.text); NdkJniUtils jni = new NdkJniUtils(); mTextView.setText(jni.getCLanguageString()); }}
9, 编译运行
- 在android studio 2.1 实现简单的ndk
- 使用Android-studio简单实现一个NDK的例子
- Android studio ndk开发--简单的例子
- Android Studio 简单的NDK开发
- android studio JNI/NDK的简单使用
- NDK在android studio里的位置
- Android Studio上实现一个最简单的ndk项目的步骤
- Android NDK入门(实现简单的NDK程序)
- Android Stuido下NDK的简单实现
- Android Studio运行NDK程序,简单的JNI实例
- Android Studio 中 Ndk的环境配置以及简单使用
- Android Studio运行NDK程序,简单的JNI实例
- Android Studio NDK环境配置与JNI简单的例子
- 在Android Studio中进行NDK开发的一般流程
- NDK使用 ,OpenCV库的调用,在NDK中使用纯C++代码,android studio 2.1(1)
- Android Studio NDK开发简单入门
- Android studio NDK开发简单实例
- Android studio NDK开发简单实例
- poj--2823 Sliding Window(单调队列)
- python基础学习01
- Linux c 数组大小的限制
- 控制台输出的内容复制到txt文件
- hibernate.hbm.xml 属性详解
- 在android studio 2.1 实现简单的ndk
- Mysql(一)安装使用
- [todo]scala之spray
- python基础学习02(if...else...elif)
- 使用缓冲输入流和缓冲输出流复制文件
- Codeforces 665B - Shopping
- [CODEVS1378]选课(树形dp)
- python基础学习03(循环)
- 教你HTML5与iOS交互实现各种排序动画演示