我正在尝试使用NDK存储api密钥,但是我尝试了许多方法,总是出现许多错误我将分享我的代码,请任何机构帮助我。.
我将分享我遵循的步骤..
1在src / main下创建一个文件夹“ jni”>
2在“ jni”文件夹下创建并添加“ Android.mk”文件,其内容如下:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := keys LOCAL_SRC_FILES := keys.c include $(BUILD_SHARED_LIBRARY)
在“ jni”文件夹下创建并添加“ Application.mk”文件,其内容如下:
APP_ABI := all
创建C / C ++文件“ keys.c”,并将其添加到“ jni”文件夹下。向其中添加以下内容:
# include < jni.h >
JNIEXPORT jstring JNICALL
Java_com_mytest_aes_MainActivity_getNativeKey1(JNIEnv *env, jobject instance) {
return (*env)->NewStringUTF(env, "haii");
}
在您要访问键的活动(在我们的示例中为MainActivity)中,创建一个静态块并加载库“键”,例如:
static
{
System.loadLibrary("keys");
}
声明类型为native
的两个成员函数,以从C / C ++文件访问密钥。因为我们已经存储了2个键,所以我们将声明2个函数:
public native String getNativeKey1();
对于演示,请访问代码中的键,如:
String key1 = new String(Base64.decode(getNativeKey1(),Base64.DEFAULT));
((TextView)findViewById(R.id.key)).setText("Key1-->"+key1);
现在,我们的C / C ++本机文件和Java代码已准备就绪。但是要使用NDK编译或构建本机版本,我们需要在gradle文件中添加条目:
android { ..... buildTypes { ..... } externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } } }
我们需要提供“ Android.mk”文件的路径。
现在,同步并构建项目。确保已在模块设置中正确指出了NDK路径。
我正在尝试使用NDK存储api密钥,但是我尝试了许多方法,总是出现很多错误,我将共享我的代码,请任何机构帮助我。我将共享我遵循的步骤.. 1创建一个文件夹“ jni” ...
我们如何从gradle.build或android mainifest加载它?