Использование библиотеки JNI (LIBNFC) для использования читателя PN532 в приложении Android. Не удается построить 32-разAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Использование библиотеки JNI (LIBNFC) для использования читателя PN532 в приложении Android. Не удается построить 32-раз

Сообщение Anonymous »

Как упоминалось выше, я использую читателя PN532 для подключения его с приложением.
Использование библиотеки Libnfc 'As As JNI я создал библиотеку PN532_UART в качестве общей библиотеки для «ARM», чтобы использовать приложение в плате Distribution Distribution Linux.

Код: Выделить всё

public class NfcNativeInteractive {
static {
System.loadLibrary("pn532_jni");
}

public native int initialize();
public native byte[] readTag();
public native boolean writeTag(byte[] data);
// Add other native methods as needed
}
< /code>
Правильный метод загрузки библиотеки?#include 
#include 
#include 

#define LOG_TAG "PN532_JNI"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)

extern "C"
JNIEXPORT jint JNICALL
Java_com_example_mynfcapp_NfcNativeInteractive_initialize(JNIEnv *env, jobject thiz) {
LOGI("Initializing PN532...");
// Replace this with actual init logic
return 1;  // Return 1 on success
}

extern "C"
JNIEXPORT jbyteArray JNICALL
Java_com_example_mynfcapp_NfcNativeInteractive_readTag(JNIEnv *env, jobject thiz) {
LOGI("Reading from tag...");
// Dummy data (replace with real tag data)
const uint8_t dummy_data[] = {0x01, 0x02, 0x03, 0x04};
jbyteArray result = env->NewByteArray(sizeof(dummy_data));
env->SetByteArrayRegion(result, 0, sizeof(dummy_data), reinterpret_cast(dummy_data));
return result;
}

extern "C"
JNIEXPORT jboolean JNICALL
Java_com_example_mynfcapp_NfcNativeInteractive_writeTag(JNIEnv *env, jobject thiz, jbyteArray data) {
LOGI("Writing to tag...");
jsize length = env->GetArrayLength(data);
jbyte *nativeData = env->GetByteArrayElements(data, nullptr);

// Log the data size (for debug)
LOGI("Data size: %d", length);

// write `nativeData` to the tag here

env->ReleaseByteArrayElements(data, nativeData, JNI_ABORT); // No changes, so discard
return JNI_TRUE; // Return true on success
}
< /code>
Я построил файл '.so' из Libnfc, который скрепится с «ARM» на основе использования на плате Linux Distro. < /p>
autoreconf -vif
./configure --prefix=/usr --with-drivers=pn532_uart
make
sudo make install
python3 "/path/to/ndk/make_standalone_toolchain.py" --arch arm --api 21 --install-dir $HOME/android-toolchain
export PATH=$HOME/android-toolchain/bin:$PATH
export CC=arm-linux-androideabi-clang
export LD=arm-linux-androideabi-ld
export AR=arm-linux-androideabi-ar
export AS=arm-linux-androideabi-as
export RANLIB=arm-linux-androideabi-ranlib
export STRIP=arm-linux-androideabi-strip
make distclean  # clean old build if any
./configure --host=arm-linux-androideabi --prefix=$HOME/libnfc-android-install
make -j4
make install
< /code>
Все вышеупомянутые работы работают и могут использоваться в приложении. Ошибка показывает < /p>
java.lang.UnsatisfiedLinkError:dlopen failed: "/data/app/com.example.mynfcapp-n6-6QN8EZJGNK0WbBtF7Eg==/lib/x86/libnfc.so" is 64-bit instead of 32-bit.
Есть ли какой-нибудь 32-разрядный скомпилированный метод библиотеки, потому что я пытался так много методов построить 32-разрядную общую библиотеку, чтобы запустить ее в эмуляторе Android Studio?

Подробнее здесь: https://stackoverflow.com/questions/796 ... tion-canno
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»