android jni使用
Posted 踏雪羽翼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android jni使用相关的知识,希望对你有一定的参考价值。
1、配置添加ndk,然后配置一下环境变量2、配置build.gradle,在defaultConfig中添加 //配置ndk信息 ndk moduleName "JniTest" abiFilters "armeabi" , "armeabi-v7a" , "x86" //配置so文件存放位置 sourceSets. main jni.srcDirs = [] jniLibs.srcDir 'src/main/libs'
3、main下面添加jni文件
配置Application.mk文件:APP_ABP是指要添加那些,现在全部添加 APP_CFLAGS += -Wno-error=format-security APP_ABI := armeabi arm64-v8a armeabi-v7a mips mips64 x86 x86_64
配置android.mk:LOCAL_MODULE的名字要跟代码里写的一样 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)
LOCAL_MODULE := JniTest LOCAL_SRC_FILES := main.c
include $(BUILD_SHARED_LIBRARY)
写main.c #include "com_example_a550211_myapplication_MainActivity.h" JNIEXPORT jstring JNICALL Java_com_example_a550211_myapplication_MainActivity_getStringFromNative (JNIEnv * env , jobject obj) return (*env)->NewStringUTF(env , "ffffffff" ) ;
com_example_a550211_myapplication_MainActivity.h 这里的名字需要跟包名一样,然后加上在哪个activity用 #include <jni.h> #ifndef _Included_com_example_a550211_myapplication_MainActivity #define _Included_com_example_a550211_myapplication_MainActivity #ifdef _cplusplus
extern "C" #endif /*com.example.a550211.myapplication
* Class: com_example_jnic_MainActivity * Method: getStringFromNative * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL java_com_example_a550211_myapplication_MainActivity_getStringFromNative (JNIEnv * env , jobject* obj) return (*env)->NewStringUTF(env , "fffffff!" ) ; #ifdef __cplusplus #endif #endif java_com_example_a550211_myapplication_MainActivity_getStringFromNative ,包名+activity+方法名 还需要注意的是如果这里的内容修改了,一定要重新生成libs文件否则不会生效
4、so包生成,先进到main目录下,然后执行ndk-build命令就可以更新或者自动生成了
5、代码中调用,然后就可以实现了 public class MainActivity extends AppCompatActivity
static System. loadLibrary ( "JniTest" ) ; public native String getStringFromNative () ;
private EditText etTest ;
@Override protected void onCreate (Bundle savedInstanceState) super .onCreate(savedInstanceState) ; setContentView(R.layout. activity_main ) ;
initView() ; Log. e ( "nsc" , "getStringFromNative()=" +getStringFromNative()) ;
以上是关于android jni使用的主要内容,如果未能解决你的问题,请参考以下文章