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使用的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用 jni Demo示例

Android 使用 jni Demo示例

Android JNI编程—JNI基础

Android学习JNI,使用JNI实现字符串加密

Android JNI编程——使用AndroidStudio编写第一个JNI程序

Android Studio使用JNI