mobile optimized. android ndk (ru)
TRANSCRIPT
Плюсы
• Быстро• Кроссплатформенно
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Минусы• Поддержка в IDE?• Отладка?• Порог вхождения• Сообщество• Приложения текут
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Возможности
• Тяжелые фичи• Обработка медиа• Базы данных
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Недостатки/Проблемы
• Компиляция зависимостей• c/cpp
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Хитрости
Генерация хидер файла* javac CppUtils.java* javah -jni com.example.package_name.CppUtils
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
ХитростиГенерация хидер файла
private native byte[] parseTemplate(String path, String context);
/** Class: com_example_package_name_CppUtils * Method: parseTemplate * Signature: (Ljava/lang/String;Ljava/lang/String;)[B*/JNIEXPORT jbyteArray JNICALL Java_com_rubyroid_neusis_andliquid_LiquidUtils_parseTemplate (JNIEnv *, jobject, jstring, jstring);
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Хитрости
Генерация сигнатуры метода
* javac CppUtils.java* javap -s -p CppUtils
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
ХитростиГенерация сигнатуры метода
public static String readModelCallback(String path, HashMap params) { return "";}
(Ljava/lang/String;Ljava/util/HashMap;)Ljava/lang/String
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
ХитростиВызов Java метода
jclass clazz = env->GetObjectClass(obj);
jmethodID mid = env->GetStaticMethodID(clazz, "readModelCallback", “(Ljava/lang/String;Ljava/util/HashMap;)Ljava/lang/String");
jobject result = env->CallStaticObjectMethod(clazz, mid, jpath, hashMap);
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Полезные библиотеки
coffeecatch - Tiny native POSIX signal catcher
LevelDB - Fast key-value storage library
Unqlite - Transaction Embedded Database Engine
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Зависимые библиотеки и архитектуры
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx
Не бойтесь использовать NDK!
NDK - Как это делать более эффективно Худницкий Владимир fb.com/xputnikx