Задать вопрос

Какие команды использует ndk-build для сборки программ?

По причине того что у меня нет компьютера с архитектурой 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 ");
}

строку оно возвращает не работает логирования

заранее благодарю
  • Вопрос задан
  • 138 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Skyrimus
Используй CMake, работа с ndk - прошлый век, примеров как настраивать сборку под cmake уйма на гитхабе ДШ
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы