рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рджреЗрд╢реА рдПрдВрдбреНрд░реЙрдЗрдб NDK рдХреЛрдб рдбреАрдмрдЧ рдХрд░рдирд╛

рдкрд░рд┐рдЪрдп


рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!

рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдЕрд╕рдВрдЧрдд рдЧрд┐рд░рд╛рд╡рдЯ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рдерд╛, Android NDK рдиреЗ C ++ рдХреЛрдб рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХреА рдереА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╣рд╛рдБ рджреЗрд╢реА рдХреЛрдб рдбрд┐рдмрдЧрд┐рдВрдЧ рдкрд░ рдмрд╣реБрдд рдХрдо рд╕рдордЭрджрд╛рд░ рдЬрд╛рдирдХрд╛рд░реА рдереАред рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдХрдИ рд╢рд╛рдореЗрдВ рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрднреА рднреА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЗрдЯ рдХрд┐рдпрд╛ред рдЕрдм рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрджрд┐ рдЖрдк рдореЗрд░рд╛ рд░рд╛рд╕реНрддрд╛ рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХрд┐рд╕ рддрд░рд╣ рдХреА рд░реЗрдХ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ - рдПрдирдбреЗрдХрдмрдЧрдЯреЗрд╕реНрдЯред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рдХреЛрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдорд╛рд░рддрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛ рдЬрд╛рд╡рд╛ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдПрдХ рдЬрд╛рдиреА рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдХреНрд░рдорд╢рдГ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛрдб, рдЬреЗрдПрдирдЖрдИ рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдФрд░ рдореВрд▓ рдХреЛрдб рд╣реИред

рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдХрд┐рд╕реА рднреА рд╕реНрдкрд░реНрд╢ рдХреЗ рд╕рд╛рде, рдореВрд▓ OnInput рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╕рдордп, рдПрдХ рдЦрд╛рд▓реА DoInit () рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХрд╛рд░реНрдп JaniWrapper.java рд╕реЗ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реНрдереИрддрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ (рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд░реЗрдХ рдкрд░ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред

рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:

package fishrungames.ndkdebugtest;

//...

public class MainActivity extends Activity
{

protected void onCreate(Bundle icicle)
{
super.onCreate(icicle);
JniWrapper.DoInit();
}

public boolean onTouchEvent(MotionEvent event)
{
float x = event.getX();
float y = event.getY();

JniWrapper.OnInput(x, y);
return true;
}

}


рдЬрд╛рдиреА рдЦреЛрд▓ рднреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:

package fishrungames.ndkdebugtest;

public class JniWrapper
{

static {
System.loadLibrary("gnustl_shared");
System.loadLibrary("NdkDebugTestLib");
}

public static void DoInit()
{
//To force libraries to load
}

public static native void OnInput(float x, float y);
}


рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ рдХреЛрдбред рдпрд╣рд╛рдВ, рдПрдХ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЗрдиреА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдорд╛рд░рддрд╛ рд╣реИ:

#include "android_api.h"

void crusher()
{
int *x = 0;
*x = 1;
}

JNIEXPORT void JNICALL Java_fishrungames_ndkdebugtest_JniWrapper_OnInput(JNIEnv * env, jobject obj, float x, float y)
{
crusher();
}


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдВрдЧрд▓реА рдХреЗ рдХрд┐рд╕реА рднреА рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдЧрд┐рд░рдиреЗ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдвреВрдВрдврдирд╛ рдФрд░ рдмреИрдХрдЯреНрд░реЗрд╕ рдХреЛ рджреЗрдЦрдирд╛ рд╣реИред рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЙрдкрдХрд░рдг


рд╣рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:


рдЯреНрд░реЗрдирд┐рдВрдЧ


1) рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбрд┐рдмрдЧреЗрдмрд▓ = "рд╕рд╣реА" рдкреИрд░рд╛рдореАрдЯрд░ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рд╕реЗрдЯ рд╣реИ:
<application android: icon = "@ drawable / ic_menu_template" android: label = "NdkDebugTest" Android: debuggable = "true">

2) Application.mk рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:
APP_OPTIM: = рдбреАрдмрдЧ рдХрд░реЗрдВ
рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░, рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ, рддреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╕рдордп рд╕реНрдЯреНрд░рд┐рдкрд┐рдВрдЧ (рдЕрдкреНрд░рдпреБрдХреНрдд рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛), рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред
Android.mk рдореЗрдВ, -g -gdb -O0 рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ LOCAL_CFLAGS, рдФрд░ -s рдФрд░ -S (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЛ LOCAL_LDLIBS рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

3) рдЙрд╕рдХреЗ рдмрд╛рдж, Cygwin рдЪрд▓рд╛рдПрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХреБрдВрдЬреА NDK_DEBB = 1 рдХреЗ рд╕рд╛рде рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рдХрд░реЗрдВ:
ndk-build NDK_DEBUG = 1

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ gdb.setup рдФрд░ gdbserver рдлрд╛рдЗрд▓реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ libs / <platform> / рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред

