SlideShare une entreprise Scribd logo
1  sur  51
Télécharger pour lire hors ligne
Разработка приложений для Android на C++


Берёза Юрий
программист
Shturmann

YaC, Москва, 19 сентября 2011 года
                                     1
С чего начать

• Linux
• Java
• Eclipse
• C++
• GCC
• GDB
• Android SDK
                                2
3
4
Что такое NDK?
    http://developer.android.com/sdk/ndk/index.html


• Заголовочные файлы и библиотеки
• GCC компилятор
• Система сборки приложений
• Набор дополнительных утилит

                                                      5
Создание проекта

• Запустить Eclipse
• Указать в настройках
  путь к SDK
• Запустить мастер
  создания Android
  приложения


                                 6
Sequoyah Android Native Code Support
    http://www.eclipse.org/sequoyah/




                                       7
Добавляем поддержку NDK




                          8
Application.mk


APP_MODULES   :=   YaC
APP_CFLAGS    :=   -DDEBUG -D__ANDROID__
APP_OPTIM     :=   debug
APP_STL       :=   gnustl_static
APP_ABI       :=   armeabi armeabi-v7a




                                           9
Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE      :=   YaC
LOCAL_CFLAGS      :=   -I$(LOCAL_PATH)/inc
LOCAL_SRC_FILES   :=   YaC.cpp
LOCAL_LDLIBS      :=   -llog

include $(BUILD_SHARED_LIBRARY)

                                             10
Поддержка расширенных инструкций
              NEON
http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html


                      Anroid.mk

 ifeq ($TARGET_ARCH_ABI), armeabi-v7a)
 ! LOCAL_ARM_NEON := true
 ! LOCAL_ARM_MODE := arm
 endif


                                                         11
Или

#include <cpu-features.h>

void do_something()
{
  if ((android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM &&
      (android_getCpuFeatures() & ANDROID_CPU_FETURE_NEON))
    {
       do_something_with_neon();
    }
}



                                                     12
JNI. Java
package com.shturmann.yac;

public class YaCActivity {

    private native void doSomething();
    static {
        System.loadLibrary("YaC");
    }
}

                                         13
JNI. Java
package com.shturmann.yac;

public class YaCActivity {

    private native void doSomething();
    static {
        System.loadLibrary("YaC");
    }
}

                                         14
JNI. Java
package com.shturmann.yac;

public class YaCActivity {

    private native void doSomething();
    static {
        System.loadLibrary("YaC");
    }
}

                                         15
JNI. Java
package com.shturmann.yac;

public class YaCActivity {

    private native void doSomething();
    static {
        System.loadLibrary("YaC");
    }
}

                                         16
JNI

Java   +   /usr/bin/javah   =   C




                                    17
JNI.C++


JNIEXPORT void JNICALL
Java_com_shturmann_yac_YaCActivity_doSomething
(JNIEnv * env, jobject obj)
{
    ...
}




                                             18
JNI.C++


JNIEXPORT void JNICALL
Java_com_shturmann_yac_YaCActivity_doSomething
(JNIEnv * env, jobject obj)
{
    ...
}




                                             19
JNIEnv
JavaVM * gJVM = 0;

JNIEXPORT void JNICALL
Java_com_shturmann_yac_YaCActivity_init
(JNIEnv * env, jobject obj)
{
  gJVM = (*env)->GetJavaVM(env, &gJVM);
}

void someInternalFunction()
{
    JNIEnv * env = 0;
    (*gJVM)->AttachCurrentThread(gJVM, &env, 0);
}                                            20
Локальные/глобальные ссылки

jclass * gYac = 0;

JNIEXPORT void JNICALL
Java_com_shturmann_yac_YaCActivity_doSomething
(JNIEnv * env, jobject obj)
{
    jclass yac = (*env)->GetObjectClass(env, obj);
    gYac = (*env)->NewGlobalRef(env, yac);
}


                                             21
JNIEnv::FindClass
jclass gYac = 0;

JNIEXPORT void JNICALL
Java_com_shturmann_yac_YaCActivity_init
(JNIEnv * env, jobject obj)
{
    jclass yac = (*env)->FindClass(env,
               «com/shturmann/yac/YaCActivity»);
    gYac = (*env)->NewGlobalRef(env, yac);
}

                                             22
JNIEnv::ExceptionCheck

JNIEXPORT void JNICALL
Java_com_shturmann_yac_YaCActivity_init
(JNIEnv * env, jobject obj)
{
    ...
    if ( !(*env)->ExceptionCheck(env) ) {
        ...
    }
}


                                            23
JNIEnv::PushLocalFrame/PopLocalFrame

JNIEXPORT void JNICALL
Java_com_shturmann_yac_YaCActivity_init
(JNIEnv * env, jobject obj)
{
    (*env)->PushLocalFrame(env, 100500);
    ...
    (*env)->PopLocalFrame(env, NULL);
}



                                           24
JNI




http://java.sun.com/docs/books/jni/download/jni.pdf


                                               25
Дополнительные библиотеки

• OpenGL ES 1.1 / OpenGL ES 2.0
• OpenSL
• C++ и wchar_t
  • http://www.crystax.net/ru/android/ndk

• Boost
  • https://github.com/MysticTreeGames/Boost-for-Android

• CURL
                                                           26
Запускаем сборку приложения




• ndk-build
• ant install

                                    27
28
Отладка
            Android 2.3 Gingerbred

• ndk-gdb                         • Eclipse




      http://mitya.pp.ru/gdb/gdb_toc.html     29
Разбираемся с ошибками
        ********** Crash dump: **********
Build fingerprint: 'google/soju/crespo:2.3.4/
GRJ22/121341:user/release-keys'
pid: 7348, tid: 7348 >>> com.shturmann.yac <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR),
fault addr 00000000
Stack frame #00 pc 00000716 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #01 pc 00000740 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #02 pc 00017e34 /system/lib/libdvm.so
Stack frame #03 pc 0004968c /system/lib/libdvm.so
Stack frame #04 pc 0004ee62 /system/lib/libdvm.so
                                             30
