在我的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文件中调用该函数?