2018-12-28 共享库so 生成调用六步走

1.生成调用jni文件

package com.lu.myjni.so;

public class MyJni {

static {

System.loadLibrary("JniMy");

}

public native static String getMyName();

}

2.javac -h  *.java

生成jni头文件。

#include

/* Header for class com_lu_myjni_so_MyJni */

#ifndef _Included_com_lu_myjni_so_MyJni

#define _Included_com_lu_myjni_so_MyJni

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class:    com_lu_myjni_so_MyJni

* Method:    getMyName

* Signature: (Ljava/lang/String;)Ljava/lang/String;

*/

JNIEXPORT jstring JNICALL Java_com_lu_myjni_so_MyJni_getMyName

(JNIEnv *, jclass);

#ifdef __cplusplus

}

#endif

#endif

3.根据jni头文件实现jni 源代码文件

JNIEXPORT jstring JNICALL Java_com_lu_myjni_so_MyJni_getMyName

(JNIEnv *env, jobject obj){

return (*env)->NewStringUTF(env,"Hello Jni luchunjun !!!");

}

3.Android.mk

配置共享库的源代码文件,共享库的名称。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := JniMy

LOCAL_SRC_FILES :=    com_lu_myjni_so_MyJni.c

include $(BUILD_SHARED_LIBRARY)

4.Application.mk 

配置so的cpu架构

APP_ABI := all

5.ndk-bulid 命令编译文件

输出如下

F:\myjni\jni>ndk-build

[armeabi-v7a] Compile thumb  : JniMy <= com_lu_myjni_so_MyJni.c

6.adb shell ls -l /data/data/com.example.something/lib/ 查看apk中是否存在so文件。

C:\Users\admin>adb shell ls -l /data/data/com.lu.myjni/lib/

-rwxr-xr-x system  system      5088 1979-12-30 23:00 libJniMy.so

你可能感兴趣的:(2018-12-28 共享库so 生成调用六步走)