Разбираемся с ошибками
        ********** Crash dump: **********
Build fingerprint: 'google/soju/crespo:2.3.4/
GRJ22/121341:user/release-keys'
pid: 7348, tid: 7348 >>> com.shturmann.yac <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR),
fault addr 00000000
Stack frame #00 pc 00000716 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #01 pc 00000740 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #02 pc 00017e34 /system/lib/libdvm.so
Stack frame #03 pc 0004968c /system/lib/libdvm.so
Stack frame #04 pc 0004ee62 /system/lib/libdvm.so
                                             31
Разбираемся с ошибками
        ********** Crash dump: **********
Build fingerprint: 'google/soju/crespo:2.3.4/
GRJ22/121341:user/release-keys'
pid: 7348, tid: 7348 >>> com.shturmann.yac <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR),
fault addr 00000000
Stack frame #00 pc 00000716 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #01 pc 00000740 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #02 pc 00017e34 /system/lib/libdvm.so
Stack frame #03 pc 0004968c /system/lib/libdvm.so
Stack frame #04 pc 0004ee62 /system/lib/libdvm.so
                                             32
Разбираемся с ошибками
        ********** Crash dump: **********
Build fingerprint: 'google/soju/crespo:2.3.4/
GRJ22/121341:user/release-keys'
pid: 7348, tid: 7348 >>> com.shturmann.yac <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR),
fault addr 00000000
Stack frame #00 pc 00000716 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #01 pc 00000740 /data/data/
com.shturmann.yac/lib/libYaC.so
Stack frame #02 pc 00017e34 /system/lib/libdvm.so
Stack frame #03 pc 0004968c /system/lib/libdvm.so
Stack frame #04 pc 0004ee62 /system/lib/libdvm.so
                                             33
Разбираемся с ошибками


     • addr2line
     • objdump
     • ndk-stack

                         34
Разбираемся с ошибками




$ adb logcat -d | ndk-stack -sym ~/src/obj/local/armeabi




                                                  35
Разбираемся с ошибками

Stack frame #00 pc 00000716
/data/data/com.shturmann.yac/lib/libYaC.so:
Routine get_a in /home/ybereza/src/YaC/yac/jni/YaC.cpp:13

Stack frame #01 pc 00000740
/data/data/com.shturmann.yac/lib/libYaC.so:
Routine Java_com_shturmann_yac_YaCActivity_doSomething
in /home/ybereza/src/YaC/yac/jni/YaC.cpp:24




                                                   36
Разбираемся с ошибками

Stack frame #00 pc 00000716
/data/data/com.shturmann.yac/lib/libYaC.so:
Routine get_a in /home/ybereza/src/YaC/yac/jni/YaC.cpp:13

Stack frame #01 pc 00000740
/data/data/com.shturmann.yac/lib/libYaC.so:
Routine Java_com_shturmann_yac_YaCActivity_doSomething
in /home/ybereza/src/YaC/yac/jni/YaC.cpp:24




                                                   37
Разбираемся с ошибками

