рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ NDK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, JetBrains IntelliJ IDEA рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдореВрд▓ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдирдбреАрдХреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЧреНрд░рд╣рдг рдЖрдИрдбреАрдИ рдФрд░ рдПрдбреАрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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


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

рдЪреВрдВрдХрд┐ NDK рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдЯрд┐рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЦреБрдж рдХреЛ рд╣реИрд▓реЛ-рдЬрд╛рдиреА рдХреЗ рд╕рд░рд▓рддрдо рдЙрджрд╛рд╣рд░рдг рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджреВрдВрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ <path_to_ndk> / рдирдореВрдиреЗ / рд╣реИрд▓реЛ-рдЬрд╛рдиреА рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЧреНрд░рд╣рдг рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ, NDK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛рдПрдБ рдирд╣реАрдВ рдереАрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

рдЪрд┐рддреНрд░ 1 рдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛

рд╣рдо jni рдФрд░ libs рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЬрд╛рдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдореВрд▓ рднрд╛рд╖рд╛рдУрдВ (* .c; *ред Cpp), рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ (* .h), рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ (* .mk) рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдФрд░ рд▓реЗрдЦ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВред рдореИрдВ рдХреЗрд╡рд▓ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЗрдиреА рдХрд╛ рдЕрд░реНрде рд╣реИ рдЬрд╛рд╡рд╛ рджреЗрд╢реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред рдпрд╣ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдХрд┐ рджреЗрд╢реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЬрд╛рд╡рд╛ рдХреЛрдб рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдкрдиреА c / c ++ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ <jni.h> рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ рдФрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╣реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ jni рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреИрдХреЗрдЬ рдирд╛рдо рд╣реИ:
evi.ntest
рдЗрд╕рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
jstring Java_evi_ntest_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz ) 

рдЬрд╣рд╛рдБ jstring рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ c рдХрд╛ рдирд╛рдо рд╣реИ, рдЬрд╛рд╡рд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдЙрдкрд╕рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рднрд╛рд╖рд╛ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, evi_ntest рдЙрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, MainActivity рдЙрд╕ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди, stringFromJNI - рдлрд╝рдВрдХреНрд╢рди рдирд╛рдоред
рдЬрд╛рд╡рд╛ рдХреЛрдб рдореЗрдВ, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдмрд╣реБрдд рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИ:
  public native String stringFromJNI(); 


.Mk рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдХреЛрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк NDK рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ .mk рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

Libs рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (armeabi рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ)ред рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ .so рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ, рдПрдХ рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ .a рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╛рдЗрд▓ рд╣реЛрддреА рд╣реИред рдЗрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбреНрд░реЙрдЗрдб рдПрдирдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╕рдВрдХрд▓рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдХ рдУрдПрд╕рдПрдХреНрд╕), рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдиреЗрдВ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 cd <__> <__ndk>/ndk-build 

