{"id":228365,"date":"2014-07-02T17:43:03","date_gmt":"2014-07-02T13:43:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=228365"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=228365","title":{"rendered":"<span class=\"post_title\">Android Studio \u0434\u043b\u044f NDK \u043f\u043e\u0434 Windows<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/f21\/6ab\/2b6\/f216ab2b699fb5d28ef1568bb3da3dd0.png\"\/><\/p>\n<p>  \u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f Android Studio \u043d\u0435\u0443\u043a\u043b\u043e\u043d\u043d\u043e \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0435\u0434\u0438\u043d\u0438\u0446\u0435, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f \u043e\u0431 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u0431\u043b\u044f\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0430\u0442\u044c\u0438-\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430. <\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044f \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0433\u0443\u0440\u0443 Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0432\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442\u0435. \u0417\u0430\u0442\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Android Studio \u043f\u043e\u0434 Windows \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Android NDK. <\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e: \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 (\u0447\u0435\u0441\u0442\u043d\u043e, \u0441\u0430\u043c \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b), \u0434\u0430\u0436\u0435 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044f \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u043a\u043e\u0434\u0430 \u0441\u043f\u0440\u044f\u0442\u0430\u043b \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u044b. <br \/>  <a name=\"habracut\"><\/a><br \/>  \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Android Studio \u0431\u044b\u043b\u0430 0.8.1, \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0438\u0436\u0435\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 (\u043e\u0447\u0435\u043d\u044c \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0432 \u043b\u0443\u0447\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443).<\/p>\n<p>  <a href=\"#NDK\">\u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e NDK<\/a><br \/>   <a href=\"#GradleNDK\">\u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Gradle \u0434\u043b\u044f NDK<\/a><\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Android Studio<\/h4>\n<p>  <\/p>\n<h5>1. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c JDK (Java Development Kit) \u0438 JRE (Java Runtime Environment).<\/h5>\n<p><a name=\"a1\"><\/a><br \/>  \u0420\u0430\u043d\u044c\u0448\u0435 Android SDK \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e JDK \u0432\u0435\u0440\u0441\u0438\u0438 6, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f 7 \u0438 \u0434\u0430\u0436\u0435 8 (\u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0438\u043c\u0435\u043d\u043d\u043e 8-\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <i>JAVA_HOME<\/i> \u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Android Studio, \u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435 \u0438\u0441\u043f\u044b\u0442\u0430\u043b).<br \/>  JRE \u0436\u0435 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0443\u0434\u0438\u0438. \u0423 \u043c\u0435\u043d\u044f \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e 7. <br \/>  \u0421\u043a\u0430\u0447\u0430\u0442\u044c JDK \u0438 JRE \u0432\u0435\u0440\u0441\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 6 \u043c\u043e\u0436\u043d\u043e \u0441 <a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/downloads\/index.html\">\u0441\u0430\u0439\u0442\u0430 Oracle<\/a>.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <i>JAVA_HOME<\/i> \u0442\u0435\u043f\u0435\u0440\u044c, \u0432\u0440\u043e\u0434\u0435 \u0431\u044b, \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 Android Studio \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a JDK. \u041d\u043e \u044f \u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e:  <\/p>\n<ul>\n<li>\u0417\u0430\u0439\u0442\u0438 \u0432 <i>\u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\\\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\\\u0421\u0438\u0441\u0442\u0435\u043c\u0430<\/i>, \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043b\u0435\u0432\u0430 <i>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/i>, \u0432 \u043e\u0442\u043a\u0440\u044b\u0432\u0448\u0435\u043c\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u043d\u0430\u0439\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 <i>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b<\/i>.<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <i>JAVA_HOME<\/i> \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0435 \u043f\u0443\u0442\u044c \u043a JDK. \u0423 \u043c\u0435\u043d\u044f \u0443\u043a\u0430\u0437\u0430\u043d \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u044c: <i>C:\\Program Files\\Java\\jdk1.8.0_05<\/i>.<\/li>\n<\/ul>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e \u043a\u0430\u043a\u0438\u043c-\u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0435\u0441\u044c \u0432 6 \u0432\u0435\u0440\u0441\u0438\u0438 JDK<\/b><\/p>\n<div class=\"spoiler_text\">JDK 6 \u0431\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a:   <\/p>\n<ul>\n<li>\u0421\u043a\u0430\u0447\u0430\u0442\u044c Java EE 6 \u0441 <a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javaee\/downloads\/java-archive-downloads-eesdk-419427.html\">\u0441\u0430\u0439\u0442\u0430 Oracle<\/a>.<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e. \u0412 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c JDK 6.<\/li>\n<li>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <i>JAVA_HOME<\/i> \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a JDK \u0438\u0437 Java EE, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e <i>C:\/glassfish3\/jdk<\/i>.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h5>2. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d Android SDK.<\/h5>\n<p>  \u0412 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 Android Studio \u0438\u0434\u0435\u0442 \u0441\u0432\u043e\u0439 Android SDK. \u0418, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e, \u0442\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 SDK \u0447\u0435\u0440\u0435\u0437 SDK Manager \u0447\u0430\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0441\u0442\u0430\u0440\u0443\u044e \u043f\u0430\u043f\u043a\u0443, \u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0433\u0434\u0430 \u044f \u044d\u0442\u0443 \u043f\u0430\u043f\u043a\u0443 \u0443\u0434\u0430\u043b\u0438\u043b. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0441\u044f \u043a\u043b\u044e\u0447 \u0441 \u043f\u0443\u0442\u0435\u043c \u043a \u0441\u0442\u0430\u0440\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u043f\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u0435\u0441\u0442\u0440. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c regedit.exe \u0438 \u043d\u0430\u0439\u0442\u0438 <i>HKEY_LOCAL_MACHINE\\Software\\Android SDK Tools<\/i> \u0434\u043b\u044f 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u043b\u0438\u0431\u043e <i>HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Android SDK Tools<\/i> \u0434\u043b\u044f 64-\u0431\u0438\u0442\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c <i>Android SDK Tools<\/i>. \u0415\u0441\u043b\u0438 \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0430\u043a\u0438\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u043d\u0435\u0442, \u0442\u043e \u0432\u0441\u0435 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u044b <i>ANDROID_SDK_HOME<\/i> \u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430 \u043d\u0430 \u0441\u0442\u0430\u0440\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0442\u043e, \u043f\u043e \u0438\u0434\u0435\u0435, \u044d\u0442\u043e \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u0442\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Android Studio \u043c\u044b \u0443\u043a\u0430\u0436\u0435\u043c \u0435\u0439 \u043f\u0443\u0442\u044c \u043a SDK. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c, \u0435\u0441\u043b\u0438 \u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 Android SDK.<\/p>\n<h5>3. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 Android Studio.<\/h5>\n<p>  \u041d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c Android Studio \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 <a href=\"http:\/\/developer.android.com\/sdk\/installing\/studio.html\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<\/a> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0435. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u00ab\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f\u00bb \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432<i> \\Users\\&lt;user&gt;\\AppData\\Local\\Android\\android-studio\\<\/i>, \u0438\u043d\u0430\u0447\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 <i>\\Program FIles (x86)\\Android\\android-studio\\<\/i>. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0430\u043f\u043a\u0443.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Android Studio.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0438\u0434\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/f46\/52a\/c53\/f4652ac531c0395ab08fb76a4cd48778.png\"\/><\/div>\n<\/div>\n<p>  \u0412 \u043d\u0435\u043c \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u0441\u044f (\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430 <i>Check<\/i> \u0432 \u043d\u0438\u0436\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043a\u043d\u0430)<\/li>\n<li>\u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <i>Configure-&gt;SDK Manager<\/i> (\u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439: SDK Manager \u2014 \u044d\u0442\u043e \u043d\u0435 \u0447\u0430\u0441\u0442\u044c Android Studio, \u0430 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0438\u0437 Android SDK) \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0442\u043e, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442.<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u043e\u0442 \u0447\u0442\u043e \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b \u0443 \u043c\u0435\u043d\u044f<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/f60\/3d7\/a35\/f603d7a359d1dd24750619d568ee0b94.png\"\/><br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/136\/458\/3c1\/1364583c11b5b4921c59e93379f40f86.png\"\/>  <\/div>\n<\/div>\n<\/li>\n<li>\u0417\u0430\u0442\u0435\u043c \u044f \u0441\u043c\u0435\u043d\u0438\u043b \u0442\u0435\u043c\u0443 \u043d\u0430 Darcula.<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c<\/b><\/p>\n<div class=\"spoiler_text\">\u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 <i>Configure-&gt;Settings-&gt;Appearance<\/i>:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/9e8\/931\/0eb\/9e89310eb78f3870fc587ee19dbc8246.png\"\/>  <\/div>\n<\/div>\n<\/li>\n<li>\u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <i>Configure-&gt;Project Defaults-&gt;Project Structure<\/i> \u0438 \u043c\u0435\u043d\u044f\u0435\u043c SDK Location \u043d\u0430 \u043f\u0443\u0442\u044c \u043a \u0432\u0430\u0448\u0435\u043c\u0443 Android SDK, \u0430 JDK Location \u043d\u0430 \u043f\u0443\u0442\u044c \u043a JDK.<br \/> \n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/213\/994\/5af\/2139945af2601ee236de5de1f558f2f2.png\"\/><\/div>\n<\/div>\n<\/li>\n<\/ul>\n<p>  <\/p>\n<h4>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h4>\n<p>  <\/p>\n<h5>1. New Project<\/h5>\n<p>  \u0416\u043c\u0435\u043c <i>New Project<\/i>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ee0\/f8c\/093\/ee0f8c0935417c5ded53725f51aae228.png\"\/><\/div>\n<\/div>\n<p>  \u0412 \u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c:  <\/p>\n<ul>\n<li>\u0418\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: <i>My Application<\/i>)<\/li>\n<li>\u0414\u043e\u043c\u0435\u043d \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <i>&lt;username&gt;.example.com<\/i>, \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <i>markedone.example.com<\/i><\/li>\n<li>\u0418\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043d\u0430\u0436\u0430\u0432 \u043d\u0430 <i>Edit<\/i> \u0441\u043f\u0440\u0430\u0432\u0430. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0437 \u0438\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a com.example.&lt;username&gt;.&lt;\u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 lowercase \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432&#038;gt, \u044f \u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b \u043d\u0430 <i>com.example.markedone.myapp<\/i>.<\/li>\n<li>\u041f\u0443\u0442\u044c, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442. \u042f \u0443\u043a\u0430\u0437\u0430\u043b \u0441\u0432\u043e\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0432\u0441\u044f\u043a\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/li>\n<\/ul>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043e, \u0436\u043c\u0435\u043c <i>Next<\/i>.<\/p>\n<h5>2. Form Factors<\/h5>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0438 API.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0414\u0438\u0430\u043b\u043e\u0433 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/776\/696\/e56\/776696e56fee6052ade1be863ba9bd05.png\"\/><\/div>\n<\/div>\n<p>  \u0417\u0434\u0435\u0441\u044c \u044f \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: Phone and Tablet \u0438 4.0.3 IceCreamSandwich. \u0415\u0441\u043b\u0438 API \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 Not Insatlled. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435, \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f Google Glass (\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 SDK Manager). <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 Help me choose, \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\u0415\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c<i> Help me choose<\/i>, \u0442\u043e \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u043e\u0433<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/34b\/34c\/50c\/34b34c50c647ad36457988789d73d646.png\"\/><br \/>  \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u043e\u0445\u0432\u0430\u0442\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 API. \u041f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0438 \u0432\u0435\u0440\u0441\u0438\u0439 API \u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b, \u0441\u043f\u0440\u0430\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0432 \u043d\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Ice Cream Sandwich&#8217;\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/f52\/d45\/d9b\/f52d45d9bb5458e174ce6a6ac028323f.png\"\/>  <\/div>\n<\/div>\n<p>  \u0416\u043c\u0435\u043c <i>Next<\/i>.<\/p>\n<h5>3. Add Activity<\/h5>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0431\u0440\u0430\u0442\u044c Activity<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/d3c\/d6f\/067\/d3cd6f067209fe28489e3e57712f7511.png\"\/><\/div>\n<\/div>\n<p>  \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u043e\u0439\u0442\u0438 \u043c\u0438\u043c\u043e Fullscreen Activity \u0438 \u0432\u044b\u0431\u0440\u0430\u043b \u0435\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e Activity, \u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043d\u0430 Java, \u0438 \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0438\u0437 Java (\u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e).<br \/>  \u0414\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u0431\u043e\u0440, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <i>Next<\/i>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0434\u0438\u0430\u043b\u043e\u0433<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/a1f\/13e\/383\/a1f13e383f3123c86acf3425e4c20350.png\"\/><\/div>\n<\/div>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c Activity.  <\/p>\n<ul>\n<li><i>Activity Name<\/i> \u2014 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430, \u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: <i>FullscreenActivity<\/i>.<\/li>\n<li><i>Layout Name<\/i> \u2014 \u0438\u043c\u044f layout, \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 UI, \u0442\u0430\u043a\u0436\u0435 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/li>\n<li><i>Title<\/i> \u2014 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f FullscreenActivity, \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0431\u0435\u043b: <i>Fullscreen Activity<\/i>.<\/li>\n<\/ul>\n<p>  \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <i>Finish<\/i>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043a\u0440\u044b\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/775\/c61\/937\/775c61937c55ef40335560591fb5df68.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<h4>\u0421\u0431\u043e\u0440\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a<\/h4>\n<p>  <\/p>\n<h5>1. \u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h5>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e: <i>Build-&gt;Make Project<\/i> (\u0434\u043b\u044f \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u043a\u043e\u043d\u043a\u0438 \u0438 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f). <br \/>  \u0423 \u043c\u0435\u043d\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/84e\/0b1\/c6a\/84e0b1c6afd599498da32d2b58c99add.png\"\/><br \/>  \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u044d\u0442\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <i>MyApplication\/app\/build.gradle<\/i><br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0432 \u0447\u0435\u043c \u0434\u0435\u043b\u043e, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043d\u0430\u0432\u0435\u0441\u0442\u0438 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/365\/711\/846\/365711846267342e1b3b2778eb96d7a2.png\"\/><br \/>  \u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e, \u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f 19, \u0430 \u0443 \u043d\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e 20, \u0434\u0430 \u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 20 \u043a\u0430\u043a \u0446\u0435\u043b\u0435\u0432\u0443\u044e. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u0446\u0438\u0444\u0440\u0443:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/e49\/2f6\/1c2\/e492f61c206f773d77c5c225cd69c917.png\"\/><br \/>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e, \u0441\u0442\u0443\u0434\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0441\u043f\u043e\u043a\u043e\u0438\u043b\u0430\u0441\u044c, \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u041d\u043e \u043d\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.<\/p>\n<p>  \u0421\u043d\u043e\u0432\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c <i>Build-&gt;Make Project<\/i>. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435 \u0441\u043e\u0431\u0440\u0430\u043b\u043e\u0441\u044c. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443 \u0432\u0430\u0441 \u0442\u043e\u0436\u0435.<\/p>\n<h5>2. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/h5>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <i>Tools-&gt;Android-&gt;AVD Manager<\/i> (\u044d\u0442\u043e, \u043a\u0430\u043a \u0438 SDK Manager, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0438\u0437 Android SDK). \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430, <i>Android Virtual Device<\/i>, \u043e\u043d\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043a\u043d\u043e\u043f\u043a\u0443 <i>Create&#8230;<\/i> \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u0435\u0435.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/ad5\/ce9\/87a\/ad5ce987a7d8286917f9ff435ab0a596.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<ul>\n<li><i>AVD Name<\/i> \u2014 \u0438\u043c\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u044f \u0432\u0432\u0435\u043b <i>TestPhone<\/i>. \u0414\u0430\u043b\u044c\u0448\u0435 \u044f, \u043f\u0440\u0430\u0432\u0434\u0430, \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u043b\u0430\u043d\u0448\u0435\u0442, \u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u0441\u0442\u0430\u043b \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435.<\/li>\n<li><i>Device<\/i> \u2014 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435, \u044f \u0432\u044b\u0431\u0440\u0430\u043b <i>7&#187; WSVGA (Tablet) (1024 x 600: mdpi)<\/i>.<\/li>\n<li>Target \u2014 \u0446\u0435\u043b\u0435\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f API, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u0432 SDK. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 SDK Manager.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/6b1\/cd6\/afc\/6b1cd6afc8312e95a0ec3737b1f84b68.png\"\/><br \/>  W \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 Wear, \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u043d\u043e\u0441\u0438\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0447\u0430\u0441\u044b \u0438 \u043f\u0440\u043e\u0447\u0435\u0435). \u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 Tablet&#038;Phone, \u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0443\u043d\u043a\u0442: <i>Android L (Preview) \u2014 API Level L<\/i>.  <\/li>\n<li><i>CPU\/ABI<\/i> \u2014 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u044f \u0432\u044b\u0431\u0440\u0430\u043b <i>ARM (armeabi-v7a)<\/i>.<\/li>\n<li><i>Keyboard<\/i> \u2014 \u0442\u0443\u0442, \u0434\u0443\u043c\u0430\u044e, \u0432\u0441\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/li>\n<li><i>Skin<\/i> \u2014 \u043a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b, \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e <i>Device<\/i>: <i>WSVGA<\/i>.<\/li>\n<li><i>Front Camera<\/i> \u0438 <i>Back Camera<\/i> \u2014 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u0430\u043c\u0435\u0440.<\/li>\n<li><i>Memory Options<\/i> \u2014 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c.<\/li>\n<li><i>Internal Storage<\/i> \u2014 \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u0434\u0438\u0441\u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/li>\n<li><i>SD Card<\/i> \u2014 \u0434\u0443\u043c\u0430\u044e, \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/li>\n<li><i>Emulation options<\/i>: <i>Snapshot<\/i> \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0443 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043c\u0438, <i>Use Host GPU<\/i> \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u0443 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0434\u043b\u044f OpenGL ES. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u043e\u043f\u0446\u0438\u044e \u044f \u0432\u043a\u043b\u044e\u0447\u0438\u043b, \u043d\u043e OpenGL \u2014 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443 \u043c\u0435\u043d\u044f \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0443\u043f\u0430\u043b\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0438\u0437-\u0437\u0430 ARM vs x86_64.<\/li>\n<\/ul>\n<p>  \u0412\u043d\u0438\u0437\u0443 \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f, \u043a\u0430\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u044b \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0438\u043c\u0435\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041a\u043e\u0433\u0434\u0430 \u0432\u043d\u0438\u0437\u0443 \u043d\u0435\u0442 \u043d\u0430\u0434\u043f\u0438\u0441\u0438 \u2014 \u0432\u0441\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u0432\u0435\u0440\u043d\u043e. \u0416\u043c\u0435\u043c <i>OK<\/i>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/a0f\/14b\/cb4\/a0f14bcb4ee7aeea160bdb9313413242.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 Device Definitions<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/d0e\/f4a\/6f2\/d0ef4a6f2edc3f90b58e493d423da6d3.png\"\/><br \/>  \u041d\u0430 \u043d\u0435\u0439 \u0437\u0430\u0434\u0430\u043d\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 (\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 <i>Device<\/i> \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430). \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <i>Create Device&#8230;<\/i> \u0438 \u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u0430:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/b1e\/0f5\/61c\/b1e0f561c98310e90f91fda13af5dda9.png\"\/>  <\/div>\n<\/div>\n<p>  \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c AVD Manager \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e Android Studio.<\/p>\n<h5>3. \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435<\/h5>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c <i>Run-&gt;Run &#8216;app&#8217;<\/i>.<br \/>  \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/cc2\/27d\/aab\/cc227daab70ef629cfbc65bbc8b7492e.png\"\/>  <\/div>\n<\/div>\n<p>\u0417\u0434\u0435\u0441\u044c \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u043d\u0430\u0448\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u041e\u043d \u043d\u0430\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0436\u043c\u0435\u043c <i>OK<\/i>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/bc7\/cf0\/668\/bc7cf06686356ce7c64e70810c8f3015.png\"\/><\/div>\n<\/div>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c <i>Tools-&gt;Android-&gt;Android Device Monitor<\/i> (\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0438\u0437 Android SDK), \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043b\u043e\u0433\u0438 \u0441 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430. \u041e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0446\u0435\u043f\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0447\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043b\u043e\u0433.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Android Device Monitor<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/144\/e4f\/683\/144e4f6833b00db19d2b5abbcc13df9a.png\"\/><\/div>\n<\/div>\n<p>  \u0410 \u0432\u043e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0443 \u043c\u0435\u043d\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u043d\u0435 \u043e\u0442\u043a\u0440\u044b\u043b\u043e\u0441\u044c, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043d\u0430\u0436\u0430\u0442\u044c <i>Run-&gt;Run &#8216;app&#8217;<\/i>.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/182\/a84\/d9e\/182a84d9e6e0743511982b623566e07b.png\"\/><\/div>\n<\/div>\n<p>\u0417\u0434\u0435\u0441\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0435\u0432\u0430\u043b\u043e \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445. \u0412 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u043e \u043f\u043e\u0448\u043b\u043e, \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u043e\u0441\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u043e\u0441\u044c.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/8df\/565\/f3a\/8df565f3afb42725e2cc0b6290a5a9b3.png\"\/><\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0410 \u0435\u0441\u043b\u0438 \u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0430\u043f\u043d\u0443\u0442\u044c, \u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d\u043e \u0442\u0430\u043a<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/90f\/ef3\/300\/90fef33002723ce68e226174ababb7fa.png\"\/><\/div>\n<\/div>\n<p>\u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043b\u0438\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 (\u0444\u0430\u0439\u043b FullscreenActivity.java):  <\/p>\n<pre><code class=\"java\">        \/\/ Set up the user interaction to manually show or hide the system UI.         contentView.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 if (TOGGLE_ON_CLICK) {                     mSystemUiHider.toggle();                 } else {                     mSystemUiHider.show();                 }             }         }); <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, Android Studio \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0430 \u043c\u043d\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c Android Device Monitor, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u044f\u043c\u043e \u0432 IDE.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/9b0\/12e\/120\/9b012e120a8ac816eed1f2a56132d392.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<h5>4. \u0417\u0430\u043f\u0443\u0441\u043a \u0432 Debug-\u0440\u0435\u0436\u0438\u043c\u0435<\/h5>\n<p>  <i>Run-&gt;Debug &#8216;app&#8217;<\/i>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043d\u043e\u0432\u0430 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u043d\u0430\u043c \u0434\u0438\u0430\u043b\u043e\u0433<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/182\/a84\/d9e\/182a84d9e6e0743511982b623566e07b.png\"\/><\/div>\n<\/div>\n<p>\u0416\u043c\u0435\u043c OK.<\/p>\n<p>  \u0416\u0434\u0435\u043c, \u043f\u043e\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0438\u043a\u043e\u043d\u043d\u0435\u043a\u0442\u0438\u0442\u0441\u044f \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440. \u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0442\u043e\u0447\u043a\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 Dummy Button.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Android Studio \u0432 \u0434\u0435\u0431\u0430\u0433\u0435<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/497\/0eb\/1a8\/4970eb1a80ea34f7dd1722fbd4558485.png\"\/><\/div>\n<\/div>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0430\u043d\u0435\u043b\u044c\u043a\u0438 \u0441\u043e \u0432\u0441\u044f\u043a\u0438\u043c\u0438 Step Into, Step Out etc.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u0441\u0435 \u044d\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u044e Run<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/8f7\/3bd\/b9b\/8f73bdb9b42027acbc02a8d70b661d30.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<h5>5. \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u0430 4.0.3<\/h5>\n<p>  \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u044b, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 4.0.3, \u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438 \u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Android. \u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e 4.0.3 \u0447\u0435\u0440\u0435\u0437 <i>Tools-&gt;Android-&gt;SDK Manager<\/i>.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0433\u0430\u043b\u043e\u0447\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/536\/6df\/9ef\/5366df9efa0b0ff257155134fc59629c.png\"\/><\/div>\n<\/div>\n<p>  \u042d\u0442\u043e <i>SDK Platform<\/i>, <i>ARM EABI v7a System Image<\/i> \u0438 <i>Intel x86 Atom System Image<\/i>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 ARM, \u0438 Intel \u043d\u0430\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u042f \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0443\u0433\u0443\u0431\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0438 \u0434\u043b\u044f Android L.<br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Android (\u0438\u043b\u0438 \u0436\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0440\u043e\u0435).  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/bf4\/a18\/266\/bf4a18266e7e2be721452bf118071af7.png\"\/><\/div>\n<\/div>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c (<i>Run-&gt;Run &#8216;app&#8217;<\/i>).  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/584\/093\/d93\/584093d93d9e455636ab5c409182ddbf.png\"\/><\/div>\n<\/div>\n<p>  \u0418 \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u043e\u0432\u044b\u0439 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u2014 \u044f\u0432\u043d\u043e \u0431\u0440\u0443\u0442\u0430\u043b\u044c\u043d\u0435\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u0430\u043f\u0443\u0441\u043a<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/a78\/0a6\/719\/a780a6719e1bca4ae0b8c67a5318d997.png\"\/><\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/d18\/f1b\/9fb\/d18f1b9fb3082c2ddc52e7a221e77fa4.png\"\/><\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/69b\/d6a\/28a\/69bd6a28aa9b3442f5d71987034042b8.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<h5>5. \u0417\u0430\u043f\u0443\u0441\u043a \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435<\/h5>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 NDK, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u042f \u0431\u0443\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Huawei Ascend G300 \u0441 Android 4.0.3<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/cb6\/364\/60f\/cb636460f1fb94e51f4cff1cb242ebbf.png\"\/><\/div>\n<\/div>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c adb-\u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u0423 \u043c\u0435\u043d\u044f \u0441 \u044d\u0442\u0438\u043c \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044d\u0442\u043e \u0432\u043e\u0442\u043a\u043d\u0443\u0442\u044c \u0448\u043d\u0443\u0440 \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u0437\u0430\u0439\u0442\u0438 \u0432 \u043f\u0440\u0438\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u0434\u0438\u0441\u043a \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 adb-\u0434\u0440\u0430\u0439\u0432\u0435\u0440. \u0414\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432\u0441\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430 Prestigio \u043c\u043d\u0435 \u0432 \u0441\u0432\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c Vendor ID \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b (\u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043e\u0442 Google), \u0434\u043b\u044f Samsung \u043d\u0443\u0436\u0435\u043d \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 Kies, \u0431\u044b\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f HTC \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u0431\u044b\u043b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d, \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043f\u043e USB. \u0423 \u043c\u0435\u043d\u044f \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 <i>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438-&gt;\u0414\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432-&gt;\u041e\u0442\u043b\u0430\u0434\u043a\u0430 \u043f\u043e USB<\/i>. \u041d\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0431\u043e\u0440\u043e\u043a \u0438 \u0432\u0435\u0440\u0441\u0438\u0439 Android, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f Android SDK, \u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u041e\u0434\u043d\u0430\u043a\u043e, \u0434\u043b\u044f Huawei \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435: \u0441 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043d\u0435 \u0438\u0434\u0443\u0442 \u043b\u043e\u0433\u0438, \u043d\u0443\u0436\u043d\u043e \u0438\u0445 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043b\u043e\u0433\u0438 \u043d\u0430 Huawei<\/b><\/p>\n<div class=\"spoiler_text\">\u041d\u0430\u0431\u0440\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u043e\u0433\u043e \u043d\u043e\u043c\u0435\u0440\u0430: *#*#2846579#*#* <br \/>  \u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0435 \u043c\u0435\u043d\u044e. <br \/>  \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 <i>ProjectMenu-&gt;Background Setting-&gt;Log Setting<\/i><br \/>  \u041e\u0442\u043a\u0440\u044b\u0442\u044c <i>Log switch<\/i> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0430\u043c <i>ON<\/i>. <br \/>  \u041e\u0442\u043a\u0440\u044b\u0442\u044c <i>Log level setting<\/i> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0432\u0430\u043c \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b <i>verbose<\/i>).<br \/>  \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u0435\u043b\u0435\u0444\u043e\u043d.<\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435: <i>Run-&gt;Run &#8216;app&#8217;<\/i>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412 \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/05a\/d39\/26a\/05ad3926ac38ea32aeaf0e04dff7f791.png\"\/><\/div>\n<\/div>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043f\u043e\u0440\u0442\u0440\u0435\u0442\u0435:  <\/p>\n<ul>\n<li>\u041d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/e38\/b70\/1a9\/e38b701a96f28c52087d39a1323a6250.png\"\/>  <\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/067\/d1f\/950\/067d1f9509da41cbe77b9c1da4528729.png\"\/>  <\/li>\n<\/ul>\n<p>  \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043b\u0430\u043d\u0434\u0448\u0430\u0444\u0442\u0435:   <\/p>\n<ul>\n<li>\u041d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/22d\/541\/911\/22d5419115e63c1237e2fa1be4a55265.png\"\/><\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/2de\/e61\/753\/2dee61753f0ad6efc02748a8652dcb7d.png\"\/><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  <a name=\"NDK\"><\/a><\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Android NDK<\/h4>\n<p>  <\/p>\n<h5>1. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 NDK<\/h5>\n<p>  Android SDK, \u043a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442 Android Studio, \u0430 \u0432\u043e\u0442 NDK \u2014 \u043d\u0435\u0442. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c NDK, \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, <a href=\"http:\/\/developer.android.com\/tools\/sdk\/ndk\/index.html\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>. \u0420\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0438 \u043a\u043b\u0430\u0434\u0435\u043c \u0432 \u043a\u0430\u043a\u0443\u044e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0430\u043f\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <i>D:\\ndk<\/i>, \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0444\u0430\u0439\u043b <i>ndk-build.cmd<\/i> \u043b\u0435\u0436\u0430\u043b \u043f\u0440\u044f\u043c\u043e \u0432 \u043d\u0435\u0439. <b>\u0412\u0430\u0436\u043d\u043e<\/b>: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u0432 \u043f\u0443\u0442\u0438 \u043a NDK \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432.<\/p>\n<h5>2. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e ANDROID_NDK_HOME<\/h5>\n<p>  \u0417\u0430\u0445\u043e\u0434\u0438\u043c \u0432 <i>\u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\\\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\\\u0421\u0438\u0441\u0442\u0435\u043c\u0430<\/i>, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0435\u0432\u0430 <i>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/i>, \u0432 \u043e\u0442\u043a\u0440\u044b\u0432\u0448\u0435\u043c\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 <i>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b<\/i>. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441 \u0438\u043c\u0435\u043d\u0435\u043c <i>ANDROID_NDK_HOME<\/i> \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <i>D:\\ndk<\/i> (\u043f\u0443\u0442\u044c \u043a \u0432\u0430\u0448\u0435\u0439 NDK). <\/p>\n<p>  \u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e, \u0432\u043c\u0435\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a ndk \u0432 \u0444\u0430\u0439\u043b\u0435 <i>local.properties<\/i> \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u0435: <i>MyApplication\\local.properties<\/i>). \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a (\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0432\u043e\u0439\u043d\u044b\u0435 \u0431\u044d\u043a\u0441\u043b\u0435\u0448\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f Windows \u044d\u0442\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e):  <\/p>\n<pre><code class=\"python\">## This file is automatically generated by Android Studio. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file should *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. # # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. sdk.dir=C:\\\\Users\\\\&lt;user&gt;\\\\AppData\\\\Local\\\\Android\\\\android-studio\\\\sdk ndk.dir=D:\\\\ndk <\/code><\/pre>\n<p>  \u041d\u0435 \u0432\u0435\u0440\u044c\u0442\u0435 \u0434\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440\u0443 \u043f\u0440\u043e \u00ab\u0432\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044b\u00bb, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0437-\u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u0414\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043d\u0435 \u0441\u043e\u0432\u0440\u0430\u043b\u0438. \u041d\u0443 \u0438, \u0441\u0430\u043c\u043e \u0441\u043e\u0431\u043e\u0439, \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0412\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b. \u041f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 <i>ANDROID_NDK_HOME<\/i> \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u0432 local.properties \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h5>3. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Android API<\/h5>\n<p>  \u0417\u0430\u0439\u0434\u0438\u0442\u0435 \u0432 <i>NDK\\platforms<\/i> (\u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e <i>D:\\ndk\\platforms<\/i>) \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 API. \u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f 19. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 SDK \u0443 \u043d\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0438 20 \u0438 15. \u0422\u0430\u043a \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 SDK Manager \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c SDK Platform \u0432\u0435\u0440\u0441\u0438\u0438 19, \u0438\u043d\u0430\u0447\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043e\u0431\u0435\u0440\u0435\u0442\u0441\u044f.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0427\u0442\u043e \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/960\/1f7\/b25\/9601f7b2513f1210bc6a19a4579af87c.png\"\/><\/div>\n<\/div>\n<p>  <a name=\"GradleNDK\"><\/a><\/p>\n<h5>4. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c gradle \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 NDK<\/h5>\n<p>  \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u044f \u0431\u0440\u0430\u043b \u0438\u0437 \u0441\u044d\u043c\u043f\u043b\u043e\u0432, \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0445 \u043c\u043e\u0436\u043d\u043e <a href=\"http:\/\/tools.android.com\/tech-docs\/new-build-system\">\u0437\u0434\u0435\u0441\u044c, \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0438\u0437\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<\/a>. \u042f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043b \u0441\u044d\u043c\u043f\u043b\u044b \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 0.11. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u044f \u0431\u0440\u0430\u043b ndkSanAngeles.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c ndkSanAngeles<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u044d\u043c\u043f\u043b\u044b \u0441\u043a\u0430\u0447\u0430\u043d\u044b, \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c. \u0417\u0430\u0442\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 ndkSanAngeles. \u0414\u043b\u044f Android Studio \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u043f\u043a\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0435. \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c <i>File-&gt;Open<\/i>, \u043b\u0438\u0431\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0432 Welcome \u0434\u0438\u0430\u043b\u043e\u0433\u0435, <i>Open Project<\/i>. \u0418\u0449\u0435\u043c \u043f\u0430\u043f\u043a\u0443 ndkSanAngeles \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0430\u043b\u043e\u0433 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430. <br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/7ff\/8a6\/ffa\/7ff8a6ffa06d3a18c8dfc6b08fe9d9b9.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0437\u043e\u0440 \u043d\u0430 \u0444\u0430\u0439\u043b <i>build.gradle<\/i>. \u0412\u043e\u0442 \u0435\u0433\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b:  <\/p>\n<pre><code class=\"java\">buildscript {     repositories {         mavenCentral()     }     dependencies {         classpath 'com.android.tools.build:gradle:0.11.0'     } } apply plugin: 'android'  android {     compileSdkVersion 19     buildToolsVersion '19.1.0'      defaultConfig {         ndk {             moduleName &quot;sanangeles&quot;             cFlags &quot;-DANDROID_NDK -DDISABLE_IMPORTGL&quot;             ldLibs &quot;GLESv1_CM&quot;, &quot;dl&quot;, &quot;log&quot;             stl &quot;stlport_static&quot;         }          \/\/ This actual the app version code. Giving ourselves 1,000,000 values         versionCode = 123      }      buildTypes.debug.jniDebugBuild true      productFlavors {         x86 {             ndk {                 abiFilter &quot;x86&quot;             }              \/\/ this is the flavor part of the version code.             \/\/ It must be higher than the arm one for devices supporting             \/\/ both, as x86 is preferred.             versionCode = 3         }         arm {             ndk {                 abiFilter &quot;armeabi-v7a&quot;             }             versionCode = 2         }         mips {             ndk {                 abiFilter &quot;mips&quot;             }             versionCode = 1         }         fat {             \/\/ fat binary, lowest version code to be             \/\/ the last option             versionCode = 0         }     }      \/\/ make per-variant version code     applicationVariants.all { variant -&gt;         \/\/ get the single flavor         def flavorVersion = variant.productFlavors.get(0).versionCode          \/\/ set the composite code         variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode     } } <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0443 \u043c\u0435\u043d\u044f:  <\/p>\n<pre><code class=\"java\">buildscript {     repositories {         mavenCentral()     }     dependencies {         classpath 'com.android.tools.build:gradle:0.12.+'     } } apply plugin: 'android'  android {     compileSdkVersion 19     buildToolsVersion '20.0.0'      defaultConfig {         ndk {             moduleName &quot;sanangeles&quot;             cFlags &quot;-DANDROID_NDK -DDISABLE_IMPORTGL&quot;             ldLibs &quot;GLESv1_CM&quot;, &quot;dl&quot;, &quot;log&quot;             stl &quot;stlport_static&quot;         }          \/\/ This actual the app version code. Giving ourselves 1,000,000 values         versionCode = 123      }      buildTypes.debug.jniDebugBuild true      productFlavors {         x86 {             ndk {                 abiFilter &quot;x86&quot;             }              \/\/ this is the flavor part of the version code.             \/\/ It must be higher than the arm one for devices supporting             \/\/ both, as x86 is preferred.             versionCode = 3         }         arm {             ndk {                 abiFilter &quot;armeabi-v7a&quot;             }             versionCode = 2         }         mips {             ndk {                 abiFilter &quot;mips&quot;             }             versionCode = 1         }         fat {             \/\/ fat binary, lowest version code to be             \/\/ the last option             versionCode = 0         }     }      \/\/ make per-variant version code     applicationVariants.all { variant -&gt;         \/\/ get the single flavor         def flavorVersion = variant.productFlavors.get(0).versionCode          \/\/ set the composite code         variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode     } } <\/code><\/pre>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:  <\/p>\n<ul>\n<li>\u041e \u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 gradle (<i>classpath &#8216;com.android.tools.build:gradle:0.11.0&#8217;<\/i>) \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0432\u0435\u0440\u0441\u0438\u0438. \u0423 \u043c\u0435\u043d\u044f \u044d\u0442\u043e 0.12.+.<\/li>\n<li><i>compileSdkVersion<\/i> 19 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e NDK.<\/li>\n<li><i>buildToolsVersion<\/i> \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043d\u0430 20. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 SDK Manager, \u0442\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e ndkSanAngeles \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f. \u0411\u0443\u0434\u044c\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0443 \u0432\u0430\u0441.  <\/div>\n<\/div>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u0434 build.gradle, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c \u0438\u0445 \u0434\u0432\u0430. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e MyApplication \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442, \u0430 app \u2014 \u044d\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0438\u043b\u0438 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442), \u0438 \u0443 \u043d\u0438\u0445 build.gradle \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0432\u043e\u0439. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u0430  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">MyApplication-&gt;build.gradle<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">\/\/ Top-level build file where you can add configuration options common to all sub-projects\/modules.  buildscript {     repositories {         jcenter()     }     dependencies {         classpath 'com.android.tools.build:gradle:0.12.+'          \/\/ NOTE: Do not place your application dependencies here; they belong         \/\/ in the individual module build.gradle files     } }  allprojects {     repositories {         jcenter()     } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0418\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0432 \u043a\u043e\u0434\u0435 \u044f\u0432\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b \u043c\u043e\u0434\u0443\u043b\u044f  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">MyApplication-&gt;app-&gt;build.gradle<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">apply plugin: 'com.android.application'  android {     compileSdkVersion 20     buildToolsVersion &quot;20.0.0&quot;      defaultConfig {         applicationId &quot;com.example.markedone.myapp&quot;         minSdkVersion 15         targetSdkVersion 20         versionCode 1         versionName &quot;1.0&quot;     }     buildTypes {         release {             runProguard false             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'         }     } }  dependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     \/\/ You must install or update the Support Repository through the SDK manager to use this dependency.     \/\/compile 'com.android.support:support-v4:19.+'     compile 'com.android.support:support-v4:20.+' } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0435\u0433\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 NDK, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u00ab\u0434\u043e\u043d\u043e\u0440\u0430\u00bb build.gradle \u0438\u0437 ndkSanAngeles.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0437\u0430\u043c\u0435\u043d\u0438\u043c <br \/>  <code>compileSdkVersion 20<\/code><br \/>  \u043d\u0430 <br \/>  <code>compileSdkVersion 19<\/code><br \/>  \u0442\u0430\u043a \u043a\u0430\u043a NDK \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u0432\u0435\u0440\u0441\u0438\u0435\u0439 19. <\/p>\n<p>  \u0412 <i>defaultConfig<\/i> \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 <i>ndk<\/i>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043c <i>targetSdkVersion<\/i> \u043d\u0430 19:  <\/p>\n<pre><code class=\"java\">defaultConfig {         applicationId &quot;com.example.markedone.myapp&quot;         minSdkVersion 15         targetSdkVersion 19         versionCode 1         versionName &quot;1.0&quot;          ndk {             moduleName &quot;myapp&quot;             cFlags &quot;-DANDROID_NDK&quot;             ldLibs &quot;log&quot;             stl &quot;stlport_static&quot;         }     } <\/code><\/pre>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 NDK \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0432 \u0441\u0435\u0431\u044f  <\/p>\n<ul>\n<li><i>moduleName<\/i> \u2014 \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f *.so \u0444\u0430\u0439\u043b\u0430<\/li>\n<li><i>cFlags<\/i> \u2014 \u0444\u043b\u0430\u0433\u0438 C<\/li>\n<li><i>ldLibs<\/i> \u2014 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443<\/li>\n<li><i>stl<\/i> \u2014 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 STL<\/li>\n<\/ul>\n<p>  \u0412 buildTypes \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0434\u043b\u044f debug \u0434\u0435\u0431\u0430\u0436\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 JNI:  <\/p>\n<pre><code class=\"java\">    buildTypes {         release {             runProguard false             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'         }          debug.jniDebugBuild true     } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u043c <i>productFlavors<\/i>. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 *.so \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, *.apk \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0434\u043b\u044f arm \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f arm, \u043f\u043e\u0434 x86 \u2014 \u0434\u043b\u044f x86 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u042d\u0442\u043e\u0442 \u043a\u0443\u0441\u043e\u043a \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d \u0441 ndkSanAngeles. \u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 <i>versionCode<\/i> \u0438\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432: \u0434\u043b\u044f x86 \u0441\u0442\u0430\u0432\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>versionCode<\/i>, \u0442\u0430\u043a \u043a\u0430\u043a \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 x86 \u0438 arm, \u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 x86 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 (\u0432\u0438\u0434\u0438\u043c\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u043d\u0435\u0435 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430), \u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 <i>versionCode<\/i> \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f <i>fat<\/i> (\u043f\u043e \u0438\u0434\u0435\u0435 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u00ab\u0442\u043e\u043b\u0441\u0442\u044b\u0439\u00bb *.apk, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a).  <\/p>\n<pre><code class=\"java\">    productFlavors {         x86 {             ndk {                 abiFilter &quot;x86&quot;             }              \/\/ this is the flavor part of the version code.             \/\/ It must be higher than the arm one for devices supporting             \/\/ both, as x86 is preferred.             versionCode = 3         }         arm {             ndk {                 abiFilter &quot;armeabi-v7a&quot;             }             versionCode = 2         }         mips {             ndk {                 abiFilter &quot;mips&quot;             }             versionCode = 1         }         fat {             \/\/ fat binary, lowest version code to be             \/\/ the last option             versionCode = 0         }     } <\/code><\/pre>\n<p>  \u00ab\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>versionCode<\/i> \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438:  <\/p>\n<pre><code class=\"java\">    \/\/ make per-variant version code     applicationVariants.all { variant -&gt;         \/\/ get the single flavor         def flavorVersion = variant.productFlavors.get(0).versionCode          \/\/ set the composite code         variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode     } <\/code><\/pre>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0435\u043a\u0446\u0438\u044f, <i>dependencies<\/i>. \u0415\u0441\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043c\u0435\u043d\u044f\u043b\u0438 <i>compile &#8216;com.android.support:support-v4:19.+&#8217;<\/i> \u043d\u0430 <i>compile &#8216;com.android.support:support-v4:20.+&#8217;<\/i>, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0443 \u043d\u0430\u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 19.  <\/p>\n<pre><code class=\"java\">dependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     \/\/ You must install or update the Support Repository through the SDK manager to use this dependency.     compile 'com.android.support:support-v4:19.+' } <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 build.gradle<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">apply plugin: 'com.android.application'  android {     compileSdkVersion 19     buildToolsVersion &quot;20.0.0&quot;      defaultConfig {         applicationId &quot;com.example.markedone.myapp&quot;         minSdkVersion 15         targetSdkVersion 19         versionCode 1         versionName &quot;1.0&quot;          ndk {             moduleName &quot;myapp&quot;             cFlags &quot;-DANDROID_NDK&quot;             ldLibs &quot;log&quot;             stl &quot;stlport_static&quot;         }     }      buildTypes {         release {             runProguard false             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'         }          debug.jniDebugBuild true     }      productFlavors {         x86 {             ndk {                 abiFilter &quot;x86&quot;             }              \/\/ this is the flavor part of the version code.             \/\/ It must be higher than the arm one for devices supporting             \/\/ both, as x86 is preferred.             versionCode = 3         }         arm {             ndk {                 abiFilter &quot;armeabi-v7a&quot;             }             versionCode = 2         }         mips {             ndk {                 abiFilter &quot;mips&quot;             }             versionCode = 1         }         fat {             \/\/ fat binary, lowest version code to be             \/\/ the last option             versionCode = 0         }     }      \/\/ make per-variant version code     applicationVariants.all { variant -&gt;         \/\/ get the single flavor         def flavorVersion = variant.productFlavors.get(0).versionCode          \/\/ set the composite code         variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode     }      sourceSets { main { jni.srcDirs = ['src\/main\/jni', 'src\/main\/jni\/'] } } }  dependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     \/\/ You must install or update the Support Repository through the SDK manager to use this dependency.     compile 'com.android.support:support-v4:19.+' } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  <\/p>\n<h5>5. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443 jni<\/h5>\n<p>  \u0412 \u043f\u0430\u043f\u043a\u0435 jni \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c C\/C++ \u0444\u0430\u0439\u043b\u044b. \u042d\u0442\u043e\u0433\u043e \u043e\u0442 \u043d\u0430\u0441 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 NDK. \u041f\u0430\u043f\u043a\u0443 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 <i>MyApplication\/app\/src\/main<\/i>. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 Android Studio, \u043f\u0440\u0438\u0447\u0435\u043c, \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.<br \/>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043c\u043e\u0436\u043d\u043e \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043d\u0430 main \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 \u0447\u0435\u0440\u0435\u0437  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">New-&gt;Directory<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/161\/461\/4b9\/1614614b919306fd0f07c9cb3f4b33e1.png\"\/><\/div>\n<\/div>\n<p>  \u0412\u043e \u0432\u0442\u043e\u0440\u044b\u0445, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c \u043c\u0435\u043d\u044e  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">New-&gt;Folder-&gt;JNI Folder<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/0e0\/b15\/cbc\/0e0b15cbcfedfe2297b92cae54240eff.png\"\/><\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0432\u0438\u0437\u0430\u0440\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0430\u043f\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/2e0\/45c\/d4c\/2e045cd4cfbefa26c5c9fd72337141af.png\"\/><br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/bc9\/a9d\/acf\/bc9a9dacf32ce87deabb3ecdc0b84017.png\"\/><br \/>  \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0434\u0438\u0430\u043b\u043e\u0433\u0435 \u043c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c, \u0434\u043b\u044f \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043f\u0430\u043f\u043a\u0430 jni, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.  <\/div>\n<\/div>\n<p>  <\/p>\n<h5>6. \u0414\u043e\u0431\u0430\u0432\u0438\u043c C++ \u0444\u0430\u0439\u043b\u044b<\/h5>\n<p>  \u0412\u0438\u0437\u0430\u0440\u0434\u0430 \u0434\u043b\u044f C++ \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u043c\u044b \u043a\u043b\u0438\u043a\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043d\u0430 \u043f\u0430\u043f\u043a\u0435 <i>jni<\/i> \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">New-&gt;File<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/7e3\/c04\/c7e\/7e3c04c7ece24218a1c1c108582936b8.png\"\/><\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b <i>myapp.h<\/i>:  <\/p>\n<pre><code>#pragma once  #include &lt;jni.h&gt;  #ifdef __cplusplus extern &quot;C&quot; { #endif  JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz);  #ifdef __cplusplus } #endif <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><code>#pragma once<\/code> \u2014 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 (#ifndef\/#define\/#endif) \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 <code>#pragma once<\/code> \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e\u043c C++ \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432.<\/li>\n<li><code>#include &lt;jni.h&gt;<\/code> \u2014 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a JNI, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0438\u043f\u044b, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0442\u0430\u043c.<\/li>\n<li><code>#ifdef __cplusplus ... #endif<\/code> \u2014 \u043a\u043e\u0434 \u0432\u043d\u0443\u0442\u0440\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 C++ (\u043d\u043e \u043d\u0435 \u0432 C).<\/li>\n<li><code>extern &quot;C&quot; { ... }<\/code> \u2014 \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043e\u0442 name mangling (\u0447\u0442\u043e \u044d\u0442\u043e \u0438 \u043f\u043e\u0447\u0435\u043c\u0443, <a href=\"http:\/\/www.gamedev.ru\/code\/forum\/?id=56367)\">\u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0442\u0443\u0442<\/a>).<\/li>\n<li><code>JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz);<\/code> \u2014 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c. <br \/>  \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u044d\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<br \/> \n<ul>\n<li><i>JNIEXPORT<\/i> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e\u0439 \u043b\u0438\u043d\u043a\u043e\u0432\u043a\u0438.<\/li>\n<li><i>JNICALL<\/i> \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f \u043e \u0432\u044b\u0437\u043e\u0432\u0435.<\/li>\n<li><i>jstring <\/i> \u2014 \u0442\u0438\u043f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 Java. <\/li>\n<li><i>Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI<\/i> \u2014 \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437:<br \/>  <i>Java<\/i> \u2014 \u044f\u0437\u044b\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442.<br \/>  <i>com_example_markedone_myapp<\/i> \u2014 \u044d\u0442\u043e id \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (<i>com.example.markedone.myapp<\/i>).<br \/>  <i>FullscreenActivity<\/i> \u2014 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 Java, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<br \/>  <i>stringFromJNI<\/i> \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0442\u0430\u043a\u0438\u043c \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432 Java).<\/li>\n<li><code>JNIEnv* env, jclass clazz<\/code> \u2014 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u0437 Java. <br \/>  <code>JNIEnv* env <\/code> \u2014 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0438\u0437 \u0441\u0435\u0431\u044f JNI-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435.<br \/>  <code>jclass clazz<\/code> \u2014 \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 Java. \u0417\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e jclass clazz \u2014 \u044d\u0442\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e (<i>static native<\/i>) \u043c\u0435\u0442\u043e\u0434\u0430. \u0414\u043b\u044f \u043d\u0435\u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c <code>jobject obj<\/code>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, myapp.cpp. \u0412 \u043d\u0435\u043c \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code>#include &lt;android\/log.h&gt; #include &lt;string&gt; #include &quot;myapp.h&quot;  JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz) {     std::string tag(&quot;GREETING&quot;);     std::string message(&quot;Hello from C++!&quot;);     __android_log_print(ANDROID_LOG_INFO, tag.c_str(), &quot;%s&quot;, message.c_str());     std::string jniMessage(&quot;Hello from JNI!&quot;);     return env-&gt;NewStringUTF(jniMessage.c_str()); }<\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><code>#include &lt;android\/log.h&gt;<\/code> \u2014 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043b\u043e\u0433, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u0434\u0430\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 (<i>ldLibs \u00ablog\u00bb<\/i>)<\/li>\n<li><code>#include &lt;string&gt;<\/code> \u2014 \u0434\u043b\u044f std::string, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u044f STL.<\/li>\n<li><code>#include &quot;myapp.h&quot;<\/code> \u2014 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0430\u0448 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.<\/li>\n<li> <code>JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz) { ... } - \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0432 &quot;myapp.h&quot;.<\/code><\/li>\n<li><code>std::string tag(&quot;GREETING&quot;); std::string message(&quot;Hello from C++!&quot;);<\/code> \u2014 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 \u043b\u043e\u0433.<\/li>\n<li><code>__android_log_print(ANDROID_LOG_INFO, tag.c_str(), &quot;%s&quot;, message.c_str());<\/code> \u2014 \u0432\u044b\u0432\u043e\u0434 \u0432 \u043b\u043e\u0433. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c 4 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430: \u0442\u0438\u043f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433\u0435, \u0442\u044d\u0433, \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u043e\u043a\u0438, \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0441\u0430\u043c\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435.<\/li>\n<li><code>std::string jniMessage(&quot;Hello from JNI!&quot;);<\/code> \u2014 \u0441\u0442\u0440\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 Java.<\/li>\n<li><code>return env-&gt;NewStringUTF(jniMessage.c_str());<\/code> \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 JNIEnv \u0441\u043e\u0437\u0434\u0430\u0435\u043c jstring \u0438\u0437 C-\u0441\u0442\u0440\u043e\u043a\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u0438\u0434\u0430 <code>(*env)-&gt;<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043d\u0430 C++, \u0430 \u043d\u0435 \u043d\u0430 C.<\/li>\n<\/ul>\n<p>  <\/div>\n<\/div>\n<p>  \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b: stub.cpp, \u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u043f\u0443\u0441\u0442\u044b\u043c. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d *.cpp \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0435 jni, \u0442\u043e ndk-build \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u00abno rule to make target\u00bb.<\/p>\n<h5>7. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u044b\u0437\u043e\u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 Java<\/h5>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0444\u0430\u0439\u043b <i>MyApplication\/app\/src\/main\/java\/com.example.markedone.myapp.FullscreenActivity<\/i>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0443 \u043d\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 java, \u0430 com, example, markedone \u0438 myapp \u2014 \u044d\u0442\u043e \u043f\u0430\u043f\u043a\u0438, \u043d\u043e Android Studio \u044d\u0442\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">package com.example.markedone.myapp;  import com.example.markedone.myapp.util.SystemUiHider;  import android.annotation.TargetApi; import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.MotionEvent; import android.view.View;   \/**  * An example full-screen activity that shows and hides the system UI (i.e.  * status bar and navigation\/system bar) with user interaction.  *  * @see SystemUiHider  *\/ public class FullscreenActivity extends Activity {     \/**      * Whether or not the system UI should be auto-hidden after      * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.      *\/     private static final boolean AUTO_HIDE = true;      \/**      * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after      * user interaction before hiding the system UI.      *\/     private static final int AUTO_HIDE_DELAY_MILLIS = 3000;      \/**      * If set, will toggle the system UI visibility upon interaction. Otherwise,      * will show the system UI visibility upon interaction.      *\/     private static final boolean TOGGLE_ON_CLICK = true;      \/**      * The flags to pass to {@link SystemUiHider#getInstance}.      *\/     private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION;      \/**      * The instance of the {@link SystemUiHider} for this activity.      *\/     private SystemUiHider mSystemUiHider;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);          setContentView(R.layout.activity_fullscreen);          final View controlsView = findViewById(R.id.fullscreen_content_controls);         final View contentView = findViewById(R.id.fullscreen_content);          \/\/ Set up an instance of SystemUiHider to control the system UI for         \/\/ this activity.         mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS);         mSystemUiHider.setup();         mSystemUiHider                 .setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() {                     \/\/ Cached values.                     int mControlsHeight;                     int mShortAnimTime;                      @Override                     @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)                     public void onVisibilityChange(boolean visible) {                         if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.HONEYCOMB_MR2) {                             \/\/ If the ViewPropertyAnimator API is available                             \/\/ (Honeycomb MR2 and later), use it to animate the                             \/\/ in-layout UI controls at the bottom of the                             \/\/ screen.                             if (mControlsHeight == 0) {                                 mControlsHeight = controlsView.getHeight();                             }                             if (mShortAnimTime == 0) {                                 mShortAnimTime = getResources().getInteger(                                         android.R.integer.config_shortAnimTime);                             }                             controlsView.animate()                                     .translationY(visible ? 0 : mControlsHeight)                                     .setDuration(mShortAnimTime);                         } else {                             \/\/ If the ViewPropertyAnimator APIs aren't                             \/\/ available, simply show or hide the in-layout UI                             \/\/ controls.                             controlsView.setVisibility(visible ? View.VISIBLE : View.GONE);                         }                          if (visible && AUTO_HIDE) {                             \/\/ Schedule a hide().                             delayedHide(AUTO_HIDE_DELAY_MILLIS);                         }                     }                 });          \/\/ Set up the user interaction to manually show or hide the system UI.         contentView.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 if (TOGGLE_ON_CLICK) {                     mSystemUiHider.toggle();                 } else {                     mSystemUiHider.show();                 }             }         });          \/\/ Upon interacting with UI controls, delay any scheduled hide()         \/\/ operations to prevent the jarring behavior of controls going away         \/\/ while interacting with the UI.         findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener);     }      @Override     protected void onPostCreate(Bundle savedInstanceState) {         super.onPostCreate(savedInstanceState);          \/\/ Trigger the initial hide() shortly after the activity has been         \/\/ created, to briefly hint to the user that UI controls         \/\/ are available.         delayedHide(100);     }       \/**      * Touch listener to use for in-layout UI controls to delay hiding the      * system UI. This is to prevent the jarring behavior of controls going away      * while interacting with activity UI.      *\/     View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {         @Override         public boolean onTouch(View view, MotionEvent motionEvent) {             if (AUTO_HIDE) {                 delayedHide(AUTO_HIDE_DELAY_MILLIS);             }             return false;         }     };      Handler mHideHandler = new Handler();     Runnable mHideRunnable = new Runnable() {         @Override         public void run() {             mSystemUiHider.hide();         }     };      \/**      * Schedules a call to hide() in [delay] milliseconds, canceling any      * previously scheduled calls.      *\/     private void delayedHide(int delayMillis) {         mHideHandler.removeCallbacks(mHideRunnable);         mHideHandler.postDelayed(mHideRunnable, delayMillis);     } } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0432 \u043a\u043b\u0430\u0441\u0441 FullscreenActivity:  <\/p>\n<pre><code class=\"java\">    static {         System.loadLibrary(&quot;myapp&quot;);     }      private static native String stringFromJNI(); <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 <i>stringFromJNI<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 C++. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043e\u043d \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u043a\u0430\u043a static (\u044d\u0442\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e (jclass \u0438\u043b\u0438 jobject) \u0431\u0443\u0434\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 C++-\u0444\u0443\u043d\u043a\u0446\u0438\u0438) \u0438 native. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c native-\u043c\u0435\u0442\u043e\u0434 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043c\u044b \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432 C++, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u0430 \u043d\u0430\u0441 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 JNI. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0443\u0436\u0435 \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u0415\u0441\u043b\u0438 \u0432\u044b, \u043a\u0430\u043a \u0438 \u044f, \u0432\u044b\u0431\u0440\u0430\u043b\u0438 FullscreenActivity, \u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c Dummy Button, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043f\u043e \u0441\u0443\u0442\u0438, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442. \u0418 \u0434\u0430\u0436\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c touch listener, \u043f\u0443\u0441\u0442\u044c \u0438 \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043b\u0443\u0447\u0448\u0438\u0439 (\u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437, \u043f\u043e\u043a\u0430 \u043f\u0430\u043b\u0435\u0446 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435), \u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043b\u043e\u0434\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e.<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u043f\u043e\u0440\u0442\u0430:<br \/>  <code>import android.widget.Button;<\/code><br \/>  \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439.<\/p>\n<p>  \u041d\u0430\u0439\u0434\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"java\">    View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {         @Override         public boolean onTouch(View view, MotionEvent motionEvent) {             if (AUTO_HIDE) {                 delayedHide(AUTO_HIDE_DELAY_MILLIS);             }             return false;         }     }; <\/code><\/pre>\n<p>   \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a \u043f\u0435\u0440\u0435\u0434 <code>return false<\/code>.  <\/p>\n<pre><code class=\"java\">    View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {         @Override         public boolean onTouch(View view, MotionEvent motionEvent) {             if (AUTO_HIDE) {                 delayedHide(AUTO_HIDE_DELAY_MILLIS);             }             final String message = stringFromJNI();             final Button button = (Button)findViewById(R.id.dummy_button);             final String actualText = button.getText().toString();             if(message.equals(actualText)) {                 button.setText(&quot;Dummy Button&quot;);             }             else {                 button.setText(message);             }             return false;         }     }; <\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li><code>final String message = stringFromJNI();<\/code> \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 C++. \u0412\u044b\u0437\u043e\u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u2014 \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u0432\u0441\u0435 \u0438 \u0437\u0430\u0442\u0435\u0432\u0430\u043b\u043e\u0441\u044c.<\/li>\n<li><code>final Button button = (Button)findViewById(R.id.dummy_button);<\/code> \u2014 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043d\u043e\u043f\u043a\u0438.<\/li>\n<li><code>final String actualText = button.getText().toString();<\/code> \u2014 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u043a\u043d\u043e\u043f\u043a\u0438.<\/li>\n<li><code>if(message.equals(actualText))<\/code> \u2014 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0438\u0437 C++, \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043a\u043d\u043e\u043f\u043a\u0438.\n<ul>\n<li><code>button.setText(&quot;Dummy Button&quot;);<\/code> \u2014 \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b, \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430 Dummy Button.<\/li>\n<li><code>button.setText(message);<\/code> \u2014 \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f, \u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 C++.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u043b\u043d\u044b\u0439 \u043b\u0438\u0441\u0442\u0438\u043d\u0433 \u043a\u043b\u0430\u0441\u0441\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">package com.example.markedone.myapp;  import com.example.markedone.myapp.util.SystemUiHider;  import android.annotation.TargetApi; import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.MotionEvent; import android.view.View; import android.widget.Button;   \/**  * An example full-screen activity that shows and hides the system UI (i.e.  * status bar and navigation\/system bar) with user interaction.  *  * @see SystemUiHider  *\/ public class FullscreenActivity extends Activity {      static {         System.loadLibrary(&quot;myapp&quot;);     }      private static native String stringFromJNI();       \/**      * Whether or not the system UI should be auto-hidden after      * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.      *\/     private static final boolean AUTO_HIDE = true;      \/**      * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after      * user interaction before hiding the system UI.      *\/     private static final int AUTO_HIDE_DELAY_MILLIS = 3000;      \/**      * If set, will toggle the system UI visibility upon interaction. Otherwise,      * will show the system UI visibility upon interaction.      *\/     private static final boolean TOGGLE_ON_CLICK = true;      \/**      * The flags to pass to {@link SystemUiHider#getInstance}.      *\/     private static final int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION;      \/**      * The instance of the {@link SystemUiHider} for this activity.      *\/     private SystemUiHider mSystemUiHider;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);          setContentView(R.layout.activity_fullscreen);          final View controlsView = findViewById(R.id.fullscreen_content_controls);         final View contentView = findViewById(R.id.fullscreen_content);          \/\/ Set up an instance of SystemUiHider to control the system UI for         \/\/ this activity.         mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS);         mSystemUiHider.setup();         mSystemUiHider                 .setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() {                     \/\/ Cached values.                     int mControlsHeight;                     int mShortAnimTime;                      @Override                     @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)                     public void onVisibilityChange(boolean visible) {                         if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.HONEYCOMB_MR2) {                             \/\/ If the ViewPropertyAnimator API is available                             \/\/ (Honeycomb MR2 and later), use it to animate the                             \/\/ in-layout UI controls at the bottom of the                             \/\/ screen.                             if (mControlsHeight == 0) {                                 mControlsHeight = controlsView.getHeight();                             }                             if (mShortAnimTime == 0) {                                 mShortAnimTime = getResources().getInteger(                                         android.R.integer.config_shortAnimTime);                             }                             controlsView.animate()                                     .translationY(visible ? 0 : mControlsHeight)                                     .setDuration(mShortAnimTime);                         } else {                             \/\/ If the ViewPropertyAnimator APIs aren't                             \/\/ available, simply show or hide the in-layout UI                             \/\/ controls.                             controlsView.setVisibility(visible ? View.VISIBLE : View.GONE);                         }                          if (visible && AUTO_HIDE) {                             \/\/ Schedule a hide().                             delayedHide(AUTO_HIDE_DELAY_MILLIS);                         }                     }                 });          \/\/ Set up the user interaction to manually show or hide the system UI.         contentView.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View view) {                 if (TOGGLE_ON_CLICK) {                     mSystemUiHider.toggle();                 } else {                     mSystemUiHider.show();                 }             }         });          \/\/ Upon interacting with UI controls, delay any scheduled hide()         \/\/ operations to prevent the jarring behavior of controls going away         \/\/ while interacting with the UI.         findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener);     }      @Override     protected void onPostCreate(Bundle savedInstanceState) {         super.onPostCreate(savedInstanceState);          \/\/ Trigger the initial hide() shortly after the activity has been         \/\/ created, to briefly hint to the user that UI controls         \/\/ are available.         delayedHide(100);     }       \/**      * Touch listener to use for in-layout UI controls to delay hiding the      * system UI. This is to prevent the jarring behavior of controls going away      * while interacting with activity UI.      *\/     View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {         @Override         public boolean onTouch(View view, MotionEvent motionEvent) {             if (AUTO_HIDE) {                 delayedHide(AUTO_HIDE_DELAY_MILLIS);             }             final String message = stringFromJNI();             final Button button = (Button)findViewById(R.id.dummy_button);             final String actualText = button.getText().toString();             if(message.equals(actualText)) {                 button.setText(&quot;Dummy Button&quot;);             }             else {                 button.setText(message);             }             return false;         }     };      Handler mHideHandler = new Handler();     Runnable mHideRunnable = new Runnable() {         @Override         public void run() {             mSystemUiHider.hide();         }     };      \/**      * Schedules a call to hide() in [delay] milliseconds, canceling any      * previously scheduled calls.      *\/     private void delayedHide(int delayMillis) {         mHideHandler.removeCallbacks(mHideRunnable);         mHideHandler.postDelayed(mHideRunnable, delayMillis);     }  } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h5>17. \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442<\/h5>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 Build-&gt;Make Project. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f Java-\u0447\u0430\u0441\u0442\u044c.<br \/>  \u0417\u0430\u0442\u0435\u043c Run-&gt;Run &#8216;app&#8217;. \u0410 \u0432\u043e\u0442 \u0437\u0434\u0435\u0441\u044c, \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0430\u0440\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0430 C++ \u0447\u0430\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 \u0432 \u043d\u0435\u0439 \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438, \u0442\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u0442, \u0442\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u043e\u0433 \u0432\u044b\u0431\u043e\u0440\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0438, \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f OK \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0420\u0430\u0431\u043e\u0442\u0430 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/971\/48f\/4a1\/97148f4a1407f0b03410a92dbc251099.png\"\/> <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/6ea\/6ec\/25d\/6ea6ec25d1e6cbf2e558c280a105fbc1.png\"\/><\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u044b\u0432\u043e\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/462\/a07\/218\/462a07218c6a451f5ed821c850126231.png\"\/><\/div>\n<\/div>\n<p>  <\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u043c\u043d\u0435 Android Studio \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c. \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f Android SDK \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043b\u043e\u0442\u043d\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u0430\u0436\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0415\u0441\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u043b\u044e\u0448\u043a\u0438, \u0442\u0430\u043a\u0438\u0435, \u043a\u0430\u043a Help me choose. \u041f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u2014 Gradle, \u2014 \u043d\u043e \u0442\u0443\u0442 \u0436\u0435 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a: \u043f\u043e \u043d\u0435\u0439 \u043e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. <\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435, \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 NDK \u0435\u0449\u0435 \u0441\u044b\u0440\u043e\u0432\u0430\u0442\u0430, \u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438. \u041e\u0447\u0435\u043d\u044c \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u044e\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 C++-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. <\/p>\n<p>  P.S. \u0414\u0435\u0431\u0430\u0433\u0430 C++ \u043a\u043e\u0434\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e. \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/228365\/\"> http:\/\/habrahabr.ru\/post\/228365\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t<img decoding=\"async\" src=\"http:\/\/habrastorage.org\/getpro\/habr\/post_images\/f21\/6ab\/2b6\/f216ab2b699fb5d28ef1568bb3da3dd0.png\"\/><\/p>\n<p>  \u041d\u0430 \u0434\u043d\u044f\u0445 \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f Android Studio \u043d\u0435\u0443\u043a\u043b\u043e\u043d\u043d\u043e \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0441\u044f \u043a \u0435\u0434\u0438\u043d\u0438\u0446\u0435, \u0432 \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0435\u043c \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0441\u044f \u043e\u0431 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0433\u0440\u0430\u0431\u043b\u044f\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0430\u0442\u044c\u0438-\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430. <\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044f \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0433\u0443\u0440\u0443 Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u0438\u0439 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0432\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u0442\u0435. \u0417\u0430\u0442\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Android Studio \u043f\u043e\u0434 Windows \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Android NDK. <\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e: \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 (\u0447\u0435\u0441\u0442\u043d\u043e, \u0441\u0430\u043c \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b), \u0434\u0430\u0436\u0435 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u044f \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0438 \u043a\u043e\u0434\u0430 \u0441\u043f\u0440\u044f\u0442\u0430\u043b \u043f\u043e\u0434 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u044b.   <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-228365","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/228365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=228365"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/228365\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=228365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=228365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=228365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}