Stack frame #00 pc 00000716
/data/data/com.shturmann.yac/lib/libYaC.so:
Routine get_a in /home/ybereza/src/YaC/yac/jni/YaC.cpp:13

Stack frame #01 pc 00000740
/data/data/com.shturmann.yac/lib/libYaC.so:
Routine Java_com_shturmann_yac_YaCActivity_doSomething
in /home/ybereza/src/YaC/yac/jni/YaC.cpp:24




                                                   38
Ловим сигналы самостоятельно
void install_sighandler()
{
    struct sigaction default_action;

    struct sigaction sa;
    memset(&sa, 0, sizeof(struct sigaction));

    sa.sa_flags     = SA_SIGINFO;
    sa.sa_sigaction = linux_sig_handler;
    sigemptyset(&sa.sa_mask);

    sigaction(SIGSEGV, &sa, &default_handler)
}
                                                39
Ловим сигналы самостоятельно
void install_sighandler()
{
    struct sigaction default_action;

    struct sigaction sa;
    memset(&sa, 0, sizeof(struct sigaction));

    sa.sa_flags     = SA_SIGINFO;
    sa.sa_sigaction = linux_sig_handler;
    sigemptyset(&sa.sa_mask);

    sigaction(SIGSEGV, &sa, &default_handler)
}
                                                40
Ловим сигналы самостоятельно


void linux_sig_handler
(int sig, struct siginfo_t* info, void* context)
{
    LOG_FLUSH;
    default_handler.sa_handler(sig);
}




                                                   41
Ловим сигналы самостоятельно


void linux_sig_handler
(int sig, struct siginfo_t* info, void* context)
{
    LOG_FLUSH;
    default_handler.sa_handler(sig);
}




                                                   42
Ловим сигналы самостоятельно
#include <asm/sigcontext.h>

struct ucontext
{
    unsigned long uc_flags;
    struct ucontext *uc_link;
    stack_t uc_stack;
    sigcontext uc_mcontext;
}
                                43
Ловим сигналы самостоятельно
#include <asm/sigcontext.h>

struct ucontext
{
    unsigned long uc_flags;
    struct ucontext *uc_link;
    stack_t uc_stack;
    sigcontext uc_mcontext;
}
                                44
Ловим сигналы самостоятельно




/proc/<id вашего процесса>/maps




                                  45
Где взять




https://bitbucket.org/ybereza/yac/src




                                        46
Профилирование




                 47
Профилирование




     Но!         48
Профилирование
DDMS Native Heap
  ~/.android/ddms.cfg
    “native=true”
 :$ ddms      Из корня вашего проекта



 :$ emulator -help-memcheck
 :$ emulator -memcheck 1


                                        49
Для чего все это нужно?




                          50
Берёза Юрий
Shturmann

ybereza@gmail.com


                    51

Contenu connexe

Tendances

Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutinescorehard_by
 
DI в C++ тонкости и нюансы
DI в C++ тонкости и нюансыDI в C++ тонкости и нюансы
DI в C++ тонкости и нюансыPlatonov Sergey
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...corehard_by
 
Аскетичная разработка браузера
Аскетичная разработка браузераАскетичная разработка браузера
Аскетичная разработка браузераPlatonov Sergey
 
Unit tests final
Unit tests finalUnit tests final
Unit tests finalcorehard_by
 
Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?Andrey Karpov
 
What's new in java.util.concurrent
What's new in java.util.concurrentWhat's new in java.util.concurrent
What's new in java.util.concurrentDmitry Chuyko
 
Тестируй как PRO, или учим тесты быть умнее
Тестируй как PRO, или учим тесты быть умнее Тестируй как PRO, или учим тесты быть умнее
Тестируй как PRO, или учим тесты быть умнее ssuser2062cc
 
Григорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммыГригорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммыYandex
 
Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Sergey Platonov
 
Как за час сделать недельную работу
Как за час сделать недельную работуКак за час сделать недельную работу
Как за час сделать недельную работуcorehard_by
 
Lint в помощь / Григорий Джанелидзе (Одноклассники)
Lint в помощь / Григорий Джанелидзе (Одноклассники)Lint в помощь / Григорий Джанелидзе (Одноклассники)
Lint в помощь / Григорий Джанелидзе (Одноклассники)Ontico
 
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013Vladimir Ivanov
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Andrey Karpov
 
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...CodeFest
 
Григорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптерГригорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптерSergey Platonov
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммыPlatonov Sergey
 
Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
Железные счётчики на страже производительности
Железные счётчики на страже производительностиЖелезные счётчики на страже производительности
Железные счётчики на страже производительностиSergey Kuksenko
 

