рд╣рд╛рд▓ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ (27 рджрд┐рд╕рдВрдмрд░, 2013 рдХреА рд░рд┐рд▓реАрдЬ 0.7.3 рд╕реЗ рд╢реБрд░реВ) рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рдПрдирдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЕрдм рдЖрдкрдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдкреАрдХреЗ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛, рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред
рд╣рдо .so рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ APK рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ
рдпрджрд┐ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрд╡реЗрджрди рдореЗрдВ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдорд╛рд╡реЗрди .AR .AR / .jar рдкреИрдХреЗрдЬ рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдЬрдЯрд┐рд▓ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ... рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдкрдХреЛ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд ABI (x86, mips, armeabi-v7a, armeabi) рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ
jniLibs рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .so рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИ! рдЕрдм рд╕рднреА .so рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рдПрдкреАрдХреЗ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдпрджрд┐
jniLibs рдлрд╝реЛрд▓реНрдбрд░
рдирд╛рдо рдЖрдкрдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк
build.gradle рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
android { ... sourceSets.main { jniLibs.srcDir 'src/main/libs' } }
рд╣рдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдПрдХ рдПрдкреАрдХреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ!
рдПрдмрд┐рдлрд┐рд▓реНрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдПрдХ
рдПрдкреАрдХреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ,
ndk.abiFilter (s) рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИред рдпрд╣ рд╕рдВрдкрддреНрддрд┐ .so рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ, рд╕рд╛рде рд╣реА ndk-build рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ (рд╣рдо рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)ред
рдЪрд▓реЛ
build.gradle рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕реБрд╡рд┐рдзрд╛рдПрдБ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди)
рдЬреЛрдбрд╝реЗрдВ :
android{ ... productFlavors { x86 { ndk { abiFilter "x86" } } mips { ndk { abiFilter "mips" } } armv7 { ndk { abiFilter "armeabi-v7a" } } arm { ndk { abiFilter "armeabi" } } fat } }
рдФрд░ рдлрд┐рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдлрд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:

рдЕрдм рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдмрд┐рд▓реНрдб рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЪреБрдирдХрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:

рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рдЪрдпрдирд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдХреЗ рджреЗрдЧрд╛:

