NDK之hellow word

前言

ndk是android学习的比修之路,提高性能,so加密等,以及so移植等

配置

  • 下载NDK
  • local.properties 添加以下

ndk.dir=/Users/huangb/Library/Android/sdk/ndk-bundle

  • gradle.properties 添加如下

android.useDeprecatedNdk=true
(ps:3.0以后 android.deprecatedNdkCompileLease=1511832698813)

  • 以及在module的gradle中的defaultConfig添加
ndk{
            moduleName "forkApp" //生成的so名字
            ldLibs "log" //Log打印
            abiFilters "armeabi", "armeabi-v7a"  //输出指定三种abi体系结构下的so库。目前可有可无。
        }
  • 注意编译的SDK的环境最好是最新的

过程

  • 新建一个class如下 这是需要使用的方法
public class JniDemo {

    public native String getHelloWordText(String message);
}
  • 生成JniDemo的class文件,在终端中输入

javac JniDemo.java

  • 生成.h头文件,切换到main/java路径在终端输入

javah com.example.ndk.JniDemo

  • 生成jni文件夹
    new -> Folder -> JNI Folder
  • 把生成的.h头文件复制到jni文件夹下
  • 新建一个.c文件写入我们要处理的方法
  #include "com_example_ndk_JniDemo.h"
 #include 
 JNIEXPORT jstring JNICALL 
 Java_com_example_ndk_JniDemo_getHelloWordText
         (JNIEnv *env, jobject orgin, jstring str) {
//新建一个string对象
     jstring encrypt;
//把string转为char
     char *cstr = (*env)->GetStringUTFChars(env, str, 0);
// 把char转为jstring拼接 these
    encrypt = (*env)->NewStringUTF(env, strcat (cstr,"these"));
    return encrypt;
}
  • 构建项目生成so Rebuild Project,生成路径如下
NDK之hellow word_第1张图片
117FB902-1DAB-4613-9427-D1B69219DBCC.png

项目目录

NDK之hellow word_第2张图片
C87AB7E0-5AFC-4743-A671-EC957F46C9B6.png

方法使用

NDK之hellow word_第3张图片
0063CF84-58B8-4923-A72F-739D413AE587.png

结语

如果有什么问题以及有什么不对可以留言我会尽快回复哟

你可能感兴趣的:(NDK之hellow word)