Tendances (20)

Asynchrony and coroutines
Asynchrony and coroutinesAsynchrony and coroutines
Asynchrony and coroutines
 
DI в C++ тонкости и нюансы
DI в C++ тонкости и нюансыDI в C++ тонкости и нюансы
DI в C++ тонкости и нюансы
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
 
Аскетичная разработка браузера
Аскетичная разработка браузераАскетичная разработка браузера
Аскетичная разработка браузера
 
Unit tests final
Unit tests finalUnit tests final
Unit tests final
 
Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?Статический анализ: ищем ошибки... и уязвимости?
Статический анализ: ищем ошибки... и уязвимости?
 
What's new in java.util.concurrent
What's new in java.util.concurrentWhat's new in java.util.concurrent
What's new in java.util.concurrent
 
Тестируй как PRO, или учим тесты быть умнее
Тестируй как PRO, или учим тесты быть умнее Тестируй как PRO, или учим тесты быть умнее
Тестируй как PRO, или учим тесты быть умнее
 
Григорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммыГригорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммы
 
Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++
 
Как за час сделать недельную работу
Как за час сделать недельную работуКак за час сделать недельную работу
Как за час сделать недельную работу
 
Lint в помощь / Григорий Джанелидзе (Одноклассники)
Lint в помощь / Григорий Джанелидзе (Одноклассники)Lint в помощь / Григорий Джанелидзе (Одноклассники)
Lint в помощь / Григорий Джанелидзе (Одноклассники)
 
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
"Invokedynamic: роскошь или необходимость?"@ JavaOne Moscow 2013
 
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
Статический анализ и написание качественного кода на C/C++ для встраиваемых с...
 
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
CodeFest 2011. Крестьянинов М. — Обзор аспектно-ориентированного программиров...
 
Григорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптерГригорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптер
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммы
 
Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщики
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
Железные счётчики на страже производительности
Железные счётчики на страже производительностиЖелезные счётчики на страже производительности
Железные счётчики на страже производительности
 

En vedette

Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...yaevents
 
Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)
Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)
Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)Ontico
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...yaevents
 
Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)
Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)
Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)Ontico
 
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...yaevents
 
Мониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, ЯндексМониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, Яндексyaevents
 
Истории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, ЯндексИстории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, Яндексyaevents
 
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Ontico
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
 

En vedette (9)

Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
 
Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)
Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)
Мониторинг XXI век (Алиса Смирнова, Дима Никоненко, Женя Бурнаев)
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
 
Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)
Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)
Что делать со своим первым миллиардом (Евгений Поляков, Антон Кортунов)
 
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
 
Мониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, ЯндексМониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, Яндекс
 
Истории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, ЯндексИстории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, Яндекс
 
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
Zabbix и миллионы метрик: наилучший опыт масштабного мониторинга / Алексей Вл...
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 

Similaire à Разработка приложений для Android на С++. Юрий Береза, Shturmann

Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Stfalcon Meetups
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Yandex
 
Unsafe: to be or to be removed?
Unsafe: to be or to be removed?Unsafe: to be or to be removed?
Unsafe: to be or to be removed?Alexey Fyodorov
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15MoscowJS
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеSAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеAndrey Karpov
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ontico
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesVictor Login
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonovComputer Science Club
 
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Yandex
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"oelifantiev
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17MoscowJS
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CYandex
 

Similaire à Разработка приложений для Android на С++. Юрий Береза, Shturmann (20)

New Android NDK & JNI
New Android NDK & JNINew Android NDK & JNI
New Android NDK & JNI
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Unsafe: to be or to be removed?
Unsafe: to be or to be removed?Unsafe: to be or to be removed?
Unsafe: to be or to be removed?
 
C++ exceptions
C++ exceptionsC++ exceptions
C++ exceptions
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеSAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в коде
 
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...
 
Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...Jenkins в docker in mesos in ...
Jenkins в docker in mesos in ...
 
GitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с KubernetesGitLab, Prometheus и Grafana с Kubernetes
GitLab, Prometheus и Grafana с Kubernetes
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Java 9: Platform
Java 9: PlatformJava 9: Platform
Java 9: Platform
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
 
JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"JavaScript-модули "из прошлого в будущее"
JavaScript-модули "из прошлого в будущее"
 
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
"Webpack: 7 бед — один ответ" — Денис Измайлов, MoscowJS 17
 
Сергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3CСергей Константинов — Что интересного готовит нам W3C
Сергей Константинов — Что интересного готовит нам W3C
 

