Android ndk 开发步骤总结
16lz
2021-01-23
配置完Android NDK工具后
1.新建一个Android项目,java文件下包含native方法
package com.dnfchan.ndktest;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class NDKTest2Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); TextView view=new TextView(this); int a=add(5,9); view.setText(""+a); setContentView(view); } public native int add(int x,int y); //本地方法1 public native int del(); //本地方法2,未调用 static{ System.loadLibrary("test-jni");//加载库,库名省略的前缀lib和后缀.so,实际库名是libtest-jni.so }}
2.在工程目录下新建一个jni的目录,并在工程目录运行头文件生成命令javah -classpath bin -d jni com.dnfchan.ndktest.NDKTest2Activity.运行完后将在jni文件夹生成.h头文件
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_dnfchan_ndktest_NDKTest2Activity */#ifndef _Included_com_dnfchan_ndktest_NDKTest2Activity#define _Included_com_dnfchan_ndktest_NDKTest2Activity#ifdef __cplusplusextern "C" {#endif/* * Class: com_dnfchan_ndktest_NDKTest2Activity * Method: add * Signature: (II)I */JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_add (JNIEnv *, jobject, jint, jint);/* * Class: com_dnfchan_ndktest_NDKTest2Activity * Method: del * Signature: ()I */JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_del (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
3.在jni文件夹下新建test-jni.c文件,并根据头文件写里面的方法。可以将.h的方法copy下来,并添上参数名即可
#include <jni.h> //对应java文件的add()方法JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_add (JNIEnv* env, jobject thiz, jint x, jint y){ return x+y; }
4.为了将以上文件编译成库文件,还必须在jni目录下新建Android.mk文件
LOCAL_PATH:=$(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:=test-jniLOCAL_SRC_FILES:=test-jni.cinclude $(BUILD_SHARED_LIBRARY)
第一行表示源文件路径,my-dir表示返回当前路径
第二行是指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量
第三行编译后的模块名
第四行编译的源码文件
第五行编译成共享库
5.利用ndk-build生成库,在工程根目录下运行ndk-build,出现下面信息是表示生成成功。
Compile thumb : test-jni <= test-jni.cSharedLibrary : libtest-jni.soInstall : libtest-jni.so => libs/armeabi/libtest-jni.so
6.库生成好后,回到eclipse刷新工程,运行即可。
更多相关文章
- Android判断有无外置SD卡(TF卡),并读写文件
- 【Android】方法数查看工具---DexCount
- java拷贝文件夹和android设置文件权限
- android studio 将文件打包成jar文件
- Android之下获取屏幕分辨率的方法
- java|android加载src路径下面的图片文件
- 卸载android system/app 目录下文件的应用程序
- 将Android项目打包成APK文件