{"id":309898,"date":"2020-09-14T15:00:22","date_gmt":"2020-09-14T15:00:22","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=309898"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=309898","title":{"rendered":"20 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/alconost\/blog\/519070\/\">\n<h4>\u041d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445, \u043d\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a Android.<\/h4>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/db\/ix\/j4\/dbixj4kq_ckzoj24pd8kv4j7atw.jpeg\" width=\"900\" height=\"574\"><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u044f \u043d\u0430\u0434 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u043e <a href=\"https:\/\/medium.com\/better-programming\/30-best-android-libraries-and-projects-of-2019-a1e35124f110\" rel=\"noopener noreferrer nofollow\">30 \u043b\u0443\u0447\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Android 2019 \u0433.<\/a> \u0438 <a href=\"https:\/\/medium.com\/better-programming\/25-best-android-libraries-projects-of-2020-summer-edition-dfb030a7fb0a\" rel=\"noopener noreferrer nofollow\">25 \u043b\u0443\u0447\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Android 2020 \u0433.<\/a>, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f Android \u2014 \u043d\u0438\u0436\u0435 \u043e\u043d\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c. <\/p>\n<\/p>\n<h3>1. AinD \u2014 Android (Anbox) \u0432 \u0414\u043e\u043a\u0435\u0440\u0435<\/h3>\n<p><a href=\"https:\/\/github.com\/aind-containers\/aind\" rel=\"noopener noreferrer nofollow\">AinD<\/a> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Android, \u043f\u043e\u043c\u0435\u0449\u0430\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <a href=\"https:\/\/anbox.io\/\" rel=\"noopener noreferrer nofollow\">Anbox<\/a> \u0432 \u0414\u043e\u043a\u0435\u0440.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/un\/su\/cw\/unsucwe6l2mlhs6i_sjthpqdpae.png\" width=\"700\" height=\"572\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d, AinD \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u0445 IaaS \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. Docker Hub: <code>aind\/aind<\/code>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043a\u0440\u0430\u0436\u0438 (\u0441\u043c. <a href=\"https:\/\/github.com\/aind-containers\/aind#faq\" rel=\"noopener noreferrer nofollow\">\u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 Android (\u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u043b\u0430\u043a\u043e) \u0434\u043b\u044f \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u043e\u0432 \u043d\u0430 iOS \u0438 Windows<\/p>\n<\/li>\n<\/ul>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars2.githubusercontent.com\/u\/63350730?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>aind-containers\/aind<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/aind-containers\/aind\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>2. Booster<\/h3>\n<p><a href=\"https:\/\/github.com\/didi\/booster\" rel=\"noopener noreferrer nofollow\">Booster<\/a> \u2014 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442: \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u043b\u0435\u0433\u043a\u0438\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u0440\u0435\u0448\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/as\/nx\/p4\/asnxp4_8ndkkhma-4uuh-ffhqsu.png\" width=\"700\" height=\"249\"><figcaption><\/figcaption><\/figure>\n<p>Booster \u2014 \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0441\u0436\u0430\u0442\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0442. \u0434. Booster \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 15\u201325% \u0438 \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 1\u201310 \u041c\u0411.<\/p>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0.<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/repository-images.githubusercontent.com\/182968735\/b6ff3280-6785-11e9-9000-b1b213e8efc6&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>didi\/booster<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/didi\/booster\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>3. Shake<\/h3>\n<p><a href=\"https:\/\/www.shakebugs.com\" rel=\"noopener noreferrer nofollow\">Shake<\/a> \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a, \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0441\u0431\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043f\u0440\u0438 \u0431\u0435\u0442\u0430-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442\u0441\u044f \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9h\/wy\/nj\/9hwynjdvzf4r252ffda6n7nptqy.gif\" width=\"300\" height=\"634\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0433\u0438\u0444\u043a\u0435 \u0432\u044b\u0448\u0435, \u0435\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u044f\u0445\u043d\u0443\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u0447\u0435\u0442\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0437\u0430\u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u043c \u043e\u0442\u0447\u0435\u0442.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e, \u0432 <a href=\"https:\/\/www.shakebugs.com\/docs\/android\/setup\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c <a href=\"https:\/\/demo.shakebugs.com\/shyp-agency\/LSG1QZUE\/5\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u0437\u043d\u0443\u0442\u0440\u0438.&nbsp;<\/p>\n<\/p>\n<h3>4. Scabbard<\/h3>\n<p><a href=\"https:\/\/github.com\/arunkumar9t2\/scabbard\" rel=\"noopener noreferrer nofollow\">Scabbard<\/a> \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 Dagger 2.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/_v\/hq\/ef\/_vhqefv40gcnr7_n5rjxjxnoop0.gif\" width=\"1023\" height=\"627\"><figcaption><\/figcaption><\/figure>\n<p>Scabbard \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430, \u0441\u0445\u0435\u043c\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e: \u043e\u043d \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441 Gradle, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 Android Studio \u0438 IntelliJ (\u043d\u0430\u0436\u0430\u0432 \u0437\u043d\u0430\u0447\u043e\u043a \u043d\u0430 \u043b\u0435\u0432\u043e\u043c \u043f\u043e\u043b\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0434\u043b\u044f <code>@Component<\/code> \u0438\u043b\u0438 <code>@Subcomponent<\/code>).<\/p>\n<p><a href=\"https:\/\/arunkumar9t2.github.io\/scabbard\/\" rel=\"noopener noreferrer nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d<\/a> \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e: \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a. <\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/repository-images.githubusercontent.com\/145462355\/9ac41e80-292e-11ea-8857-b2e749a2d588&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>arunkumar9t2\/scabbard<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/arunkumar9t2\/scabbard\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>5. Can I Drop Jetifier?<\/h3>\n<p>\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0430 AndroidX \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u0423\u0441\u043f\u0435\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 Jetifier (\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 AndroidX \u0432\u0441\u0451 \u0435\u0449\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443.<\/p>\n<blockquote>\n<p><em>\u00ab\u0412\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 AndroidX, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442. \u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043d\u0430 AndroidX \u2014 \u0438\u043b\u0438 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0438\u0445, \u0435\u0441\u043b\u0438 \u0443\u0436\u0435 \u0432\u044b\u0448\u043b\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u00bb,<\/em> \u2014 Can I Drop Jetifier?<\/p>\n<\/blockquote>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mw\/8j\/h6\/mw8jh6gwwc1i7rp0qcxzhjcy2oe.png\" width=\"700\" height=\"551\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f, \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0. \u041e\u0447\u0435\u043d\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e! &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars1.githubusercontent.com\/u\/1078123?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>plnice\/can-i-drop-jetifier<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/plnice\/can-i-drop-jetifier\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>6. ADB Event Mirror<\/h3>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/adb-event-mirror\/\" rel=\"noopener noreferrer nofollow\">ADB Event Mirror<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u0430\u0441\u0430\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430, \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 \u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hj\/g_\/lq\/hjg_lqpuenlay_risu-levwvv5o.gif\" width=\"1024\" height=\"867\"><figcaption><\/figcaption><\/figure>\n<blockquote>\n<p><em>\u00ab\u042d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043d\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u043c\u0430\u043a\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439\u00bb,<\/em> \u2014 ADB Event Mirror<\/p>\n<\/blockquote>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/66577?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>JakeWharton\/adb-event-mirror<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/adb-event-mirror\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>7. Android Emulator Container Scripts<\/h3>\n<p><a href=\"https:\/\/github.com\/google\/android-emulator-container-scripts\" rel=\"noopener noreferrer nofollow\">Android Emulator Container Scripts<\/a> \u2014 \u043d\u0430\u0431\u043e\u0440 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0414\u043e\u043a\u0435\u0440\u0430) \u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 Python \u0432\u0435\u0440\u0441\u0438\u0439 2 \u0438 3. \u042d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/1342004?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>google\/android-emulator-container-scripts<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/google\/android-emulator-container-scripts\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>8. Autoplay<\/h3>\n<p><a href=\"https:\/\/github.com\/beworker\/autoplay\" rel=\"noopener noreferrer nofollow\">Autoplay<\/a> \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f Gradle, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 Android \u0432 Google Play. <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wm\/se\/jv\/wmsejvt-lefk9l9h2zdy5dob__a.png\" width=\"400\" height=\"400\"><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 <a href=\"https:\/\/github.com\/Triple-T\/gradle-play-publisher\" rel=\"noopener noreferrer nofollow\">Gradle Play Publisher<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/fastlane.tools\/\" rel=\"noopener noreferrer nofollow\">Fastlane<\/a>. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a <code>apk<\/code> \u0438\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 App Bundle. <\/p>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 Autoplay:<\/p>\n<ul>\n<li>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 CI\/CD.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0434\u0435\u0436\u0435\u043d \u0438 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435\u043d.<\/p>\n<\/li>\n<\/ul>\n<p>\u0423 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 <code>1.3.0<\/code>, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars2.githubusercontent.com\/u\/768721?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>beworker\/autoplay<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/beworker\/autoplay\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>9. \u041f\u043b\u0430\u0433\u0438\u043d Gradle \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0430\u0433\u0438\u043d \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 Gradle<\/a> \u2014 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/checkstyle.md\" rel=\"noopener noreferrer nofollow\">Checkstyle<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/pmd.md\" rel=\"noopener noreferrer nofollow\">PMD<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/findbugs.md\" rel=\"noopener noreferrer nofollow\">FindBugs<\/a> [\u041f\u041e\u0414\u0414\u0415\u0420\u0416\u041a\u0410 \u041f\u0420\u0415\u041a\u0420\u0410\u0429\u0415\u041d\u0410] [\u0443\u0434\u0430\u043b\u0435\u043d \u0432 Gradle 6.0]<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/spotbugs.md\" rel=\"noopener noreferrer nofollow\">SpotBugs<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/detekt.md\" rel=\"noopener noreferrer nofollow\">Detekt<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/android_lint.md\" rel=\"noopener noreferrer nofollow\">Android Lint<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/ktlint.md\" rel=\"noopener noreferrer nofollow\">KtLint<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043c\u044b\u0441\u043b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u2014 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u044e \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443. \u041f\u043b\u0430\u0433\u0438\u043d \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d (\u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430). &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars2.githubusercontent.com\/u\/74874?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>novoda\/gradle-static-analysis-plugin<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>10. AndroidUtilCode<\/h3>\n<p><a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\" rel=\"noopener noreferrer nofollow\">AndroidUtilCode<\/a> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f Android, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Android \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 API \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. <\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439: <a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\/blob\/master\/lib\/utilcode\/README-CN.md\" rel=\"noopener noreferrer nofollow\">utilcode<\/a> (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0447\u0430\u0441\u0442\u043e) \u0438 <a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\/blob\/master\/lib\/subutil\/README-CN.md\" rel=\"noopener noreferrer nofollow\">subutil<\/a> (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e, \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c).<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ve\/h2\/op\/veh2opd3gtr1nwh8zscwpmpetbo.png\" width=\"700\" height=\"461\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 <code>1.29.0<\/code>, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/repository-images.githubusercontent.com\/64558143\/cc594b80-9aab-11e9-8eff-6ccf4b6a8f95&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>Blankj\/AndroidUtilCode<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>11. Hijckr<\/h3>\n<blockquote>\n<p>\u00ab<a href=\"https:\/\/github.com\/JustinAngel\/Hijckr\" rel=\"noopener noreferrer nofollow\">Hijckr<\/a> \u0432\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0444\u043b\u044f\u0446\u0438\u044e \u043c\u0430\u043a\u0435\u0442\u0430 Android \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b\u00bb.<\/p>\n<\/blockquote>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/oi\/zq\/ct\/oizqctfj2aucf_1uf_si_bf-6ri.png\" width=\"487\" height=\"487\"><figcaption><\/figcaption><\/figure>\n<p> \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043c\u0430\u043a\u0435\u0442\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>TextView<\/code>, Android \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 <code>android.widget.TextView<\/code>, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c <code>xml<\/code>-\u0442\u0435\u0433\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c <code>com.myapp.TextView<\/code>. <\/p>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Java). &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/529257?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>JustinAngel\/Hijckr<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/JustinAngel\/Hijckr\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>12. Roomigrant<\/h3>\n<p><a href=\"https:\/\/github.com\/MatrixDev\/Roomigrant\" rel=\"noopener noreferrer nofollow\">Roomigrant<\/a> \u2014 \u044d\u0442\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Android Room \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 Room \u0444\u0430\u0439\u043b\u044b \u0441\u0445\u0435\u043c\u044b \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u2014 \u0442\u043e \u0435\u0441\u0442\u044c, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b Room \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <code>build.gradle<\/code>, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 README.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT, \u0432\u0435\u0440\u0441\u0438\u044f <code>0.1.7<\/code>. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/1215187?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>MatrixDev\/Roomigrant<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/MatrixDev\/Roomigrant\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>13. RoomExplorer<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Room \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0435: <a href=\"https:\/\/github.com\/wajahatkarim3\/RoomExplorer\" rel=\"noopener noreferrer nofollow\">RoomExplorer<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0442. \u0434.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/to\/sr\/dy\/tosrdyx1f1ydiyji1xr5ten7nqm.gif\" width=\"240\" height=\"507\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/8867121?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>wajahatkarim3\/RoomExplorer<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/wajahatkarim3\/RoomExplorer\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>14. Android Framer<\/h3>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <a href=\"https:\/\/github.com\/faruktoptas\/androidframer\" rel=\"noopener noreferrer nofollow\">android-framer<\/a> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u043c\u043a\u0438 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043a \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\u043c \u0432 Google Play. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u2014 <a href=\"https:\/\/docs.fastlane.tools\/actions\/frameit\/\" rel=\"noopener noreferrer nofollow\">fastlane frameit<\/a>.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xb\/hr\/a6\/xbhra6boiub-5sursunmryrcv8m.jpeg\" width=\"700\" height=\"595\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Python \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <a href=\"https:\/\/imagemagick.org\/\" rel=\"noopener noreferrer nofollow\">ImageMagick<\/a>. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u043c\u043a\u0438 (\u0444\u043e\u043d\u044b) \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/facebook.design\/devices\" rel=\"noopener noreferrer nofollow\">Facebook Design<\/a>. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0448\u0440\u0438\u0444\u0442, \u043a\u0435\u0433\u043b\u044c, \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0430\u043c\u043a\u0438 \u0438 \u0442. \u0434.<\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars1.githubusercontent.com\/u\/1595227?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>faruktoptas\/androidframer<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/faruktoptas\/androidframer\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>15. Dependency Tree Diff<\/h3>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/dependency-tree-diff\" rel=\"noopener noreferrer nofollow\">Dependency Tree Diff<\/a> \u2014 \u044d\u0442\u043e \u00ab\u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 <code>dependencies<\/code> Gradle, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u043a \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438\u00bb.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/m6\/yu\/42\/m6yu42kujlt7htc3ue4wucrx_ua.png\" width=\"700\" height=\"288\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 <code>brew<\/code> \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>jar<\/code>-\u0444\u0430\u0439\u043b. <\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/66577?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>JakeWharton\/dependency-tree-diff<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/dependency-tree-diff\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>16. Gradle Doctor<\/h3>\n<p><a href=\"https:\/\/github.com\/runningcode\/gradle-doctor\" rel=\"noopener noreferrer nofollow\">Gradle Doctor<\/a> \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 Gradle. \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c: \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0441\u0431\u043e\u0440\u043a\u0438, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0445 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 Dagger, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>JAVA_HOME<\/code> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0435\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f <code>JAVA_HOME<\/code> \u0432 IDE, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043f\u0443\u0441\u0442\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 <code>src<\/code> (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 <a href=\"https:\/\/github.com\/gradle\/gradle\/issues\/2463\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439<\/a> <a href=\"https:\/\/developers.soundcloud.com\/blog\/dagger-reflect\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0432 \u043a\u0435\u0448\u0435<\/a>), \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<p>\u0423 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f <a href=\"https:\/\/runningcode.github.io\/gradle-doctor\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a>, \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0. &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/332597?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>runningcode\/gradle-doctor<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/runningcode\/gradle-doctor\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>17. GloballyDynamic<\/h3>\n<p><a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\" rel=\"noopener noreferrer nofollow\">GloballyDynamic<\/a> \u2014 \u044d\u0442\u043e \u00ab\u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u043e\u0431\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/developer.android.com\/guide\/app-bundle\/dynamic-delivery\" rel=\"noopener noreferrer nofollow\">Dynamic Delivery<\/a>, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0435\u0434\u0438\u043d\u044b\u0439 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 API \u0434\u043b\u044f Android \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gt\/t9\/bv\/gtt9bvmmfql07dco5bfxpnenkqq.png\" width=\"700\" height=\"393\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>Google Play (<a href=\"https:\/\/developer.android.com\/guide\/app-bundle\/dynamic-delivery\" rel=\"noopener noreferrer nofollow\">Play Feature Delivery<\/a>)<\/p>\n<\/li>\n<li>\n<p>Huawei App Gallery (<a href=\"https:\/\/developer.huawei.com\/consumer\/en\/doc\/development\/AppGallery-connect-Guides\/agc-featuredelivery-introduction\" rel=\"noopener noreferrer nofollow\">Dynamic Ability<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u2014 \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 <a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\/blob\/master\/globallydynamic-server-lib\" rel=\"noopener noreferrer nofollow\">\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c GloballyDynamic<\/a> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Amazon App Store, Samsung Galaxy Store, Firebase App Distribution \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430).<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\" rel=\"noopener noreferrer nofollow\">README<\/a> \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c.<\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/5256210?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>jeppeman\/GloballyDynamic<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>18. Dagger Browser<\/h3>\n<p><a href=\"https:\/\/github.com\/Snapchat\/dagger-browser\" rel=\"noopener noreferrer nofollow\">Dagger Browser<\/a> \u2014 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435) \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0445\u0435\u043c\u0435 Dagger \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/io\/ou\/cb\/iooucba47k-ptg4va2jndnz-8dk.png\" width=\"700\" height=\"485\"><figcaption><\/figcaption><\/figure>\n<blockquote>\n<p><em>\u00ab\u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <\/em><a href=\"https:\/\/dagger.dev\/spi.html\" rel=\"noopener noreferrer nofollow\"><em>SPI<\/em><\/a><em>-\u043f\u043b\u0430\u0433\u0438\u043d\u0430 Dagger, \u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <\/em><a href=\"https:\/\/github.com\/facebook\/create-react-app\" rel=\"noopener noreferrer nofollow\"><em>CRA (create-react-app)<\/em><\/a><em> \u0438 TypeScript\u00bb, <\/em> \u2014 Dagger Browser<\/p>\n<\/blockquote>\n<p>\u0415\u0441\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043e \u043f\u043e\u0434 <a href=\"https:\/\/github.com\/Snapchat\/dagger-browser\/blob\/master\/LICENSE.txt\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0435\u0445\u043f\u0443\u043d\u043a\u0442\u043e\u0432\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 BSD<\/a>. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/40505220?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>Snapchat\/dagger-browser<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/Snapchat\/dagger-browser\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>19. Wormhole<\/h3>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/wormhole\" rel=\"noopener noreferrer nofollow\">Wormhole<\/a> \u2014 \u00ab\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0432 <code>android.jar<\/code> \u0431\u0443\u0434\u0443\u0449\u0438\u0435 API-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u0441\u0430\u0445\u0430\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0441\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 API \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e D8 \u0438 R8\u00bb.<\/p>\n<p>Wormhole \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u043c\u0438 API. \u041f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<blockquote>\n<p><em>\u00ab\u0412 Android R \u0435\u0441\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0437 Java 9 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <\/em><code>List.of<\/code><em>. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f D8 \u0438 R8 \u043e\u043d\u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u044d\u043a\u0441\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u044b\u043c\u0438 \u0434\u043b\u044f API 30 \u0438 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0441 API 1. \u0412 D8 \u0438 R8 \u0435\u0441\u0442\u044c \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u0435\u0441\u0430\u0445\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f API, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0449\u0435 \u043d\u0435\u0442 \u0432 <\/em><code>android.jar<\/code><em>. \u0418 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u2014 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435\u00bb.<\/em><\/p>\n<\/blockquote>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/66577?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>JakeWharton\/wormhole<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/wormhole\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>20. MNML<\/h3>\n<p><a href=\"https:\/\/github.com\/afollestad\/mnml\" rel=\"noopener noreferrer nofollow\">MNML<\/a> (\u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u00abminimal\u00bb \u2014 \u00ab\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439\u00bb) \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 Android.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pa\/zt\/qx\/paztqxldmrneruddjdxadtpef_y.png\" width=\"700\" height=\"637\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0445 \u0442\u0430\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432\u043e \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c.<\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/repository-images.githubusercontent.com\/161720371\/3335d980-629f-11e9-9507-e6c806ef73e1&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>afollestad\/mnml<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/afollestad\/mnml\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u0451. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u043c\u043e\u0433\u043b\u0438 \u0432\u0430\u0441 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0438\u0442\u044c. \u0414\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0438!<\/p>\n<p> &nbsp; &nbsp;<\/p>\n<h4>\u041e \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0435<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d \u0432 Alconost.<\/p>\n<p>Alconost \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/alconost.com\/ru\/services\/game-localization?utm_source=habr&amp;utm_medium=article&amp;utm_content=20-android-dev-tools&amp;utm_campaign=translation\" rel=\"noopener noreferrer nofollow\">\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438\u0433\u0440<\/a>, <a href=\"https:\/\/alconost.com\/ru\/services\/software-localization?utm_source=habr&amp;utm_medium=article&amp;utm_content=20-android-dev-tools&amp;utm_campaign=translation\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0430\u0439\u0442\u043e\u0432<\/a> \u043d\u0430 70 \u044f\u0437\u044b\u043a\u043e\u0432. \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0438-\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0438 \u044f\u0437\u044b\u043a\u0430, \u043b\u0438\u043d\u0433\u0432\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u0431\u043b\u0430\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0441 API, \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 24\/7, \u043b\u044e\u0431\u044b\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<p>\u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u043c <a href=\"https:\/\/alconost.com\/ru\/services\/video-production?utm_source=habr&amp;utm_medium=article&amp;utm_content=20-android-dev-tools&amp;utm_campaign=translation\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0435 \u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a\u0438<\/a> \u2014 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432, \u043f\u0440\u043e\u0434\u0430\u044e\u0449\u0438\u0435, \u0438\u043c\u0438\u0434\u0436\u0435\u0432\u044b\u0435, \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0435, \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435, \u0442\u0438\u0437\u0435\u0440\u044b, \u044d\u043a\u0441\u043f\u043b\u0435\u0439\u043d\u0435\u0440\u044b, \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b \u0434\u043b\u044f Google Play \u0438 App Store.<\/p>\n<\/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=\"https:\/\/habr.com\/ru\/company\/alconost\/blog\/519070\/\"> https:\/\/habr.com\/ru\/company\/alconost\/blog\/519070\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/alconost\/blog\/519070\/\">\n<h4>\u041d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445, \u043d\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a Android.<\/h4>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u044f \u043d\u0430\u0434 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u043e <a href=\"https:\/\/medium.com\/better-programming\/30-best-android-libraries-and-projects-of-2019-a1e35124f110\" rel=\"noopener noreferrer nofollow\">30 \u043b\u0443\u0447\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Android 2019 \u0433.<\/a> \u0438 <a href=\"https:\/\/medium.com\/better-programming\/25-best-android-libraries-projects-of-2020-summer-edition-dfb030a7fb0a\" rel=\"noopener noreferrer nofollow\">25 \u043b\u0443\u0447\u0448\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Android 2020 \u0433.<\/a>, \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f Android \u2014 \u043d\u0438\u0436\u0435 \u043e\u043d\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u041f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c. <\/p>\n<\/p>\n<h3>1. AinD \u2014 Android (Anbox) \u0432 \u0414\u043e\u043a\u0435\u0440\u0435<\/h3>\n<p><a href=\"https:\/\/github.com\/aind-containers\/aind\" rel=\"noopener noreferrer nofollow\">AinD<\/a> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Android, \u043f\u043e\u043c\u0435\u0449\u0430\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b <a href=\"https:\/\/anbox.io\/\" rel=\"noopener noreferrer nofollow\">Anbox<\/a> \u0432 \u0414\u043e\u043a\u0435\u0440.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d, AinD \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430\u0445 IaaS \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. Docker Hub: <code>aind\/aind<\/code>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043a\u0440\u0430\u0436\u0438 (\u0441\u043c. <a href=\"https:\/\/github.com\/aind-containers\/aind#faq\" rel=\"noopener noreferrer nofollow\">\u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b<\/a>)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 Android (\u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u043b\u0430\u043a\u043e) \u0434\u043b\u044f \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u043e\u0432 \u043d\u0430 iOS \u0438 Windows<\/p>\n<\/li>\n<\/ul>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars2.githubusercontent.com\/u\/63350730?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>aind-containers\/aind<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/aind-containers\/aind\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>2. Booster<\/h3>\n<p><a href=\"https:\/\/github.com\/didi\/booster\" rel=\"noopener noreferrer nofollow\">Booster<\/a> \u2014 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442: \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438, \u043b\u0435\u0433\u043a\u0438\u0439, \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u0440\u0435\u0448\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435\u043c \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>Booster \u2014 \u044d\u0442\u043e \u043d\u0430\u0431\u043e\u0440 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0441\u0436\u0430\u0442\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0442. \u0434. Booster \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 15\u201325% \u0438 \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0430 1\u201310 \u041c\u0411.<\/p>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0.<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/repository-images.githubusercontent.com\/182968735\/b6ff3280-6785-11e9-9000-b1b213e8efc6&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>didi\/booster<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/didi\/booster\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>3. Shake<\/h3>\n<p><a href=\"https:\/\/www.shakebugs.com\" rel=\"noopener noreferrer nofollow\">Shake<\/a> \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a, \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0441\u0431\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432 \u0438\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043f\u0440\u0438 \u0431\u0435\u0442\u0430-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442\u0441\u044f \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u0433\u0438\u0444\u043a\u0435 \u0432\u044b\u0448\u0435, \u0435\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u044f\u0445\u043d\u0443\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0442\u0447\u0435\u0442\u0430 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u0437\u0430\u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u043c \u043e\u0442\u0447\u0435\u0442.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e, \u0432 <a href=\"https:\/\/www.shakebugs.com\/docs\/android\/setup\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u0432\u0441\u0451 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0435\u0441\u0442\u044c <a href=\"https:\/\/demo.shakebugs.com\/shyp-agency\/LSG1QZUE\/5\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u0437\u043d\u0443\u0442\u0440\u0438.&nbsp;<\/p>\n<\/p>\n<h3>4. Scabbard<\/h3>\n<p><a href=\"https:\/\/github.com\/arunkumar9t2\/scabbard\" rel=\"noopener noreferrer nofollow\">Scabbard<\/a> \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 Dagger 2.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>Scabbard \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430, \u0441\u0445\u0435\u043c\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e: \u043e\u043d \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441 Gradle, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 Android Studio \u0438 IntelliJ (\u043d\u0430\u0436\u0430\u0432 \u0437\u043d\u0430\u0447\u043e\u043a \u043d\u0430 \u043b\u0435\u0432\u043e\u043c \u043f\u043e\u043b\u0435 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0445\u0435\u043c\u0443 \u0434\u043b\u044f <code>@Component<\/code> \u0438\u043b\u0438 <code>@Subcomponent<\/code>).<\/p>\n<p><a href=\"https:\/\/arunkumar9t2.github.io\/scabbard\/\" rel=\"noopener noreferrer nofollow\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d<\/a> \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e: \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a. <\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/repository-images.githubusercontent.com\/145462355\/9ac41e80-292e-11ea-8857-b2e749a2d588&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>arunkumar9t2\/scabbard<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/arunkumar9t2\/scabbard\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>5. Can I Drop Jetifier?<\/h3>\n<p>\u041a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0430 AndroidX \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u0423\u0441\u043f\u0435\u0445 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 Jetifier (\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043b\u0430\u0441\u0441\u0430\u043c\u0438 AndroidX \u0432\u0441\u0451 \u0435\u0449\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443.<\/p>\n<blockquote>\n<p><em>\u00ab\u0412\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 AndroidX, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u043f\u0430\u0434\u0430\u0435\u0442. \u042d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043d\u0430 AndroidX \u2014 \u0438\u043b\u0438 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0438\u0445, \u0435\u0441\u043b\u0438 \u0443\u0436\u0435 \u0432\u044b\u0448\u043b\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u00bb,<\/em> \u2014 Can I Drop Jetifier?<\/p>\n<\/blockquote>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u0430\u044f, \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0. \u041e\u0447\u0435\u043d\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e! &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars1.githubusercontent.com\/u\/1078123?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>plnice\/can-i-drop-jetifier<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/plnice\/can-i-drop-jetifier\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>6. ADB Event Mirror<\/h3>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/adb-event-mirror\/\" rel=\"noopener noreferrer nofollow\">ADB Event Mirror<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u0430\u0441\u0430\u043d\u0438\u044f \u044d\u043a\u0440\u0430\u043d\u0430, \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 \u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<blockquote>\n<p><em>\u00ab\u042d\u0442\u043e\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u043d\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439, \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438 \u043c\u0430\u043a\u0435\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439\u00bb,<\/em> \u2014 ADB Event Mirror<\/p>\n<\/blockquote>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430\u0445 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/66577?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>JakeWharton\/adb-event-mirror<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/adb-event-mirror\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>7. Android Emulator Container Scripts<\/h3>\n<p><a href=\"https:\/\/github.com\/google\/android-emulator-container-scripts\" rel=\"noopener noreferrer nofollow\">Android Emulator Container Scripts<\/a> \u2014 \u043d\u0430\u0431\u043e\u0440 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0414\u043e\u043a\u0435\u0440\u0430) \u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u0441 Python \u0432\u0435\u0440\u0441\u0438\u0439 2 \u0438 3. \u042d\u0442\u043e\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/1342004?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>google\/android-emulator-container-scripts<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/google\/android-emulator-container-scripts\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>8. Autoplay<\/h3>\n<p><a href=\"https:\/\/github.com\/beworker\/autoplay\" rel=\"noopener noreferrer nofollow\">Autoplay<\/a> \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f Gradle, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 Android \u0432 Google Play. <\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043e\u0439 <a href=\"https:\/\/github.com\/Triple-T\/gradle-play-publisher\" rel=\"noopener noreferrer nofollow\">Gradle Play Publisher<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/fastlane.tools\/\" rel=\"noopener noreferrer nofollow\">Fastlane<\/a>. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a <code>apk<\/code> \u0438\u043b\u0438 \u043d\u0430\u0431\u043e\u0440 App Bundle. <\/p>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 Autoplay:<\/p>\n<ul>\n<li>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 CI\/CD.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u0434\u0435\u0436\u0435\u043d \u0438 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435\u043d.<\/p>\n<\/li>\n<\/ul>\n<p>\u0423 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 <code>1.3.0<\/code>, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars2.githubusercontent.com\/u\/768721?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>beworker\/autoplay<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/beworker\/autoplay\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>9. \u041f\u043b\u0430\u0433\u0438\u043d Gradle \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\" rel=\"noopener noreferrer nofollow\">\u041f\u043b\u0430\u0433\u0438\u043d \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 Gradle<\/a> \u2014 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/checkstyle.md\" rel=\"noopener noreferrer nofollow\">Checkstyle<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/pmd.md\" rel=\"noopener noreferrer nofollow\">PMD<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/findbugs.md\" rel=\"noopener noreferrer nofollow\">FindBugs<\/a> [\u041f\u041e\u0414\u0414\u0415\u0420\u0416\u041a\u0410 \u041f\u0420\u0415\u041a\u0420\u0410\u0429\u0415\u041d\u0410] [\u0443\u0434\u0430\u043b\u0435\u043d \u0432 Gradle 6.0]<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/spotbugs.md\" rel=\"noopener noreferrer nofollow\">SpotBugs<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/detekt.md\" rel=\"noopener noreferrer nofollow\">Detekt<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/android_lint.md\" rel=\"noopener noreferrer nofollow\">Android Lint<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\/blob\/master\/docs\/tools\/ktlint.md\" rel=\"noopener noreferrer nofollow\">KtLint<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u043c\u044b\u0441\u043b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u2014 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0441\u0432\u043e\u044e \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443. \u041f\u043b\u0430\u0433\u0438\u043d \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d (\u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430). &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars2.githubusercontent.com\/u\/74874?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>novoda\/gradle-static-analysis-plugin<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/novoda\/gradle-static-analysis-plugin\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>10. AndroidUtilCode<\/h3>\n<p><a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\" rel=\"noopener noreferrer nofollow\">AndroidUtilCode<\/a> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f Android, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Android \u0441 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0438 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 API \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. <\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439: <a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\/blob\/master\/lib\/utilcode\/README-CN.md\" rel=\"noopener noreferrer nofollow\">utilcode<\/a> (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0447\u0430\u0441\u0442\u043e) \u0438 <a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\/blob\/master\/lib\/subutil\/README-CN.md\" rel=\"noopener noreferrer nofollow\">subutil<\/a> (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0434\u043a\u043e, \u043d\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c).<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0435\u0440\u0441\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 <code>1.29.0<\/code>, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/repository-images.githubusercontent.com\/64558143\/cc594b80-9aab-11e9-8eff-6ccf4b6a8f95&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>Blankj\/AndroidUtilCode<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/Blankj\/AndroidUtilCode\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>11. Hijckr<\/h3>\n<blockquote>\n<p>\u00ab<a href=\"https:\/\/github.com\/JustinAngel\/Hijckr\" rel=\"noopener noreferrer nofollow\">Hijckr<\/a> \u0432\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u043d\u0444\u043b\u044f\u0446\u0438\u044e \u043c\u0430\u043a\u0435\u0442\u0430 Android \u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u044b\u00bb.<\/p>\n<\/blockquote>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p> \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043c\u0430\u043a\u0435\u0442\u0430 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>TextView<\/code>, Android \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 <code>android.widget.TextView<\/code>, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c <code>xml<\/code>-\u0442\u0435\u0433\u0438 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c <code>com.myapp.TextView<\/code>. <\/p>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Java). &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/529257?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>JustinAngel\/Hijckr<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/JustinAngel\/Hijckr\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>12. Roomigrant<\/h3>\n<p><a href=\"https:\/\/github.com\/MatrixDev\/Roomigrant\" rel=\"noopener noreferrer nofollow\">Roomigrant<\/a> \u2014 \u044d\u0442\u043e \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 Android Room \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 Room \u0444\u0430\u0439\u043b\u044b \u0441\u0445\u0435\u043c\u044b \u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u2014 \u0442\u043e \u0435\u0441\u0442\u044c, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0445\u0435\u043c\u044b Room \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 <code>build.gradle<\/code>, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 README.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 MIT, \u0432\u0435\u0440\u0441\u0438\u044f <code>0.1.7<\/code>. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/1215187?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>MatrixDev\/Roomigrant<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/MatrixDev\/Roomigrant\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>13. RoomExplorer<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Room \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0435: <a href=\"https:\/\/github.com\/wajahatkarim3\/RoomExplorer\" rel=\"noopener noreferrer nofollow\">RoomExplorer<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u0432 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c, \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0442. \u0434.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/8867121?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>wajahatkarim3\/RoomExplorer<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/wajahatkarim3\/RoomExplorer\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>14. Android Framer<\/h3>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 <a href=\"https:\/\/github.com\/faruktoptas\/androidframer\" rel=\"noopener noreferrer nofollow\">android-framer<\/a> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0430\u043c\u043a\u0438 \u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043a \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430\u043c \u0432 Google Play. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u2014 <a href=\"https:\/\/docs.fastlane.tools\/actions\/frameit\/\" rel=\"noopener noreferrer nofollow\">fastlane frameit<\/a>.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Python \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <a href=\"https:\/\/imagemagick.org\/\" rel=\"noopener noreferrer nofollow\">ImageMagick<\/a>. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0440\u0430\u043c\u043a\u0438 (\u0444\u043e\u043d\u044b) \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/facebook.design\/devices\" rel=\"noopener noreferrer nofollow\">Facebook Design<\/a>. \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0448\u0440\u0438\u0444\u0442, \u043a\u0435\u0433\u043b\u044c, \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0430\u043c\u043a\u0438 \u0438 \u0442. \u0434.<\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars1.githubusercontent.com\/u\/1595227?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>faruktoptas\/androidframer<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/faruktoptas\/androidframer\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>15. Dependency Tree Diff<\/h3>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/dependency-tree-diff\" rel=\"noopener noreferrer nofollow\">Dependency Tree Diff<\/a> \u2014 \u044d\u0442\u043e \u00ab\u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 <code>dependencies<\/code> Gradle, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0443\u0442\u044c \u043a \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438\u00bb.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 <code>brew<\/code> \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>jar<\/code>-\u0444\u0430\u0439\u043b. <\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars0.githubusercontent.com\/u\/66577?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>JakeWharton\/dependency-tree-diff<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/dependency-tree-diff\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>16. Gradle Doctor<\/h3>\n<p><a href=\"https:\/\/github.com\/runningcode\/gradle-doctor\" rel=\"noopener noreferrer nofollow\">Gradle Doctor<\/a> \u2014 \u044d\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438 Gradle. \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c: \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0441\u0431\u043e\u0440\u043a\u0438, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0445 \u0437\u0430\u0442\u0440\u0430\u0442 \u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0439 Dagger, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>JAVA_HOME<\/code> \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0435\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f <code>JAVA_HOME<\/code> \u0432 IDE, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0441\u0442\u043e\u0432, \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043f\u0443\u0441\u0442\u044b\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 <code>src<\/code> (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 <a href=\"https:\/\/github.com\/gradle\/gradle\/issues\/2463\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439<\/a> <a href=\"https:\/\/developers.soundcloud.com\/blog\/dagger-reflect\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0432 \u043a\u0435\u0448\u0435<\/a>), \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<p>\u0423 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f <a href=\"https:\/\/runningcode.github.io\/gradle-doctor\/\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a>, \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u0443\u0449\u0435\u043d \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 Apache 2.0. &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/332597?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>runningcode\/gradle-doctor<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/runningcode\/gradle-doctor\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>17. GloballyDynamic<\/h3>\n<p><a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\" rel=\"noopener noreferrer nofollow\">GloballyDynamic<\/a> \u2014 \u044d\u0442\u043e \u00ab\u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u043e\u0431\u0449\u0435\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 <a href=\"https:\/\/developer.android.com\/guide\/app-bundle\/dynamic-delivery\" rel=\"noopener noreferrer nofollow\">Dynamic Delivery<\/a>, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u043b\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0435\u0434\u0438\u043d\u044b\u0439 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 API \u0434\u043b\u044f Android \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432\u00bb.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>Google Play (<a href=\"https:\/\/developer.android.com\/guide\/app-bundle\/dynamic-delivery\" rel=\"noopener noreferrer nofollow\">Play Feature Delivery<\/a>)<\/p>\n<\/li>\n<li>\n<p>Huawei App Gallery (<a href=\"https:\/\/developer.huawei.com\/consumer\/en\/doc\/development\/AppGallery-connect-Guides\/agc-featuredelivery-introduction\" rel=\"noopener noreferrer nofollow\">Dynamic Ability<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u2014 \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 <a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\/blob\/master\/globallydynamic-server-lib\" rel=\"noopener noreferrer nofollow\">\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c GloballyDynamic<\/a> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Amazon App Store, Samsung Galaxy Store, Firebase App Distribution \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430).<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\" rel=\"noopener noreferrer nofollow\">README<\/a> \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c.<\/p>\n<p>\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 Apache 2.0. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/5256210?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>jeppeman\/GloballyDynamic<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/jeppeman\/GloballyDynamic\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>18. Dagger Browser<\/h3>\n<p><a href=\"https:\/\/github.com\/Snapchat\/dagger-browser\" rel=\"noopener noreferrer nofollow\">Dagger Browser<\/a> \u2014 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 (\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435) \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0441\u0445\u0435\u043c\u0435 Dagger \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<blockquote>\n<p><em>\u00ab\u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <\/em><a href=\"https:\/\/dagger.dev\/spi.html\" rel=\"noopener noreferrer nofollow\"><em>SPI<\/em><\/a><em>-\u043f\u043b\u0430\u0433\u0438\u043d\u0430 Dagger, \u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <\/em><a href=\"https:\/\/github.com\/facebook\/create-react-app\" rel=\"noopener noreferrer nofollow\"><em>CRA (create-react-app)<\/em><\/a><em> \u0438 TypeScript\u00bb, <\/em> \u2014 Dagger Browser<\/p>\n<\/blockquote>\n<p>\u0415\u0441\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043e \u043f\u043e\u0434 <a href=\"https:\/\/github.com\/Snapchat\/dagger-browser\/blob\/master\/LICENSE.txt\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0435\u0445\u043f\u0443\u043d\u043a\u0442\u043e\u0432\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 BSD<\/a>. &nbsp; &nbsp;<\/p>\n<div class=\"embed_link\">\n<div class=\"embed__thumb\" style=\"background-image: url(&quot;https:\/\/avatars3.githubusercontent.com\/u\/40505220?s=400&amp;v=4&quot;);\"><\/div>\n<div class=\"embed__caption\">\n<div class=\"embed__caption-title\"><span>Snapchat\/dagger-browser<\/span><\/div>\n<p><a href=\"https:\/\/github.com\/Snapchat\/dagger-browser\" target=\"_blank\" class=\"embed__caption-link\">github.com<\/a><\/div>\n<\/div>\n<h3>19. Wormhole<\/h3>\n<p><a href=\"https:\/\/github.com\/JakeWharton\/wormhole\" rel=\"noopener noreferrer nofollow\">Wormhole<\/a> \u2014 \u00ab\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0432 <code>android.jar<\/code><\/p>\n<\/div>\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-309898","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309898","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=309898"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309898\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}