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體系結(jié)構(gòu)下的so庫。目前可有可無。
        }
  • 注意編譯的SDK的環(huán)境最好是最新的

過程

  • 新建一個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頭文件復制到j(luò)ni文件夾下
  • 新建一個.c文件寫入我們要處理的方法
  #include "com_example_ndk_JniDemo.h"
 #include <jni.h>
 JNIEXPORT jstring JNICALL 
 Java_com_example_ndk_JniDemo_getHelloWordText
         (JNIEnv *env, jobject orgin, jstring str) {
//新建一個string對象
     jstring encrypt;
//把string轉(zhuǎn)為char
     char *cstr = (*env)->GetStringUTFChars(env, str, 0);
// 把char轉(zhuǎn)為jstring拼接 these
    encrypt = (*env)->NewStringUTF(env, strcat (cstr,"these"));
    return encrypt;
}
  • 構(gòu)建項目生成so Rebuild Project,生成路徑如下
117FB902-1DAB-4613-9427-D1B69219DBCC.png

項目目錄

C87AB7E0-5AFC-4743-A671-EC957F46C9B6.png

方法使用

0063CF84-58B8-4923-A72F-739D413AE587.png

結(jié)語

如果有什么問題以及有什么不對可以留言我會盡快回復喲

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容