4) gdb.setup рдореЗрдВ, рдореВрд▓ рдбреАрдмрдЧрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬрд┐рд╕рдореЗрдВ рд╣реЗрдбрд░ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЗрдбрд░ рдХреЗ рд╕рднреА рдкрде рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрде рдЬреЛрдбрд╝реЗрдВред
рдПрдХ рд░реЗрдХ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╡рд░реНрдг рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрдврд╝рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ UNIX рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред Ndk-build рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХреЗ рд╕рд╛рде gdb.setup рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рд╣реЗрдЬрдирд╛ рдкрдбрд╝рд╛!

рдЬрдм рдбрд┐рдмрдЧрд░ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рд╛рдЗрд▓ (gdb.setup) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ obj / local / <platform> / рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА obj / рд╕реНрдерд╛рдиреАрдп / <рдордВрдЪ> / рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдпрджрд┐ рд╕рднрд╛ рд╕рд╣реА рд╣реЛ рдЧрдИ, рддреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдбреАрдмрдЬрд╝рд╣рд╛рдЗрди рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╕рдВрджреЗрд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреЛрд▓реНрдб рдкрд╛рддреНрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реАрдзреЗ рдПрдирдПрдордЬреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рдВрдЫрд┐рдд рд╕реЛ-рдлрд╛рдЗрд▓ рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП:
nm /obj/local/armeabi/libNdkDebugLib.so
рдПрдВрдбреНрд░реЙрдЗрдб-рдПрдирдбреАрдХреЗ рдХреЗ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдмрд┐рд▓реНрдб / рдХреЛрд░ / рдмрд┐рд▓реНрдб-binary.mk рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рдереА, рдЕрд░реНрдерд╛рддреН: рд▓рд╛рдЗрди рдмрджрд▓реЗрдВ:

$ (рдЫрд┐рдкрд╛рдирд╛) $ (рдХреЙрд▓ cmd- рд╕реНрдЯреНрд░рд┐рдк, $ (PRIVATE_DST))

рддрд░реНрдЬ рдкрд░:

ifneq ($ (APP_OPTIM), рдбреАрдмрдЧ)
$ (рдЫрд┐рдкрд╛рдирд╛) $ (рдХреЙрд▓ cmd- рд╕реНрдЯреНрд░рд┐рдк, $ (PRIVATE_DST))
endif

рдбрд┐рдмрдЧрд┐рдВрдЧ


рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рд╣рдо рдЧреНрд░рд╣рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдбрд┐рдмрдЧрд░ рдкрд┐рдХ рди рд╣реЛ рдЬрд╛рдПред рдлрд┐рд░ рд╕рд╛рдЗрдмрд░рд╡рд┐рди рдореЗрдВ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ ndk-gdb рдиреЗрдЯрд┐рд╡ рдбреАрдмрдЧрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред --Adb рдкреИрд░рд╛рдореАрдЯрд░ adb рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ android-sdk рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ:


рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд░реЗрдХ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рднреА рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, NdkDebugTestLib) рд▓реЙрдиреНрдЪ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ! рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрдирдХреЗ рдмреАрдЪ рдореЗрдВ рдирд╣реАрдВ рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, libNdkDebugTestLib.so)ред
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рд╣рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рдорд┐рд▓реЗрдЧрд╛:


рд╣рдо рдЬрд╛рд░реА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рддрдм рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдЙрдВрдЧрд▓реА рджрдмрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдбреНрд░реЙрдк рдкреЙрдЗрдВрдЯ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:


* X = 1 рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рджреБрд░реНрдШрдЯрдирд╛ рд╣реБрдИ; рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, jni / android_api.cpp рдореЗрдВ рд▓рд╛рдЗрди 6 рдкрд░ред

рд╣рдо рдмреИрдХрдЯреНрд░реЗрд╕ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ - рдФрд░ рд╣рдореЗрдВ рдлрдВрдХреНрд╢рди рдХреЙрд▓реНрд╕ рдХрд╛ рдПрдХ рд╕реНрдЯреИрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬреЛ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ:


рдирд┐рд╖реНрдХрд░реНрд╖


рдареАрдХ рд╣реИ, рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╕рд╛рдЗрдЯ рдорд┐рд▓реА, рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рджреЗрдЦрд╛ред рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ: http://fishrungames.ru/4habr/NdkDebugTest.rar ред

рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ


http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/
http://blog.sephiroth.it/2010/12/14/how-to-debug-native-code-with-android/
http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/

Source: https://habr.com/ru/post/In144672/


All Articles