手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Android Studio 中NDK开发

时间:2024-11-01 08:37:21

1、在Android Studio中创建新Project名字为JniTest

2、在项目中添加新类:JniTestpackage com.example.administrator.jnitest;/** * Created by Administrator on 2015/7/15. */public class JniTest { static { System.loadLibrary("JniTest"); } public native String getStringFromJni();}

3、执行Bulid-->Make Project;在****\JniTest\app\build\intermediates\classes\debug\com\example\administrator\jnitest\JniTest.class路径下生成JniTest.class

4、(1)在Terminal终端利用javah生成头文件,首先进入到app\src\main下执行命令:javah -d jni -classpath ..\..\build\intermediates\classes\debug com.example.administrator.jnitest.JniTest-d jin:在app\src\main目录下生成jni文件夹;-classpath后面跟第三步生成的JniTest.class的路径,..\..\build\intermediates\classes\debug:JniTest.class所在的路径。com.example.administrator.jnitest.JniTest:包名(com.example.administrator.jnitest)+类名(JniTest)(2)生成的头文件如下:com_example_administrator_jnitest_JniTest.h/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_example_administrator_jnitest_JniTest */#ifndef _Included_com_example_administrator_jnitest_JniTest#define _Included_com_example_administrator_jnitest_JniTest#ifdef __cplusplusextern "C" {#endif/* * Class: com_example_administrator_jnitest_JniTest * Method: getStringFromJni * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_administrator_jnitest_JniTest_getStringFromJni (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif

5、在jni文件夹中添加com_example_administrator_jnitest_JniTest.c文件,并定义头文件中的函数:/* DO NOT EDIT THIS FILE - it is machine generated */#include "com_example_administrator_jnitest_JniTest.h"/* Header for class com_example_administrator_jnitest_JniTest *//* * Class: com_example_administrator_jnitest_JniTest * Method: getStringFromJni * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_administrator_jnitest_JniTest_getStringFromJni (JNIEnv *env, jobject jObj) { return (*env)->NewStringUTF(env,"Hello Jni"); }

6、(1)在local.properties中添加ndk路径,如:sdk.dir=e\:\\Android\\Sdkndk.dir=e\:\\Android\\android-ndk-r10e(2)在build.gradle中defaultConfig{}内添加生成的.so文件的名称ndk{ moduleName "JniTest"}例如:defaultConfig { applicationId "com.example.administrator.jnitest" minSdkVersion 17 targetSdkVersion 22 versionCode 1 versionName "1.0" ndk{ moduleName "JniTest" }}

7、在MainActivity中调用Jni函数:public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); JniTest jniTest = new JniTest(); TextView textView = (TextView) findViewById(R.id.textView); textView.setText(jniTest.getStringFromJni()); }}

8、执行Bulid-->Make Project,生成.so文件,然后运行程序即可。

© 手抄报圈