使用NDK在Android中隐藏静态字符串:如何仅从.so文件中提取字符串

时间:2017-04-21 13:23:21

标签: android android-ndk java-native-interface

在我的Android应用程序中,我希望通过撤消应用程序来保护一些静态字符串。我读到这样做的一种方法是将它们放入c ++代码并将它们本地加载到Android项目中。

所以我创建了一个c ++文件和一个CMake脚本。 c ++文件:

#include <jni.h>
#include <string>

extern "C"
JNIEXPORT jstring JNICALL
Java_package_name_NdkUtils_methodForStringToBeProtected(
        JNIEnv *env, jobject /* this */) {
    std::string result = "secretStaticStringHere";
    return env->NewStringUTF(result.c_str());
}

和CMakeLists.txt:

cmake_minimum_required(VERSION 3.4.1)
add_library(native-lib SHARED src/main/cpp/native-lib.cpp )
find_library( og-lib log )
target_link_libraries( native-lib ${log-lib} )

在Android中,我现在在本机调用中取得了该字符串。 我想得到的是c ++隐藏在构建中。我只想包含so文件。

所以我进入了生成的apk,我能够提取libnative-lib.so文件。我将so文件集成在aap / src / main / jniLibs文件夹中。但是当我删除c ++源代码时,我再也无法访问methodForStringToBeProtected-method了。我现在要做什么才能从so文件中调用该函数?

0 个答案:

没有答案