Size: a a a

Android NDK (C++) — русскоговорящее сообщество

2019 January 22

o

oles in Android NDK (C++) — русскоговорящее сообщество
Упс не дочитал
источник

I

Ivansuper in Android NDK (C++) — русскоговорящее сообщество
Zhanat Suleimenov
В первом сообщении затрагивал этот вариант
Аутентично как раз если есть некоторый интерфейс для открытия ссылок, за которым будет скрываться код открытия ссылки конкретно под джавой
источник

I

Ivansuper in Android NDK (C++) — русскоговорящее сообщество
Если тобой все равно движет нечто необъяснимое, то вперед с написанием. Вряд ли семпл готовый найдется. Поэтому начинаешь с чего нибудь типа: https://mobile.developer.com/java/data/manipulating-java-objects-in-native-code.html
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
поидее можно вообще напрямую в устройство биндера нужое сообщение послать, правда вероятно это будет не очень портабельно
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
зато нативно
источник

I

Ivansuper in Android NDK (C++) — русскоговорящее сообщество
Имхо на андроиде си не для этого вообще, и делать там такие операции себе дороже
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
на ассемблере!
источник

I

Ivansuper in Android NDK (C++) — русскоговорящее сообщество
Ему придется в натив толкать контекст актуальной активности для запуска другой. Это еще хуже чем оставлять контексты в джава статиках
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
вот я и говорю сразу в устройство пишешь и не думаешь о всяких там контекстах
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
😁
источник

I

Ivansuper in Android NDK (C++) — русскоговорящее сообщество
Я на столько старался это обходить, что даже уже и не помню что будет если отдать в JNI джава объект и забыть все ссылки на него в джава коде
источник

o

oles in Android NDK (C++) — русскоговорящее сообщество
ну если в нативе напрямую ссылку на объект не полуить у ява машины то скорее всего UB UAF и другие сокращения
источник

ZS

Zhanat Suleimenov in Android NDK (C++) — русскоговорящее сообщество
Ivansuper
Я на столько старался это обходить, что даже уже и не помню что будет если отдать в JNI джава объект и забыть все ссылки на него в джава коде
Я контекст при инициализации сервиса отдаю в натив и все нормально работает
источник

ZS

Zhanat Suleimenov in Android NDK (C++) — русскоговорящее сообщество
Нашел такой вариант, буду тестировать
JNIEnv* env;
state->activity->vm->AttachCurrentThread(&env, 0);

const char *adr = "https://play.google.com/store/apps/details?id=com.example.app";
jstring sURL = env->NewStringUTF(adr);

jclass cUri = env->FindClass("android/net/Uri");
jmethodID mParse = env->GetStaticMethodID(cUri, "parse", "(Ljava/lang/String;)Landroid/net/Uri;");
jobject oUri = env->CallStaticObjectMethod(cUri, mParse, sURL);

jclass cIntent = env->FindClass("android/content/Intent");
jmethodID mNew = env->GetMethodID(cIntent, "<init>", "(Ljava/lang/String;)V");
jfieldID fACTION_VIEW = env->GetStaticFieldID(cIntent, "ACTION_VIEW", "Ljava/lang/String;");
jstring sACTION_VIEW = (jstring)(env->GetStaticObjectField(cIntent, fACTION_VIEW));
jobject oIntent = env->NewObject(cIntent, mNew, sACTION_VIEW);
jmethodID mSetData = env->GetMethodID(cIntent, "setData", "(Landroid/net/Uri;)Landroid/content/Intent;");
env->CallObjectMethod(oIntent, mSetData, oUri);

jclass cNativeActivity = env->FindClass("android/app/NativeActivity");
jmethodID mStartActivity = env->GetMethodID(cNativeActivity, "startActivity", "(Landroid/content/Intent;)V");
env->CallVoidMethod(state->activity->clazz, mStartActivity, oIntent);

state->activity->vm->DetachCurrentThread();
источник
2019 January 24

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
Ivansuper
Ему придется в натив толкать контекст актуальной активности для запуска другой. Это еще хуже чем оставлять контексты в джава статиках
jclass cNativeActivity = env->FindClass("android/app/NativeActivity");
jmethodID mStartActivity = env->GetMethodID(cNativeActivity, "startActivity", "(Landroid/content/Intent;)V");
env->CallVoidMethod(state->activity->clazz, mStartActivity, oIntent);

Этот код и предполагает, что "контекст актуальной активности" протолкнут в state->activity->clazz
источник

IP

Ivan Ponomarev in Android NDK (C++) — русскоговорящее сообщество
Без контекста Activity можно прокинуть контекст Application... Но тогда нужно будет не забыть устанавливать FLAG_ACTIVITY_NEW_TASK в Intent.
источник

I

Ivansuper in Android NDK (C++) — русскоговорящее сообщество
Ivan Ponomarev
Без контекста Activity можно прокинуть контекст Application... Но тогда нужно будет не забыть устанавливать FLAG_ACTIVITY_NEW_TASK в Intent.
Это спасибо конечно, но я понимаю это и так
источник
2019 January 27

M

Mafioznik in Android NDK (C++) — русскоговорящее сообщество
Добрый день скачал я официальный клиент телеграма с опен сорса и вот такая вот ошибка, может кто сталкивался и знает как фиксить?

Error while executing process D:\Programs\SDK_Android\ndk-bundle\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=D:\Telegram\TMessagesProj\jni\Android.mk NDK_APPLICATION_MK=D:\Telegram\TMessagesProj\jni\Application.mk APP_ABI=x86_64 NDK_ALL_ABIS=x86_64 NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=D:/Telegram/TMessagesProj/build/intermediates/ndkBuild/afat/debug/obj NDK_LIBS_OUT=D:\Telegram\TMessagesProj\build\intermediates\ndkBuild\afat\debug\lib NDK_APPLICATION_MK:=jni/Application.mk APP_PLATFORM:=android-16 -j8 APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n}
источник

M

Mafioznik in Android NDK (C++) — русскоговорящее сообщество
Выполнил отдельно команду получил вот такое

process_begin: CreateProcess(NULL, "", ...) failed.
D:/Programs/SDK_Android/ndk-bundle/build//../build/core/add-application.mk:49: jni/Application.mk: No such file or directory
Android NDK: D:\Telegram\TMessagesProj\jni\Android.mk:avutil: LOCAL_MODULE_FILENAME should not include file extensions
Android NDK: D:\Telegram\TMessagesProj\jni\Android.mk:avutil: LOCAL_MODULE_FILENAME must not contain a file extension
D:/Programs/SDK_Android/ndk-bundle/build//../build/core/prebuilt-library.mk:59: *** Android NDK: Aborting    .  Stop.
источник

M

Mafioznik in Android NDK (C++) — русскоговорящее сообщество
вот так удобнее возможно
источник