Android 将重要数据写成本地语言加密

第一步编写需要交互的java类

public class SafetyUtil {
    private static String jwtKey;

    static {
        System.loadLibrary("SafetyFile");
    }

    public static String getKey() {
        if (jwtKey == null) {
            jwtKey = getJwtKey();
        }
        return jwtKey;
    }


    private static native String getJwtKey();
}

第二步进入到这个类的路径下 执行javac SafetyUtil.java
D:\Android\AndroidCode\YN_Finance\app\src\main\java\com\yn\finance\util>javah -jni SafetyUtil.class

第三步 回退到包名外执行javah -jni com.yn.finance.util.SafetyUtil
D:\Android\AndroidCode\YN_Finance\app\src\main\java>javah -jni com.yn.finance.util.SafetyUtil

第四步 创建SafetyFile.c 并编写

#include 

//Java_com_yn_finance_util_SafetyUtil_getJwtKey
JNIEXPORT jstring
JNICALL Java_com_yn_finance_util_SafetyUtil_getJwtKey
  (JNIEnv *env, jclass jobj) {
    return (*env)->NewStringUTF(env,"xxx");//获取加密的key
}

第五步 将生成的.h文件拷贝到jni中 并编写Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
#LOCAL_MODULE表示生成的库的名字,前面的lib和后缀名不用写
LOCAL_MODULE    := SafetyFile
LOCAL_SRC_FILES := SafetyFile.c

include $(BUILD_SHARED_LIBRARY)

编写Application.mk

APP_MODULES := SafetyFile
APP_ABI := all

第六步 进入jni文件夹
D:\Android\AndroidCode\YN_Finance\app\src\main\jni>ndk-build
会生成so文件夹

第七步
app.gradle中配置
defaultConfig{
...
ndk {
abiFilters "armeabi"
}
}

你可能感兴趣的:(Android 将重要数据写成本地语言加密)