gpt4 book ai didi

java - Android NDK 是否加密编译的 c++ 文件?

转载 作者:行者123 更新时间:2023-12-01 18:31:55 26 4
gpt4 key购买 nike

我的 Android 项目中有一个 C++ 文件 (native-lib.cpp):

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

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

当我构建项目并解压 apk 时,该文件将被编译为二进制文件:lib/x86/libnative-lib.so

如果我随后尝试将此文件导入并使用到另一个项目中,则会收到错误:

public class Main {

static {
try {
System.load("/Users/u/Playground/KeysNative/app-debug/lib/x86/libnative-lib.so");
} catch (UnsatisfiedLinkError e) {
System.err.println(e);
System.exit(1);
}
}
}

java.lang.UnsatisfiedLinkError: /Users/u/Playground/KeysNative/app-debug/lib/x86/libnative-lib.so: dlopen(/Users/u/Playground/KeysNative/app-debug/lib/x86/libnative-lib.so, 1): no suitable image found. Did find: /Users/u/Playground/KeysNative/app-debug/lib/x86/libnative-lib.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 /Users/u/Playground/KeysNative/app-debug/lib/x86/libnative-lib.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00

问题:这些文件是否使用要编译的项目中的 java keystore 或任何其他类型的签名?

最佳答案

您无法从移动设备上的计算机文件系统加载 native 汇编。

这应该已经足以链接程序集:

static {
try {
System.loadLibrary("libnative-lib");
} catch (UnsatisfiedLinkError e) {
Log.e(LOG_TAG, "" + e.getMessage());
}
}

但是,如果您只有 x86 程序集,则这只适用于 x86 Android 模拟器。

关于java - Android NDK 是否加密编译的 c++ 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60148857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com