рдкреВрд░реНрдг (рд░рд┐рд▓реАрдЬрд╝ | рдбреАрдмрдЧ) рдПрдкреАрдХреЗ рдореЗрдВ рдЕрднреА рднреА рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдорд╛рдирдХ рдкреИрдХреЗрдЬ рднреА рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдкрдврд╝рдирд╛ рдмрдВрдж рдордд рдХрд░реЛ! рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдирд┐рд░реНрднрд░ APK рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ Google Play Store рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ
рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
ABI- рдирд┐рд░реНрднрд░ APK рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ
Android.defaultConfig.versionCode рдЧреБрдг рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП
рд╕рдВрд╕реНрдХрд░рдгрдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ -1 рдкрд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕ рдорд╛рди рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ
AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ
рд╕рдВрд╕реНрдХрд░рдгрдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪреВрдБрдХрд┐ рд╣рдо рдЕрдкрдиреЗ
рд╕рдВрд╕реНрдХрд░рдгрдХреЛрдб рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЗрд╕реЗ
build.gradle рдХреЗ рдЕрдВрджрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
android { ... defaultConfig{ versionName "1.1.0" versionCode 110 } }
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЕрднреА рднреА
AndroidManifest.xml рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ "рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ" рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
import java.util.regex.Pattern android { ... defaultConfig{ versionCode getVersionCodeFromManifest() } ... } def getVersionCodeFromManifest() { def manifestFile = file(android.sourceSets.main.manifest.srcFile) def pattern = Pattern.compile("versionCode=\"(\\d+)\"") def matcher = pattern.matcher(manifestFile.getText()) matcher.find() return Integer.parseInt(matcher.group(1)) }
рдЕрдм рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд╕рд╛рде
рд╕рдВрд╕реНрдХрд░рдгрдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
android { ... productFlavors { x86 { versionCode Integer.parseInt("6" + defaultConfig.versionCode) ndk { abiFilter "x86" } } mips { versionCode Integer.parseInt("4" + defaultConfig.versionCode) ndk { abiFilter "mips" } } armv7 { versionCode Integer.parseInt("2" + defaultConfig.versionCode) ndk { abiFilter "armeabi-v7a" } } arm { versionCode Integer.parseInt("1" + defaultConfig.versionCode) ndk { abiFilter "armeabi" } } fat } }
рдпрд╣рд╛рдБ рд╣рдордиреЗ x86 рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ 6, mips рдХреЗ рд▓рд┐рдП 4, ARMv7 рдХреЗ рд▓рд┐рдП 2 рдФрд░ ARMv5 рдХреЗ рд▓рд┐рдП 1 рд░рдЦрд╛ рд╣реИред
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ ndk рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛
рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрд░реЛрдд рдореЗрдВ рдХреЛрдИ
jni рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ, рддреЛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо
ndk-build рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред
рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЖрдкрдХреЗ Android.mk рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдордХреНрдЦреА рдкрд░ рдПрдХ рдирдпрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдЖрдкрдХреЛ рдЕрдм рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ!), рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдпрд╣ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред
рдмрд┐рд▓реНрдб.рдЧреНрд░реЗрдб рдореЗрдВ рдЗрд╕ рдЧреБрдг рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ:
android{ ... sourceSets.main.jni.srcDirs = []
рдпрджрд┐ рдЖрдк рдСрди-рдж-рдлреНрд▓рд╛рдИ
рдореЗрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╢реБрд░реВ рдореЗрдВ
ndk.moduleName рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
android { ... defaultConfig { ndk { moduleName "hello-jni" } } }
рдЖрдк рдЕрдиреНрдп ndk рдЧреБрдг рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- CFlags ,
- ldLibs ,
- stl (рдпрд╛рдиреА: gnustl_sared , stlport_static ...),
- abiFilters (i.e .: "x86" , "armeabi-v7a" )ред
рдбрд┐рдмрдЧрд┐рдВрдЧ рдПрдкреАрдХреЗ рдХреА рдкреАрдврд╝реА
android.buildTypes.debug.jniDebugBild рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реЗрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ; рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ
ndk-build рдХреЛ
NDK_DEBUG = 1 рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдк NDK рд╕реЗ рд░реЗрдВрдбрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ
defaultConfig.renderscriptNdkMode рдкреНрд░реЙрдкрд░реНрдЯреА рдкрд░
рд╕рд╣реА рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЖрдк рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП
рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдорд▓реНрдЯреА-рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░
рдПрдкреАрдХреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдЕрдВрддрд┐рдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ
cFlags рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╡рдгрддрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди APK рдмрдирд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ:
... productFlavors { x86 { versionCode Integer.parseInt("6" + defaultConfig.versionCode) ndk { cFlags cFlags + " -mtune=atom -mssse3 -mfpmath=sse" abiFilter "x86" } } ...
рдореЗрд░рд╛ рдирдореВрдирд╛ .gradle рдлрд╝рд╛рдЗрд▓
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрддреЗ рд╣реБрдП, рдореИрдВ
build.gradle рдлрд╝рд╛рдЗрд▓ рд▓рд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рдЦреБрдж рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд░реНрдерд┐рдд ABI рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрдХ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣
ndk-build рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрд░реЛрддреЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд╛рдиреЛрдВ, рдпрд╛ рдореЗрд░реА
.mk рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
import java.util.regex.Pattern buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.9.0' } } apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion "19.0.3" defaultConfig{ versionCode getVersionCodeFromManifest() } sourceSets.main { jniLibs.srcDir 'src/main/libs' jni.srcDirs = []
рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг
NDK рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рд╣реИ
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
Execution failed for task ':app:compileX86ReleaseNdk'. > NDK not configured
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдкрдХрд░рдг NDK рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реЗ рдереЗред рджреЛ
рддрд░реАрдХреЗ рд╣реИрдВ: рдЕрдкрдиреЗ NDK рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░
ANDROID_NDK_HOME рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░
local.properties рдХреЛ рд╣рдЯрд╛
рджреЗрдВ рдпрд╛ рдЗрд╕реЗ
рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдВрджрд░ рд╣реА
рд╕реЗрдЯ рдХрд░реЗрдВред
ndk.dir=C\:\\Android\\ndk
рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ
рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
make.exe: *** No rule to make target ...\src\main\jni
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг
рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП NDK рдореЗрдВ рдПрдХ рдореМрдЬреВрджрд╛
рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрдм рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рд╣реИред рдПрдХ рдФрд░ рдЦрд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЕрдиреНрдп рдорд╛рдорд▓реЗ
рдЖрдк
Google рд╕рдореВрд╣ adt-dev рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
NDK рдПрдХреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреГрд╖реНрда рд╣реИ ред
рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ рдФрд░, рдпрджрд┐ рдЖрдк рдЗрд╕рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдореЗрдВ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд╡реАрдирддрдо gradle-samples-XXX.zip рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЗ рднреАрддрд░ NDK рдПрдХреАрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓реЗрдВрдЧреЗред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдПрдирдбреАрдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛рдПред