Как упоминалось выше, я использую читателя 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?
Как упоминалось выше, я использую читателя PN532 для подключения его с приложением. Использование библиотеки Libnfc 'As As JNI я создал библиотеку PN532_UART в качестве общей библиотеки для «ARM», чтобы использовать приложение в плате Distribution Distribution Linux.[code] 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
// 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. [/code] Есть ли какой-нибудь 32-разрядный скомпилированный метод библиотеки, потому что я пытался так много методов построить 32-разрядную общую библиотеку, чтобы запустить ее в эмуляторе Android Studio?
Как упоминалось выше, я использую читателя PN532 для подключения его с приложением.
Использование библиотеки Libnfc 'As As JNI я создал библиотеку PN532_UART в качестве общей библиотеки для «ARM», чтобы использовать приложение в плате Distribution...
Как упоминалось выше, я использую читателя PN532 для подключения его с приложением.
Использование библиотеки Libnfc 'As As JNI я создал библиотеку PN532_UART в качестве общей библиотеки для «ARM», чтобы использовать приложение в плате Distribution...
Как упоминалось выше, я использую читателя PN532 для подключения его с приложением.
Использование библиотеки Libnfc 'As As JNI я создал библиотеку PN532_UART в качестве общей библиотеки для «ARM», чтобы использовать приложение в плате Distribution...
Как упоминалось выше, я использую читателя PN532 для подключения его с приложением.
Использование библиотеки Libnfc 'As As JNI я создал библиотеку PN532_UART в качестве общей библиотеки для «ARM», чтобы использовать приложение в плате Distribution...
Как упоминалось выше, я использую читателя PN532 для подключения его с приложением.
Использование библиотеки Libnfc 'As As JNI я создал библиотеку PN532_UART в качестве общей библиотеки для «ARM», чтобы использовать приложение в плате Distribution...