NDK开发流程
程序员文章站
2022-06-10 13:43:27
...
NDK开发流程
1.新建工程后,在java里面写native代码
2.创建头文件
分两步,第一步,编译JNITest.java类,生成JNITest.class.可以把目标类的文件夹目录直接拖到Terminal,如图所示,输入javac JNITest.java,编译后生成的JNITest.class位于相同路径。
第二步,javah生成.h文件。拖动java文件夹路径到Terminal,记住拖动那个文件夹路径,编译生成的文件就位于哪一个文件夹路径底下。JNITest.class的路径要写全,否则编译不通过。.
3.在工程的main目录下创建jni子目录。
分别创建Android.mk,Application,mk,以及头文件对应的.c/cpp文件,同时将之前生成的.h文件剪切到jni文件夹。
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JniLib #so库名称
LOCAL_SRC_FILES =: JniLib.cpp #源文件
include $(BUILD_SHARED_LIBRARY)
Application,mk
APP_MODULES := JniLib #so库名称
APP_ABI := all #支持ABI的cpu
JniLib.cpp
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "com_lcc_jnidemo_JNITest.h"
/* Header for class com_lcc_jnidemo_JNITest */
/*
* Class: com_lcc_jnidemo_JNITest
* Method: getString
* Signature: ()Ljava/lang/String;
*/
jstring Java_com_lcc_jnidemo_JNITest_getString
(JNIEnv * env, jobject jobject){
return (*env).NewStringUTF("成功调用JNI内容");
}
* Class: com_lcc_jnidemo_JNITest
* Method: getUserID
* Signature: ()I
*/
jint Java_com_lcc_jnidemo_JNITest_getUserID
(JNIEnv *, jclass){
return 0;
}
4.加载动态链接库;
在jni文件夹右键选中之前配置好的ndk-build外部命令
5.使用
在Activity中调用显示我们写的字符串。
package com.lcc.jnidemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView testViw;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
testViw = findViewById(R.id.test_text);
testViw.setText(new JNITest().getString());
}
}
模拟器显示效果