У меня есть файл C ++ в моем проекте Android (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): подходящее изображение не найдено , Обнаружил: /Users/u/Playground/KeysNative/app-debug/lib/x86/libnative-lib.so: неизвестный тип файла, первые восемь байтов: 0x7F 0x45 0x4 C 0x46 0x01 0x01 0x01 0x00 / Users / u / Playground / KeysNative / app-debug / lib / x86 / libnative-lib.so: неизвестный тип файла, первые восемь байтов: 0x7F 0x45 0x4 C 0x46 0x01 0x01 0x01 0x00
Вопрос : Используют ли эти файлы хранилище ключей java в компилируемом проекте или какую-либо другую подпись?