рдЙрд╕реА рд╕рдордп, NDK рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ jni рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ libs / armeabi рдореЗрдВ рджреЗрддрд╛ рд╣реИ (рдЖрдк x86, mips, arm v7-neon рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
рд╡рд┐рдВрдбреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╕рдВрднрд╡рддрдГ рдПрдордПрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрдиред
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рддрдереНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ, рддреЛ рдЧреНрд░рд╣рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ NDK рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ Android рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░рд┐рдЪрдп рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ред рдореВрд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рдЪрд┐рдд рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк <path_k_ndk> / рдирдореВрдиреЗ / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд░реВрд╕реА рдореЗрдВ рд▓реЗрдЦ рднреА рдкрдврд╝реЗрдВред рдПрдВрдбреНрд░реЙрдЗрдб NDK рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░реВрд╕реА рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг, рдореИрдВ рдЖрдкрдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ (рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ):

idev.by/android/21115

рдореИрдВ рд▓реЗрдЦ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреА рдУрд░ рдореБрдбрд╝рддрд╛ рд╣реВрдВ - рдореВрд▓ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдИрдбреАрдИ рдХреА рд╕реНрдерд╛рдкрдирд╛ред

рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, gradle рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ APK рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕ рдХрд▓реЗрдХреНрдЯрд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрдХреВрд▓рди рдХреНрд╖рдорддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рдирдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдЯрд┐рдВрдЪрд▓ рдореЗрдВ рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЗрд╢реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред

рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рдЖрдВрд╢рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдЕрдВрдЬреАрд░ред 2 рдПрдВрдбреНрд░реЙрдпрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдкрдеред

рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореЗрд░реЗ рдкрд╛рд╕ src / рдореБрдЦреНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ jni рдлреЛрд▓реНрдбрд░ рд░рдЦрдиреЗ рдХреА рддрд╛рд░реНрдХрд┐рдХ рдЗрдЪреНрдЫрд╛ рдереА, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд╛рд▓реА рдЕрдиреНрдп рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдмреЗрд╢рдХ, рдкрд╛рдардХ рдЬреЗрдиреА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдЧрд╣ рдкрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдирдбреАрдХреЗ (рдлрд┐рд░ рд╕реЗ, рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░) рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЖрдкрдХреЛ рдЬреЗрдиреА рдпреБрдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдПрдирдбреАрдХреЗ-рдмрд┐рд▓реНрдб рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдЬреЛ рдПрдирдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ, рдЙрд╕реА рдореЗрдВ рдкреВрд░реНрдг рдкрде рд▓рд┐рдЦрдХрд░ред рдЯрд░реНрдорд┐рдирд▓, рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЧреНрд░реЗрдбреЗрд▓ рдПрдкреАрдХреЗ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (* .jar рдлрд╝рд╛рдЗрд▓реЛрдВ) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬрд╛рд░ рдлрд╛рдЗрд▓реЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрд╕рд╛рдзрди рдпреБрдХреНрдд рдЬрд╝рд┐рдк рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛрдб рднреА рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ * .so рдФрд░ * рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд░-рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдкрд░рд┐рдгрд╛рдореА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдЬ рдкрд░ рдХрдиреЗрдХреНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬрдмрдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдкреАрдХреЗ-рдлрд╛рдЗрд▓ рдореЗрдВ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреЗрд╢реА рдХреЛрдб рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рдордВрдЪреЛрдВ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ:
stackoverflow.com/questions/16667903/android-studio-gradle-and-ndk
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛рдлреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдЦрдВрдбрд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╛рдардХ рдХреЛ рдЧреНрд░реЗрдбрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдХреБрдЫ рдЬреНрдЮрд╛рди рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореЗрд░реЗ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд╛рдардХреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд░реВрд╕реА-рднрд╛рд╖рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╕реБрд▓рдн рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА-рдЕрднреА рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдЧреНрд░реЗрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИред

рдЪрд▓реЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рджреЗрдЦреЗрдВ: рдореИрдиреБрдЕрд▓ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рддред

рдореИрдиреБрдЕрд▓ рдкреИрдХрд┐рдВрдЧ рд╡рд┐рдзрд┐:

рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╣реИред рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ: рдПрдХ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "<path_to_project> / / <project_name> рдкреНрд░реЛрдЬреЗрдХреНрдЯ / <project_name> /" рдкрд░ рд╕реНрдерд┐рдд build.gradle рдЦреЛрд▓реЗрдВ:

рдЪрд┐рддреНрд░ред build.gradle рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ 3 рд╕реНрдерд╛рдиред

рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╢реБрд░реВ рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 9 } } dependencies { compile 'com.android.support:support-v4:18.0.0' } 


рдмрд╣реБрдд рдиреАрдЪреЗ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЦрдВрдб рд╣реИред рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП:

рд╕рдВрдХрд▓рди рдлрд╝рд╛рдЗрд▓рдЯреНрд░реА (dir: 'src / main /', рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: '* .jar')

рдЗрд╕ рдЖрджреЗрд╢ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдЧреНрд░реЗрдб рдПрдХ рдлрд╛рдЗрд▓ рдЯреНрд░реА (рджрд┐рдП рдЧрдП рдорд╛рд╕реНрдХ рдХреЗ рдЕрдиреБрд░реВрдк рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛) рдХреЛ 'src / main /' рдкрддреЗ рдкрд░ рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрд╛рдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реНрдерд┐рдд рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рд╣реИ), рдЬрдмрдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ '* .jar' рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддред рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдПрдВрдЧреАред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд┐рд▓реНрдб рдХреЛ рдмрд┐рд▓реНрдб.рдЧреНрд░реЗрдб рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЧреНрд░реЗрдб рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдкреАрдХреЗ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛ред

рд╕рдВрд╢реЛрдзрд┐рдд build.gradle рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ рддрд╛рдХрд┐ рдЖрдк рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ builddscript.d dependencies рдХреЛ рдорд┐рд╢реНрд░рд┐рдд рди рдХрд░реЗрдВред

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 9 } } dependencies { compile 'com.android.support:support-v4:18.0.0' compile fileTree(dir: 'src/main/', include: '*.jar') } 


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

рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддрд░реАрдХрд╛ рд╣реИ

