Android(安卓)Studio + NDK 之 Hello Word
16lz
2021-12-04
- 新建工程,包名随意,本例为com.test
在com.test下新建
package com.test;/** * Created by Shen on 2015/9/23. */public class NDKUtil { public native String getHelloWord();}
点击build生成class文件
使用cmd进入到app\build\intermediates\classes\debug目录
输入javah -jni com.test.NDKUtil回车
将会在此目录下生成一个.h文件
在工程的src\main\下新建jni文件夹
将刚才生成的com_test_NDKUtil.h文件复制到此目录下
在此目录新建.c文件,文件名随意,这里取名test.c
/** * 将刚才生成的文件include进来 */#include "com_test_NDKUtil.h"/* * Class: com_test_NDKUtil * Method: getHelloWord * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_test_NDKUtil_getHelloWord (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"Hello Word NDK");}
设置项目ndk路径,在local.properties下添加ndk.dir=D:\android-ndk-r10e
- gradle.properties中添加ndroid.useDeprecatedNdk=true
修改app目录下的build.gradle,添加
defaultConfig { applicationId "com.test" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" //在这里添加 ndk{ moduleName "test" //希望生成的.so名字,随意填写 abiFilters "armeabi", "armeabi-v7a", "x86" //如果不写,将会生成所有 mips,x86_64等等 } }
修改NDKUtil文件,添加如下代码
package com.example.shen.myapplication;/** * Created by Shen on 2015/9/23. */public class NDKUtil { public native String getHelloWord(); //加载so static { System.loadLibrary("test"); //这个名字就是上面那个.so的名字 }}
完成以上操作,就可以使用了,在MainActivity中
NDKUtil util = new NDKUtil();((TextView)(findViewById(R.id.hello))).setText(util.getHelloWord());
更多相关文章
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- [android]Framework新增系统服务
- ListView滑动变黑的处理
- Android中SDK安装出错Failed to fectch URl https://dl-ssl.goog
- android字体
- android UI布局 layer-list
- 关于Android资源文件中出现百分号的问题
- android命令行打包、签名+自动打包器