使用NDK保护API密钥

问题描述 投票:1回答:1

我正在尝试使用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)
  1. 在“ 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” ...

    android security android-ndk
    1个回答
    0
    投票

    我们如何从gradle.build或android mainifest加载它?

    © www.soinside.com 2019 - 2024. All rights reserved.