рдЧреНрд░реЗрдбреЗрд▓ рдкреИрдХреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░ рдЖрдкрдХреЛ рдЬрд╝рд┐рдк рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдХрд╛рд░реНрдп) рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ build.gradle рдореЗрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗ (рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрдерд╛рди рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ):

 task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') { destinationDir file("$buildDir/native-libs") baseName 'native-libs' extension 'jar' from fileTree(dir: 'src/main/libs', include: '**/*.so') into 'lib/' } tasks.withType(Compile) { compileTask -> compileTask.dependsOn(nativeLibsToJar) } 


рдпрд╣ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореМрдЬреВрджрд╛ рдЦрдВрдбреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХрд┐рд╕реА рднреА рднрд╛рдЧ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рддрдХред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд╕рд╛рдордиреЗ рд░рдЦрд╛ред
рдЗрд╕ рдХреЛрдб рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдкрддреЗ рдкрд░ рд╕реНрдерд┐рдд рдмрд┐рд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИ "<project_path> / <project_name> Project / <project_name> /" рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореВрд▓-рд▓рд┐рдмрд╛рд╕, рдЗрд╕ рдЙрдк-рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЗрд╢реА-libs.jar рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдмрд╛рдЗрдирд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпреБрдХреНрддред рдЬрд╛рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдВрд░рдЪрдирд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рд╕реНрдерд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд▓рд╛рдЗрди рдХреЗ рдмрдЬрд╛рдп:

рдлрд╝рд╛рдЗрд▓рдЯреНрд░реА рд╕реЗ (dir: 'src / main / libs', рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: '** / *ред so')

рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдлрд╝рд╛рдЗрд▓рдЯреНрд░реА рд╕реЗ (dir: 'src / main / libs', рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: '** / * *ред'))

рдЕрдЧрд▓рд╛, рдирд┐рд░реНрднрд░рддрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:

рд╕рдВрдХрд▓рд┐рдд fileTree (dir: "$ buildDir / native-libs", рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: 'рджреЗрд╢реА-рд▓рд┐рдмрд╛рд╕рдЬрд░')

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

рдЙрджрд╛рд╣рд░рдг build.gradle рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' repositories { mavenCentral() } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 9 targetSdkVersion 9 } } task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') { destinationDir file("$buildDir/native-libs") baseName 'native-libs' extension 'jar' from fileTree(dir: 'src/main/libs', include: '**/*.so') into 'lib/' } tasks.withType(Compile) { compileTask -> compileTask.dependsOn(nativeLibsToJar) } dependencies { compile 'com.android.support:support-v4:18.0.0' compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar') } 


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ "<project_path> / <project_name> Project / <project_name> / src / main" рдкрд░ рд╕реНрдерд┐рдд jni, lib рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЗ рдлрд╝реЛрд▓реНрдбрд░ рджреВрд╕рд░реА рдЬрдЧрд╣ рд╕реНрдерд┐рдд рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рднреА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкрдереЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдЕрдм, рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдкреВрд░реНрдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ:

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢


  1. "<Path_to_project> / / <project_name> Project / <project_name> / src / main" рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ рдФрд░ рд╡рд╣рд╛рдБ рдПрдХ jni рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБред
  2. рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ "<path_to_project> / / <project_name> рдкреНрд░реЛрдЬреЗрдХреНрдЯ / <project_name> /build.gradle", рдирд┐рд░реНрднрд░рддрд╛ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд╡рд╣рд╛рдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

     dependencies { compile 'com.android.support:support-v4:18.0.0' compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar') } task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') { destinationDir file("$buildDir/native-libs") baseName 'native-libs' extension 'jar' from fileTree(dir: 'src/main/libs', include: '**/*.so') into 'lib/' } tasks.withType(Compile) { compileTask -> compileTask.dependsOn(nativeLibsToJar) } 

    рд╕реНрдереИрддрд┐рдХ * .a рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓реЗрдВ

    рдлрд╝рд╛рдЗрд▓рдЯреНрд░реА рд╕реЗ (dir: 'src / main / libs', рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: '** / *ред so')

    рдкрд░

    рдлрд╝рд╛рдЗрд▓рдЯреНрд░реА рд╕реЗ (dir: 'src / main / libs', рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: '** / * *ред'))

  3. Jni subfolder рдореЗрдВ рд╣рдо рдлрд╛рдЗрд▓реНрд╕ * .mk, * .h, * .c рдбрд╛рд▓рддреЗ рд╣реИрдВ, рд╣рдо рдиреЗрдЯрд┐рд╡ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред
  4. рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ "<path_to_project> / / <project_name> Project / <project_name> / src / main" рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВред
  5. рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ, рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВ <path_to_ndk> / ndk-build
  6. рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


рдорд╣рддреНрд╡рдкреВрд░реНрдг!
рдпрд╣ рдореИрдиреБрдЕрд▓ рдпреВрдирд┐рдХреНрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, MacOSX) рдХреЗ рд▓рд┐рдП рд╣реИред рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, рдЕрдВрдХ 4 рдФрд░ 5 рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдЯреЛрд░реЗрдЬ рдкрдереЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ред

рдЗрд╕ рдкрд░ рдореИрдВрдиреЗ рд▓реЗрдЦ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдиреА рдЫреБрдЯреНрдЯреА рд▓реЗ рд▓реАред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред

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

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


All Articles