По причине того что у меня нет компьютера с архитектурой x86_64 я вынужден собирать программы вручную. У меня получилось собрать hello-jni из примеров google Но собрать другие примеры нет. Как мне кажется не работает импорт libandroid.so и liblog.so. Я пробовал писать логи но в adb logcat ничего не было.
Я использовал следующие команды:
для получения файла заголовков
javah -classpath $ANDROID_JAR/android.jar:obj/ -d jni com.example.demo.DemoActivity
и для того чтобы собрать
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64/
gcc -Wl,-rpath=$HOME/sdk/libs/arch-arm64/usr/lib/ -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -I"/root/sdk/android-ndk-r20/sysroot/usr/include/" -L$HOME/sdk/android-ndk-r20/platforms/android-28/arch-arm64/usr/lib/ -landroid -llog -fPIC hello-jni.c -shared -o libhello-jni.so -Wl,-soname -Wl,--no-whole-archive -Wl,--no-undefined -Wl,-z,noexecstack
если кому надо hello-jni.c
#include <string.h>
#include <jni.h>
#include <android/log.h>
#include "com_example_demo_DemoActivity.h"
JNIEXPORT jstring JNICALL Java_com_example_demo_DemoActivity_stringFromJNI( JNIEnv* env,
jobject thiz )
{
#define LOG_TAG "mtjni"
#define DPRINTF(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,"ddddddddddddddddddddddddddd")
#define IPRINTF(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,"iiiiiiiiiiiiiiiiiiiiiiiiiiii")
#define EPRINTF(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,"eeeeeeeeeeeeeeeeeeeee")
return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI ");
}
строку оно возвращает не работает логирования
заранее благодарю