Plus de yaevents

Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, ЯндексТема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, Яндексyaevents
 
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...yaevents
 
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексi-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексyaevents
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...yaevents
 
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...yaevents
 
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, ЯндексСканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндексyaevents
 
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, FacebookМасштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebookyaevents
 
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...yaevents
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
 
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...yaevents
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...yaevents
 
В поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, НигмаВ поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, Нигмаyaevents
 
Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...yaevents
 
Поисковая технология "Спектр". Андрей Плахов, Яндекс
Поисковая технология "Спектр". Андрей Плахов, ЯндексПоисковая технология "Спектр". Андрей Плахов, Яндекс
Поисковая технология "Спектр". Андрей Плахов, Яндексyaevents
 
Julia Stoyanovich - Making interval-based clustering rank-aware
Julia Stoyanovich - Making interval-based clustering rank-awareJulia Stoyanovich - Making interval-based clustering rank-aware
Julia Stoyanovich - Making interval-based clustering rank-awareyaevents
 
Mike Thelwall - Sentiment strength detection for the social web: From YouTube...
Mike Thelwall - Sentiment strength detection for the social web: From YouTube...Mike Thelwall - Sentiment strength detection for the social web: From YouTube...
Mike Thelwall - Sentiment strength detection for the social web: From YouTube...yaevents
 
Evangelos Kanoulas — Advances in Information Retrieval Evaluation
Evangelos Kanoulas — Advances in Information Retrieval EvaluationEvangelos Kanoulas — Advances in Information Retrieval Evaluation
Evangelos Kanoulas — Advances in Information Retrieval Evaluationyaevents
 
Ben Carterett — Advances in Information Retrieval Evaluation
Ben Carterett — Advances in Information Retrieval EvaluationBen Carterett — Advances in Information Retrieval Evaluation
Ben Carterett — Advances in Information Retrieval Evaluationyaevents
 
Raffaele Perego "Efficient Query Suggestions in the Long Tail"
Raffaele Perego "Efficient Query Suggestions in the Long Tail"Raffaele Perego "Efficient Query Suggestions in the Long Tail"
Raffaele Perego "Efficient Query Suggestions in the Long Tail"yaevents
 
"Efficient Diversification of Web Search Results"
"Efficient Diversification of Web Search Results""Efficient Diversification of Web Search Results"
"Efficient Diversification of Web Search Results"yaevents
 

Plus de yaevents (20)

Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, ЯндексТема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
 
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
 
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексi-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
 
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
 
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, ЯндексСканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
 
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, FacebookМасштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
 
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
 
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
 
В поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, НигмаВ поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, Нигма
 
Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...
 
Поисковая технология "Спектр". Андрей Плахов, Яндекс
Поисковая технология "Спектр". Андрей Плахов, ЯндексПоисковая технология "Спектр". Андрей Плахов, Яндекс
Поисковая технология "Спектр". Андрей Плахов, Яндекс
 
Julia Stoyanovich - Making interval-based clustering rank-aware
Julia Stoyanovich - Making interval-based clustering rank-awareJulia Stoyanovich - Making interval-based clustering rank-aware
Julia Stoyanovich - Making interval-based clustering rank-aware
 
Mike Thelwall - Sentiment strength detection for the social web: From YouTube...
Mike Thelwall - Sentiment strength detection for the social web: From YouTube...Mike Thelwall - Sentiment strength detection for the social web: From YouTube...
Mike Thelwall - Sentiment strength detection for the social web: From YouTube...
 
Evangelos Kanoulas — Advances in Information Retrieval Evaluation
Evangelos Kanoulas — Advances in Information Retrieval EvaluationEvangelos Kanoulas — Advances in Information Retrieval Evaluation
Evangelos Kanoulas — Advances in Information Retrieval Evaluation
 
Ben Carterett — Advances in Information Retrieval Evaluation
Ben Carterett — Advances in Information Retrieval EvaluationBen Carterett — Advances in Information Retrieval Evaluation
Ben Carterett — Advances in Information Retrieval Evaluation
 
Raffaele Perego "Efficient Query Suggestions in the Long Tail"
Raffaele Perego "Efficient Query Suggestions in the Long Tail"Raffaele Perego "Efficient Query Suggestions in the Long Tail"
Raffaele Perego "Efficient Query Suggestions in the Long Tail"
 
"Efficient Diversification of Web Search Results"
"Efficient Diversification of Web Search Results""Efficient Diversification of Web Search Results"
"Efficient Diversification of Web Search Results"
 

Разработка приложений для Android на С++. Юрий Береза, Shturmann