{"id":353730,"date":"2024-05-20T22:33:52","date_gmt":"2024-05-20T22:33:52","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=353730"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=353730","title":{"rendered":"<span>\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e FVM (Flutter Version Management) \u2013 \u0436\u043e\u043d\u0433\u043b\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 Flutter sdk \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0dc\/ec2\/ee5\/0dcec2ee58082ba0bf683063fb202b39.gif\" width=\"780\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0dc\/ec2\/ee5\/0dcec2ee58082ba0bf683063fb202b39.gif\"\/><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442 \u0434\u0440\u0443\u0437\u044c\u044f. \u0412 \u0436\u0438\u0437\u043d\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e stable) \u0432\u0435\u0440\u0441\u0438\u0435\u0439 flutter sdk \u0443\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043a\u043d\u0443\u0442\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0441\u0442\u0430\u0440\u043e\u0439, \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 (\u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0435) \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 stable, \u0432\u0435\u0440\u0441\u0438\u0438. \u041b\u0438\u0431\u043e \u0436\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437 beta \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0412\u0440\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u043c &#171;Flutter SDK archive&#187; \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0443\u0442\u0438 \u0432 IDE, \u043d\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0448\u0435.<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443) fvm \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 flutter sdk. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u043d\u043e \u043f\u043e\u0438\u0441\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0435 \u0434\u0430\u043b (\u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u043e \u043c\u043e\u0451 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u0432\u0435\u0434\u044c \u0435\u0433\u043e \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 &#171;\u041f\u0435\u0440\u0435\u0432\u043e\u0434&#187;). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u043b\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u044f\u044e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u0435. \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c!<\/p>\n<hr\/>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#introduction\" rel=\"noopener noreferrer nofollow\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#beginning_of_work\" rel=\"noopener noreferrer nofollow\">\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#commands\" rel=\"noopener noreferrer nofollow\">\u041a\u043e\u043c\u0430\u043d\u0434\u044b<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#frequent\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044b\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#rare\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u0434\u043a\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#episodic\" rel=\"noopener noreferrer nofollow\">\u042d\u043f\u0438\u0437\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#using\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#in_system\" rel=\"noopener noreferrer nofollow\">\u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#in_ide\" rel=\"noopener noreferrer nofollow\">\u0412 IDE<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#in_android_studio\" rel=\"noopener noreferrer nofollow\">\u0412 Android Studio<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#in_vs_code\" rel=\"noopener noreferrer nofollow\">\u0412 VS Code<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#gui\" rel=\"noopener noreferrer nofollow\">GUI<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#mini_investigation\" rel=\"noopener noreferrer nofollow\">\u041c\u0438\u043d\u0438-\u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#useful_tips\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#bonus_story\" rel=\"noopener noreferrer nofollow\">\u0411\u043e\u043d\u0443\u0441\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#analogues\" rel=\"noopener noreferrer nofollow\">\u0410\u043d\u0430\u043b\u043e\u0433\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#puro\" rel=\"noopener noreferrer nofollow\">Puro<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#conclusion\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#useful_links\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"introduction\" id=\"introduction\"><\/a><\/p>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0447\u0435\u0433\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u0442\u0435\u043c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 flutter sdk \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u044f \u043f\u0440\u043e <code>flutter [down|up]grade<\/code>).<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 flutter sdk, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043f\u043e \u043c\u0430\u043d\u043e\u0432\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u0440\u0441\u043a\u043e\u0439 \u043f\u0430\u043b\u043e\u0447\u043a\u0438. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0439\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 &#171;\u0440\u0435\u0430\u043a\u0446\u0438\u0438&#187; \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b flutter sdk, \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u044b\u0433\u0430\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0442\u043a\u0430\u043c\u0438 stable \u0438 beta.<\/p>\n<p>\u042d\u0442\u043e\u0439 \u043f\u0430\u043b\u043e\u0447\u043a\u043e\u0439 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f FVM, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f flutter sdk \u0432\u0435\u0440\u0441\u0438\u0439. \u041f\u0435\u0440\u0432\u044b\u0439 commit \u0434\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/commit\/72615bc600506472b47741488ff5c22834250b73\" rel=\"noopener noreferrer nofollow\">22 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2019\u0433<\/a>, \u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0443\u0436\u0435 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/releases\/tag\/v0.1.1\" rel=\"noopener noreferrer nofollow\">27 \u0444\u0435\u0432 2019\u0433<\/a>. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f <a href=\"https:\/\/fvm.app\/\" rel=\"noopener noreferrer nofollow\">fvm.app<\/a>, \u0438 \u0432\u043e\u0442 \u0447\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442 \u043d\u0430\u0441 \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u043a\u0440\u044b\u043b\u044c\u0446\u0435 \u043f\u0430\u0440\u0430\u0434\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/db9\/23a\/c2d\/db923ac2d22257d7c925013a53f70466.png\" width=\"1448\" height=\"297\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db9\/23a\/c2d\/db923ac2d22257d7c925013a53f70466.png\"\/><\/figure>\n<ul>\n<li>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e Flutter SDK \u0432\u0435\u0440\u0441\u0438\u0439 \u2013 &#171;\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 Flutter SDK. \u0411\u044b\u0441\u0442\u0440\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438 \u0438 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u0440\u0435\u043b\u0438\u0437\u043e\u0432.&#187;<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2013 &#171;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e Flutter SDK \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0443\u0442\u0438 SDK \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432 IDE. \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438 CI \u0441\u0440\u0435\u0434\u0430\u043c\u0438.&#187;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u2013  &#171;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Flutter SDK. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Flutter SDK. Docker-\u043e\u0431\u0440\u0430\u0437\u044b \u0434\u043b\u044f CI \u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Flutter \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432.&#187;<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0431\u0435\u0437 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0439, \u0432\u0441\u0451 \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c.<\/p>\n<p><a class=\"anchor\" name=\"beginning_of_work\" id=\"beginning_of_work\"><\/a><\/p>\n<h2>\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 flutter sdk \u0441\u043b\u0435\u0434\u0443\u044f <a href=\"https:\/\/docs.flutter.dev\/get-started\/install\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439<\/a> \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e. \u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 fvm.<\/p>\n<blockquote>\n<p>\u2139 \u0412\u0435\u0441\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/releases\/tag\/2.4.1\" rel=\"noopener noreferrer nofollow\">2.4.1<\/a>. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 <code>changelog.md<\/code> \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u0435\u0440\u0441\u0438\u0438 3.0.0, \u0438 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u044f \u043f\u0440\u043e\u0448\u0451\u043b\u0441\u044f \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u0430\u043c \u0433\u0440\u044f\u0434\u0443\u0449\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c.<\/p>\n<\/blockquote>\n<p>\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448 \u043f\u043a. \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 brew \u0434\u043b\u044f unix \u0438\u043b\u0438 choco \u0434\u043b\u044f windows:<\/p>\n<pre><code class=\"bash\">brew tap leoafarias\/fvm   brew install fvm  choco install fvm<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/releases\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c fvm \u043a\u0430\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 dart-<a href=\"https:\/\/pub.dev\/packages\/fvm\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u043a\u0435\u0442<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">dart pub global activate fvm<\/code><\/pre>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f, \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a (\u043c\u044b \u0436\u0435 flutter dev!?), \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0436\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f (\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043c\u0438\u043b\u0430\u044f \u043e\u0448\u0438\u0431\u043e\u0447\u043a\u0430 \u2013 <a href=\"https:\/\/github.com\/dart-lang\/pub\/issues\/2593\" rel=\"noopener noreferrer nofollow\">Running a globally activated binary after SDK upgrade &#8212; Can&#8217;t load Kernel binary: Invalid SDK hash<\/a>. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 dart, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f snapshot \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u0418 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e VM \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 dart \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c snapshot, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 dart.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438 \u0434\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p><a class=\"anchor\" name=\"commands\" id=\"commands\"><\/a><\/p>\n<h2>\u041a\u043e\u043c\u0430\u043d\u0434\u044b<\/h2>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <code>fvm<\/code> \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code>Available commands:   config     Set configuration for FVM   dart       Proxies Dart Commands   destroy    Destroy FVM cache by deleting FVM directory   doctor     Shows information about environment, and project configuration.   exec       Executes scripts with the configured Flutter SDK   flavor     Switches between different project flavors   flutter    Proxies Flutter Commands   global     Sets Flutter SDK Version as a global   install    Installs Flutter SDK Version   list       Lists installed Flutter SDK Versions   releases   View all Flutter SDK releases available for install.   remove     Removes Flutter SDK Version   spawn      Spawns a command on a Flutter version   use        Sets Flutter SDK Version you would like to use in a project<\/code><\/pre>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e 14 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f (<code>gh repo clone fluttertools\/fvm<\/code>) \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \ud83d\ude42<\/p>\n<p><a class=\"anchor\" name=\"frequent\" id=\"frequent\"><\/a><\/p>\n<h3>\u0427\u0430\u0441\u0442\u044b\u0435<\/h3>\n<p>\u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435  \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<ul>\n<li>\n<p><code>fvm install &lt;version><\/code> \u2013 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e\/\u043a\u0430\u043d\u0430\u043b flutter sdk.<\/p>\n<\/li>\n<li>\n<p><code>fvm dart<\/code> \u2013 \u0432\u044b\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b dart sdk, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 flutter sdk. \u042d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c dart sdk, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a: <\/p>\n<ul>\n<li>\n<p><code>dart run build_runner build<\/code>, <code>dart pub upgrade<\/code>, <code>dart migrate<\/code>, <code>dart fix \u2014apply<\/code>, <code>dart create<\/code>, <code>dart test<\/code> \u0438 \u043f\u0440\u043e\u0447\u0438\u043c;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>fvm flutter<\/code> \u2013 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 flutter sdk, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <code>flutter build<\/code>, <code>flutter pub<\/code>, <code>flutter run<\/code> \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p><code>fvm use &lt;version><\/code> \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e flutter sdk \u0432\u0435\u0440\u0441\u0438\u044e. \u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043f\u0430\u043f\u043a\u0443 <code>.fvm<\/code> \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 flutter sdk \u0438 \u0444\u0430\u0439\u043b <code>fvm_config.json<\/code> \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439. \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438: <\/p>\n<ul>\n<li>\n<p><code>--force<\/code>, \u0447\u0442\u043e\u0431\u044b \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f flutter-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 dart-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u043b\u0438 \u0436\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c flutter-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0436\u0435.<\/p>\n<\/li>\n<li>\n<p><code>--pin<\/code>, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0435\u043b\u0438\u0437 \u0441 \u043a\u0430\u043d\u0430\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>fvm use stable --pin<\/code> \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk \u0441 \u043a\u0430\u043d\u0430\u043b\u0430 <code>stable<\/code> (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0430) \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0451 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<\/li>\n<li>\n<p><code>--flavor<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 sdk \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 &#171;\u0430\u0440\u043e\u043c\u0430\u0442\u044b&#187;, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u043e flutter. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e &#171;\u0430\u0440\u043e\u043c\u0430\u0442\u0430&#187; \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a: <\/p>\n<ul>\n<li>\n<p><code>fvm use &lt;version> --flavor &lt;flavor_name><\/code> \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433-\u0444\u0430\u0439\u043b:<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code class=\"json\">{   \"flutterSdkVersion\": \"stable\",   \"flavors\": {     \"dev\": \"beta\",     \"staging\": \"2.0.3\",     \"prod\": \"1.22.6\"   } }<\/code><\/pre>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 &#171;\u0430\u0440\u043e\u043c\u0430\u0442&#187;, \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p><code>fvm flavor staging<\/code>, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 flutter sdk \u0432\u0435\u0440\u0441\u0438\u0438 <code>2.0.3<\/code><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"rare\" id=\"rare\"><\/a><\/p>\n<h3>\u0420\u0435\u0434\u043a\u0438\u0435<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0436\u0435:<\/p>\n<ul>\n<li>\n<p><code>fvm global<\/code> \u2013 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>default<\/code>-\u0432\u0435\u0440\u0441\u0438\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u041d\u0415 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>fvm flutter &lt;command><\/code>, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u042d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e \u0430\u0432\u0442\u043e\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0445\u043e\u0447\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0418\u041b\u0418 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/discussions\/469#discussioncomment-5012824\" rel=\"noopener noreferrer nofollow\">\u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d<\/a>.<\/p>\n<\/li>\n<li>\n<p><code>fvm list<\/code> \u2013 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0441\u0435\u0445 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 flutter sdk. \u042d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm use<\/code>, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e (\u0445\u043e\u0442\u044f \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443) \u0438\u043b\u0438 \u0436\u0435, \u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p><code>fvm releases<\/code> \u2013 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c \u0447\u0435\u0441\u0442\u043d\u043e, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0440\u0430\u0439\u043d\u0435 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c, \u0431\u044b\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e dev \u043a\u0430\u043d\u0430\u043b \u0431\u044b\u043b \u043d\u0435\u0434\u0430\u0432\u043d\u043e <a href=\"https:\/\/medium.com\/flutter\/whats-new-in-flutter-2-8-d085b763d181\" rel=\"noopener noreferrer nofollow\">\u0437\u0430\u043a\u0440\u044b\u0442<\/a>.<\/p>\n<\/li>\n<li>\n<p><code>fvm destroy<\/code> \u2013 \u0443\u0434\u0430\u043b\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk \u0438 \u0441\u0430\u043c\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f fvm.<\/p>\n<\/li>\n<li>\n<p><code>fvm remove<\/code> \u2013 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm remove &lt;version><\/code> \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 sdk. \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0444\u043b\u0430\u0433 <code>--force<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 &#171;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043b\u0438 \u0434\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439&#187;.<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"episodic\" id=\"episodic\"><\/a><\/p>\n<h3>\u042d\u043f\u0438\u0437\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/h3>\n<p>\u0418 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0434\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u044b\u043c:<\/p>\n<ul>\n<li>\n<p><code>fvm exec<\/code> \u2013 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 flutter cli \u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0440\u044f\u0434\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk (\u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>.fvm\/flutter_sdk\/bin<\/code>). \u0427\u0430\u0441\u0442\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0437 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0430\u0441 \u043b\u0435\u0436\u0438\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 <code>generate_secrets.sh<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0437\u043e\u0440 \u0434\u0432\u0443\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">PATH=\"$(pwd)\/.fvm\/flutter_sdk\/bin:$PATH\" .\/generate_secrets.sh<\/code><\/pre>\n<ul>\n<li>\n<p>\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>exec<\/code>:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">fvm exec .\/generate_secrets.sh<\/code><\/pre>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u044d\u0442\u043e\u043c issue, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438: <a href=\"https:\/\/github.com\/fluttertools\/fvm\/issues\/317\" rel=\"noopener noreferrer nofollow\">[Feature Request] fvm exec<\/a>.<\/p>\n<ul>\n<li>\n<p><code>fvm spawn &lt;version><\/code> \u2013 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432\u00a0flutter cli \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk. \u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e  <code>fvm flutter<\/code> \u0437\u0430 \u0442\u0435\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0441\u0430\u043c\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e sdk, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">fvm spawn 3.10.6 test fvm spawn 3.13.0-0.3.pre test fvm spawn 2.10.5 analyze<\/code><\/pre>\n<ul>\n<li>\n<p><code>fvm config<\/code> \u2013 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c fvm. \u0412 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>.settings<\/code> (\u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e <code>settings.json<\/code>? \u041d\u0430\u043c\u0451\u043a \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0443\u0447\u043a\u0430\u043c\u0438 \u043d\u0435 \u043b\u0430\u0437\u0438\u043b\u0438? ) \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u043f\u0443\u0442\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 (<code>USERPROFILE<\/code> \u0434\u043b\u044f windows \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, <code>HOME<\/code> \u0434\u043b\u044f unix). \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438: <\/p>\n<ul>\n<li>\n<p><code>--cache-path<\/code> \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043d\u0430\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>FVM_HOME<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u0442\u044c \u0431\u0443\u0434\u0435\u0442 <code>%USERPROFILE%\/fvm\/versions\/<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>--[no-]skip-setup<\/code> \u2013 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 flutter sdk, \u043b\u0438\u0448\u044c \u0441\u043a\u0430\u0447\u0430\u0432 \u0435\u0451 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 (\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u044d\u0442\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>flutter --version<\/code>)<\/p>\n<\/li>\n<li>\n<p><code>--[no-]git-cache<\/code> \u2013 \u043a\u044d\u0448\u0438\u0440\u0443\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f Flutter \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>fvm doctor<\/code> \u2013 \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0438\u0437 \u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f: \u043f\u0443\u0442\u0438 <code>Flutter<\/code>, <code>Dart<\/code> , <code>FVM_HOME<\/code>, <code>FVM_GIT_CACHE<\/code> (\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 flutter \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0431\u0443\u0434\u044c-\u0442\u043e \u0444\u043e\u0440\u043a \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u044d\u0448). \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438\u0437-\u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 flavor&#8217;\u043e\u0432 + \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u043a flutter sdk \u0432 IDE. \u0415\u0441\u0442\u044c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f (\u0440\u043e\u0432\u043d\u043e \u043a\u0430\u043a \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u0430) \u0441\u043b\u0430\u0431\u0435\u043d\u044c\u043a\u0430\u044f, \u043d\u0435\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f, \u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f, \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e-\u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u0430\u044f (\u0443\u0436\u0438\u043c\u043a\u0430 \u0440\u0430\u0434\u0438 96.2% dartdoc comments?) \u0438 \u0432\u0441\u0451 \u0432 \u0442\u043e\u043c \u0441\u0430\u043c\u043e\u043c \u0434\u0443\u0445\u0435 \u0441 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u043e\u0439 <code>\u043d\u0435<\/code>. \u041f\u043b\u044e\u0441 \u043c\u0430\u043b\u043e\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u043e\u0435 <code>readme.md<\/code>, \u0447\u0442\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c gh-pages \u0441\u0430\u0439\u0442\u043e\u043c <code>fvm.app\/docs<\/code>, \u043e\u0434\u043d\u0430\u043a\u043e \u0438 \u0442\u043e\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d \u0438 \u043e\u0442\u0440\u044b\u0432\u043e\u0447\u0435\u043d. \u041a\u043e\u0440\u043e\u0447\u0435, opensource, \u0432\u0441\u0435 \u0432\u0441\u0451 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442, \u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u0431\u0437\u0430\u0446 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0446\u0438\u043d\u0438\u0447\u043d\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c \u0442\u0440\u0443\u0434\u044b \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0438 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0433\u043e Leo Farias, \u0430 \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u0437\u044a\u044f\u043d \u0434\u043b\u044f \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u0435\u0439 \u0444\u043e\u0440\u043a\u043d\u0443\u0442\u044c, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0432\u043d\u0435\u0441\u0442\u0438 \u0432\u043a\u043b\u0430\u0434. \u0418 \u0442\u0443\u0442 \u044f \u043f\u043e\u0441\u043f\u0435\u0448\u0443 \u0432\u0430\u0441 \u043e\u0431\u0440\u0430\u0434\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0430\u043c \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439. \u0411\u044b\u0442\u044c \u043c\u043e\u0436\u0435\u0442, \u043d\u0430\u043c \u0434\u0430\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430\u044f\u0432\u0443 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443 &#171;\u0421\u0430\u043c\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u041a\u043e\u0434&#187; \u043e\u0442 <em>\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0434\u044f\u0434\u044e\u0448\u043a\u0438<\/em>?<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u044f \u0441\u043c\u0435\u043b\u043e \u0437\u0430\u044f\u0432\u043b\u044f\u044e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0447\u0443\u0434\u043e \u0441\u0438\u0435 \u0432 \u0434\u0435\u043b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c. \u0418\u043b\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a: \u043f\u043e\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u044f.<\/p>\n<p><a class=\"anchor\" name=\"using\" id=\"using\"><\/a><\/p>\n<h2>\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0411\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0430\u0431\u0437\u0430\u0446\u0430\u043c\u0438, \u0430 \u043d\u0435 \u0448\u0430\u0433\u0430\u043c\u0438, \u0434\u0430\u0431\u044b \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u043d\u0438\u043c\u044b\u043c\u0438 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u0431\u0435\u0441\u043f\u043e\u0449\u0430\u0434\u043d\u044b\u0445 \u0446\u0438\u0444\u0435\u0440\u043e\u043a. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043a\u0443\u0447\u043d\u044b\u0439, \u043d\u043e \u0443\u0436\u0435 \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u0440\u0435\u0442\u0435\u043d\u0434\u0443\u0435\u0442 \u043d\u0430 \u043b\u0438\u0441\u0442\u044c\u044f \u043b\u0430\u0432\u0440\u0430 \u0431\u043b\u0430\u0433\u043e\u0440\u043e\u0434\u043d\u043e\u0433\u043e.<\/p>\n<p><a class=\"anchor\" name=\"in_system\" id=\"in_system\"><\/a><\/p>\n<h3>\u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/h3>\n<p>\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 (\u0438\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u043c \u043e brew \u0438 choco) \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u043c \u0435\u0433\u043e \u0432 \u0441\u0432\u043e\u0435\u0439 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u043f\u0430\u043f\u043e\u0447\u043a\u0435 \u0441 \u0442\u0443\u043b\u0437\u0430\u043c\u0438. \u0412\u0435\u0441\u044c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (<code>fvm-2.4.1-windows-x64.zip<\/code>):<\/p>\n<pre><code>fvm \u2514\u2500fvm.bat \u2514\u2500src   \u2514\u2500dart.exe   \u2514\u2500fvm.snapshot   \u2514\u2500LICENSE<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0441\u043a\u043e\u0440\u043e <code>fvm global<\/code> \u0441\u0442\u0430\u043d\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 flutter sdk \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/docs.flutter.dev\/get-started\/install\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 stable-\u0432\u0435\u0442\u043a\u0430 flutter sdk. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u044b \u0432\u044b\u0434\u0435\u043b\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043e\u0447\u043a\u0443 \u0434\u043b\u044f stable, \u0430 fvm \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<p>\u0410\u0433\u0430 \u0438 \u0430\u0445\u0430\u0445, \u043a\u0430\u043a \u0431\u044b \u043d\u0435 \u0442\u0430\u043a. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0438 env-\u043f\u0443\u0442\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a (\u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442\u0435 \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c, \u0442\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0439\u0442\u0435 \u043f\u0443\u0442\u0438 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/issues\/227\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e<\/a> \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u2013 \u0434\u0430, \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0437\u0432\u043e\u0436\u0443 \u0440\u0443\u043a\u0430\u043c\u0438 \u043e\u0442 \u0442\u043e\u043c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 &#171;\u0432\u043e\u0442-\u0442\u0430\u043a&#187; \u0438 \u043c\u044b \u043e\u0431\u0440\u0435\u0442\u0430\u0435\u043c <em>\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c<\/em> \u043e\u0442 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e-\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0435\u0439, \u043d\u043e \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0433\u0430\u044e \u0432\u0430\u0441 \u043e\u0442 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0443):<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d23\/fcd\/f44\/d23fcdf44a11f59b06f9f80b74644c2b.png\" width=\"462\" height=\"88\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d23\/fcd\/f44\/d23fcdf44a11f59b06f9f80b74644c2b.png\"\/><\/figure>\n<p>\u041f\u0430\u043f\u043a\u0430 <code>default<\/code> \u0437\u0434\u0435\u0441\u044c \u044d\u0442\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk. \u0418 \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0438\u0437-\u043f\u043e\u0434 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 Android Studio. \u0412\u043e\u0442 \u043f\u0440\u0443\u0444 \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/915\/e2b\/098\/915e2b098d352943a94655d8a71e7dde.png\" width=\"850\" height=\"367\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/915\/e2b\/098\/915e2b098d352943a94655d8a71e7dde.png\"\/><\/figure>\n<p>\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0447\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043e\u0447\u043a\u043e\u0439 <code>.fvm<\/code> \u2013 \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430, \u043e \u0447\u0451\u043c \u0434\u0430\u043b\u0435\u0435 \u0438 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 <code>fvm.bat<\/code> \u0432 <code>\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b<\/code> > <code>\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f Path<\/code> > <code>C:\\...\\tools\\fvm\\fvm.bat<\/code> \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0432\u0430\u0448\u0443 \u043a\u043e\u043d\u0441\u043e\u043b\u044c (\u0438\u043b\u0438 IDE), \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0442\u0443\u043f\u0438\u043b\u0438 \u0432 \u0441\u0438\u043b\u0443. \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e, \u0434\u043e\u0441\u0442\u0443\u043f \u043a fvm \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0441\u044e\u0434\u0443.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a <code>FVM_HOME<\/code> \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445, \u043f\u0440\u0438 \u0447\u0451\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043d\u0430\u0447\u0435 \u043f\u043e\u0441\u043b\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u043f\u0443\u0442\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430, \u0430 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0432\u0441\u0451 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0442\u0430\u043c \u0436\u0435, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043d\u0430\u0448\u0438 flutter sdk. \u041d\u0443, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0435\u0440\u0435, \u044f \u0442\u0430\u043a \u0445\u043e\u0447\u0443. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u044f, \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \ud83d\ude42 <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/24a\/dcd\/c3c\/24adcdc3cbde9003cb24b7b154bbaaed.png\" width=\"655\" height=\"169\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/24a\/dcd\/c3c\/24adcdc3cbde9003cb24b7b154bbaaed.png\"\/><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433 fvm \u2013 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm config<\/code> (\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u0432\u0435\u0441\u0442\u0438 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0434\u043e \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432\u0430\u0448\u0438 flutter sdk):<\/p>\n<pre><code class=\"bash\">fvm config --no-skip-setup --git-cache --cache-path=C:\\&lt;YOUR_PATH>\\sdk\\flutter\\v\\<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c (\u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c) \u0432\u0430\u0448\u0443 \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk. \u0414\u0435\u043b\u0430\u0435\u043c \u0432\u043e\u0442 \u0442\u0430\u043a (\u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0440\u0435\u0432\u0438\u0437\u0438\u044e, \u0443\u043a\u0430\u0437\u0430\u0432 git-\u043a\u043e\u043c\u043c\u0438\u0442 \u0438\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0445\u044d\u0448):<\/p>\n<pre><code class=\"bash\">fvm install 3.10.6<\/code><\/pre>\n<p>\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e ?, \u0432\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0441\u0451 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>doctor<\/code>:<\/p>\n<pre><code class=\"bash\">fvm doctor<\/code><\/pre>\n<p>\u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043e\u043a:<\/p>\n<pre><code>C:\\&lt;YOUR_PATH>\\sdk\\flutter\\ \u2514\u2500default\\  # \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 fvm global &lt;version> \u2514\u2500v | \u2514\u25003.10.6\\ \u2514\u2500.settings<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0431\u043b\u0430\u0433\u043e\u0441\u0442\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435, \u0443\u0442\u0438\u0440\u0430\u044f <s>\u043d\u043e\u0441 \u0432\u0441\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0442\u043d\u0438\u043a\u0430\u043c<\/s> \u0441 4\u043a \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0430 \u043a\u0430\u043f\u043b\u0438 \u0432\u043e\u0437\u043c\u0443\u0449\u0435\u043d\u0438\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 fvm, \u043c\u044b \u0433\u043e\u0440\u0434\u043e \u0438\u0434\u0451\u043c \u0432 \u043b\u044e\u0431\u0438\u043c\u0443\u044e ui\u0448\u0435\u0447\u043a\u0443, \u0434\u0430\u0431\u044b \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0438\u0441\u043f\u0435\u0447\u0451\u043d\u043d\u043e\u0435 \u0447\u0443\u0434\u043e.<\/p>\n<p><a class=\"anchor\" name=\"in_ide\" id=\"in_ide\"><\/a><\/p>\n<h3>\u0412 IDE<\/h3>\n<p>\u041c\u044b \u0432 \u043d\u0443\u0436\u043d\u043e\u043c flutter-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 (\u043f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 <code>my_project<\/code>), \u0433\u0434\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm use<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u044f \u043d\u0430\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043c\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">fvm list<\/code><\/pre>\n<p>\u0421\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0432 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0443\u0436\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">fvm use 3.10.6<\/code><\/pre>\n<p>\u0427\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043f\u0430\u043f\u043a\u0443 <code>.fvm<\/code> \u0432 \u043a\u043e\u0440\u043d\u0435:<\/p>\n<pre><code>my_project \u2514\u2500.fvm   \u2514\u2500flutter_sdk # \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430   \u2514\u2500fvm_config.json # \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/code><\/pre>\n<p>\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e \u0441\u043d\u043e\u0432\u0430 ?, \u0432\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b fvm \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0441\u0430\u043c\u0430 IDE \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0438 \u044d\u0442\u043e.<\/p>\n<p>\u041f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u0447\u0451\u0442\u0443, \u0432\u0441\u0451 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u0439 \u0446\u0435\u043b\u0438 \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u043d\u0430\u0448\u0435\u0433\u043e flutter sdk.<\/p>\n<p><a class=\"anchor\" name=\"in_android_studio\" id=\"in_android_studio\"><\/a><\/p>\n<h4>\u0412 Android Studio<\/h4>\n<ol>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b <code>File<\/code> > <code>Settings...<\/code> > <code>Languages &amp; Frameworks<\/code> > <code>Flutter<\/code> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 <code>Flutter SDK Path<\/code> \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0432\u0438\u0434\u0430 <code>C:\\my_project\\.fvm\\flutter_sdk<\/code>. \u0422\u0435\u0440\u043f\u0435\u043b\u0438\u0432\u043e \u0436\u0434\u0451\u043c \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <code>Apply<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <code>Languages &amp; Frameworks<\/code> > <code>Dart<\/code> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043e dart sdk <code>C:\\my_project\\.fvm\\flutter_sdk\\bin\\cache\\dart-sdk<\/code>, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. <em>\u0423\u0436\u0435 \u043d\u0430 \u044d\u0442\u0438\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u0432\u0435\u0449\u044c<\/em>, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0437\u0430\u0445\u043e\u0447\u0435\u0442. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 flutter sdk. \u042d\u0442\u043e \u043c\u043e\u0433\u043b\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0438\u0437-\u0437\u0430 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f flutter sdk \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0438\u043b\u0438 \u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c <code>fvm install --skip-setup<\/code>. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm flutter --version<\/code> \u0438\u0437 \u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u043e\u0439\u0434\u0451\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 ide (\u0434\u0440\u0435\u0432\u043d\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e &#171;\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438&#187; \u0434\u043b\u044f \u0440\u0435\u043c\u043e\u043d\u0442\u0430 \u043b\u044e\u0431\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 ?).<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u0432 IDE \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f flutter, \u0430 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0443 <code>fvm<\/code>, \u043a\u0430\u043a <code>fvm flutter ...<\/code>, <code>fvm dart ...<\/code> \u0438 \u0442.\u0434.<\/p>\n<blockquote>\n<p>?\u0411\u043e\u043d\u0443\u0441: \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u0430\u043f\u043a\u0430 <code>.fvm\/flutter_sdk<\/code>, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u0451 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 <code>File<\/code> > <code>Settings...<\/code> > <code>Editor<\/code> -> <code>File Types<\/code> -> <code>Ignored Files and Folders<\/code>  \u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 <code>flutter_sdk<\/code>. \u041f\u0430\u043f\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u0430 \u0438\u0437 ide.<\/p>\n<\/blockquote>\n<p><a class=\"anchor\" name=\"in_vs_code\" id=\"in_vs_code\"><\/a><\/p>\n<h4>\u0412 VS Code<\/h4>\n<p>\u0422\u0443\u0442 \u0434\u0430\u0436\u0435 \u043f\u0443\u043d\u043a\u0442\u044b \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f. \u041f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b (\u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0435\u0442) \u043f\u043e \u043f\u0443\u0442\u0438 <code>.vscode\/settings.json<\/code> \u0438 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"json\">{   \"dart.flutterSdkPath\":\".fvm\/flutter_sdk\",   \"search.exclude\":{     \"**\/.fvm\":true   },   \"files.watcherExclude\":{     \"**\/.fvm\":true   } }<\/code><\/pre>\n<p>\u0425\u043e\u0442\u044f \u0442\u0443\u0442 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 ide.<\/p>\n<p><a class=\"anchor\" name=\"gui\" id=\"gui\"><\/a><\/p>\n<h2>GUI<\/h2>\n<p>\u0414\u0430-\u0434\u0430, \u0432\u044b \u043d\u0435 \u043e\u0441\u043b\u044b\u0448\u0430\u043b\u0438\u0441\u044c, \u0432\u0435\u0434\u044c \u043f\u043e\u0434 fvm \u0435\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c. \u041d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u043e <a href=\"https:\/\/github.com\/fluttertools\/sidekick\" rel=\"noopener noreferrer nofollow\">Sidekick<\/a> \u2013 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442, \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9b6\/cce\/f48\/9b6ccef487c5427784385d89cb143ce4.png\" width=\"1859\" height=\"1238\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9b6\/cce\/f48\/9b6ccef487c5427784385d89cb143ce4.png\"\/><\/figure>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430 flutter, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f Riverpod \u0432\u0435\u0440\u0441\u0438\u0438 2, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u2013 hive. \u0427\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0445\u0443\u043a\u0438 \u0432 \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u0445. \u0421\u043a\u0430\u0436\u0443 \u0442\u0430\u043a \u2013 \u0437\u0430\u0434\u0443\u043c\u043a\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u0430\u044f, \u043d\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u0430\u043b\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435. \u0414\u0430\u043b\u0435\u0435, \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e \u0432\u0435\u0440\u0441\u0438\u044e 1.1.1.<\/p>\n<p>\u0427\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0430 \u043d\u0435\u043b\u044c\u0437\u044f:<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u043b\u044c\u0437\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u2013 <a href=\"https:\/\/github.com\/fluttertools\/sidekick\/issues\/242\" rel=\"noopener noreferrer nofollow\">issue #242<\/a><\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 <a href=\"https:\/\/github.com\/fluttertools\/sidekick\/issues\/101\" rel=\"noopener noreferrer nofollow\">\u043a\u043d\u043e\u043f\u043a\u0438 \u043e\u0442\u043c\u0435\u043d\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c flavor \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 (\u0438\u043a\u043e\u043d\u043a\u0430, \u0432\u0435\u0440\u0441\u0438\u044f, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f sdk) \u2013 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/fluttertools\/sidekick\/issues\/298\" rel=\"noopener noreferrer nofollow\">issue #298<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u044e\u0442 \u0443\u0436\u0435 \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f:<\/p>\n<ul>\n<li>\n<p>\u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2013 <a href=\"https:\/\/github.com\/fluttertools\/sidekick\/issues\/297\" rel=\"noopener noreferrer nofollow\">issue #297<\/a>, \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u043b\u044b\u0439 \u044d\u043a\u0440\u0430\u043d<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c flutter sdk \u043d\u0430 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u043e\u0432\u043e\u0439 \u2013 <a href=\"https:\/\/github.com\/fluttertools\/sidekick\/issues\/269\" rel=\"noopener noreferrer nofollow\">issue #269<\/a> \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u2013 <a href=\"https:\/\/github.com\/fluttertools\/sidekick\/issues\/280\" rel=\"noopener noreferrer nofollow\">issue #280<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0430\u043d\u0435\u0435 \u044f \u0435\u0449\u0451 \u043c\u043e\u0433 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c sidekick, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0431\u0435\u043b\u044b\u0439 \u044d\u043a\u0440\u0430\u043d, \u0438, \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0428\u0443\u0447\u0443, \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u044f, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0438\u043d\u0438-\u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0432, \u0438\u043d\u0430\u0447\u0435, \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043a \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435.<\/p>\n<p><a class=\"anchor\" name=\"mini_investigation\" id=\"mini_investigation\"><\/a><\/p>\n<h3>\u041c\u0438\u043d\u0438-\u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p>\u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044f \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0434 windows \u0441 main \u0432\u0435\u0442\u043a\u0438 (\u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u043d\u043e\u043c\u0435\u0440 \u0440\u0435\u0432\u0438\u0437\u0438\u0438  \u2013 <code>5cb956c5bce37fae0df1ab3311465fe69d67168e<\/code>) \u2013 \u0441\u043d\u043e\u0432\u0430 \u0431\u0435\u043b\u044b\u0439 \u044d\u043a\u0440\u0430\u043d. [Hot restart] \u2013 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u043e\u0441\u044c. \u0427\u0435\u0435\u0435\u0433\u043e\u043e??<\/p>\n<p>\u041b\u0430\u0434\u043d\u043e, \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044f \u043c\u043e\u043b\u043e\u0434\u043e\u0441\u0442\u044c \u0438 \u043b\u0430\u0437\u0430\u044f \u043f\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c \u0432 \u043f\u043e\u043f\u044b\u0442\u043a\u0430\u0445 \u043d\u0430\u0439\u0442\u0438 \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0442\u043e \u0438 \u043d\u0435\u0442. \u0420\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c [Hot restart] \u2013 \u043e\u043f\u044f\u0442\u044c \u0432\u0441\u0451 \u043f\u043b\u043e\u0445\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0437\u0430\u0432\u0438\u0441\u0448\u0438\u0439 \u0437\u043d\u0430\u0447\u043e\u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438. \u0411\u043b\u0435\u043d, \u043e\u043d \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d87\/2a5\/f00\/d872a5f000137572b5f33df3cc260f4d.png\" width=\"930\" height=\"599\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d87\/2a5\/f00\/d872a5f000137572b5f33df3cc260f4d.png\"\/><\/figure>\n<p>\u041a\u043e\u043d\u0441\u043e\u043b\u044c \u043c\u043e\u043b\u0447\u0438\u0442.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043a\u043e\u0434 \u0443\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0439\u0434\u0451\u0442\u0441\u044f \u0431\u0435\u0437 \u043c\u043e\u0435\u0433\u043e \u043d\u0435\u043e\u0434\u043e\u0431\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0437\u0433\u043b\u044f\u0434\u0430, \u0438 \u0437\u0430\u0448\u0451\u043b \u0432 main: <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9e9\/7c3\/e93\/9e97c3e939e0fc0a660e46fc5ce7da74.png\" width=\"811\" height=\"325\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9e9\/7c3\/e93\/9e97c3e939e0fc0a660e46fc5ce7da74.png\"\/><\/figure>\n<p>\u0414\u0430, \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043e\u043a. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u044e <code>catch (e, s) {print(e); print(s);}<\/code>. \u041d\u0438\u0447\u0435\u0433\u043e. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u044e <code>FlutterError.onError<\/code>. \u041d\u0438\u0447\u0435\u0433\u043e. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u044e <code>PlatformDispatcher.instance.onError<\/code>. \u0421\u043d\u043e\u0432\u0430 \u043d\u0438\u0447\u0435\u0433\u043e. \u0414\u0430\u043b\u0435\u0435, \u0447\u0442\u043e \u044f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u0440\u0438\u043d\u0442\u044b \u0432\u043e \u0432\u0441\u0435 \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0442\u044b\u043a\u0430\u043b \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 <code>FVMScreen<\/code>; \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0432\u0438\u0434\u0436\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e <code>Scaffold<\/code><\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0448\u0451\u043b \u0438\u0437\u0443\u0447\u0430\u0442\u044c <code>releasesStateProvider<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u043e\u0442 \u044d\u043a\u0440\u0430\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d \u0443\u0436\u0430\u0441\u043d\u043e; \u043c\u043e\u0436\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 <code>StateNotifier&lt;AsyncValue&lt;AppReleasesState>><\/code> (\u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e <code>AsyncNorifier<\/code> \u0442\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e) c \u043b\u043e\u0433\u0438\u043a\u043e-\u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438? \u041d\u0435\u0435\u0435, \u0437\u0430\u0447\u0435\u043c. \u042f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u0440\u043e\u0448\u0443 \u0445\u043e\u0442\u044f \u0431\u044b sealed \u043a\u043b\u0430\u0441\u0441\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e freezed, \u0447\u0442\u043e\u0431\u044b <code>AppReleasesState<\/code> \u0431\u044b\u043b \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438. \u041b\u0430\u0434\u043d\u043e, \u043f\u0440\u043e\u0435\u0445\u0430\u043b\u0438. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u043a\u0443\u0441\u043e\u0447\u043a\u0438 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/396\/b51\/f44\/396b51f44cf1c2a4d07dd922f84cfde1.png\" width=\"1277\" height=\"3107\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/396\/b51\/f44\/396b51f44cf1c2a4d07dd922f84cfde1.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ab\/a50\/fca\/1aba50fca556112f2b199f8218ae9097.png\" width=\"1157\" height=\"3982\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ab\/a50\/fca\/1aba50fca556112f2b199f8218ae9097.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u2013 \u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u0440\u043e\u0441\u0442\u043e \u0436\u043c\u0451\u043c <code>Hot Restart<\/code> \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 ?. \u041f\u0440\u0438 \u0447\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u043a\u043d\u0430. \u041d\u0430 \u044d\u0442\u043e\u043c <s>\u043a\u0440\u0438\u0442\u0438\u043a\u0430<\/s> \u043e\u0431\u0437\u043e\u0440 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d, \u0438\u0431\u043e \u0438\u0442\u0430\u043a \u044d\u0442\u043e\u043c\u0443 \u0443\u0434\u0435\u043b\u0435\u043d\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f ui-\u0432\u0435\u0440\u0441\u0438\u0438 fvm (\u0432 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 fvm, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442):<\/p>\n<ul>\n<li>\n<p>\u0440\u0430\u0437\u0434\u0435\u043b \u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 (<code>fvm list<\/code> + <code>fvm global<\/code> + <code>fvm flutter upgrade<\/code> + <code>fvm remove<\/code>), \u043d\u043e, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0440\u0430\u043d\u0435\u0435, \u043d\u0435 \u0432\u0438\u0434\u0438\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438-\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438. \u0415\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0430 &#171;\u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk&#187;, \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 sdk (\u0436\u0430\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0435 \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c): \u0434\u0430\u0442\u0430 \u0440\u0435\u043b\u0438\u0437\u0430 + \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u044d\u0448\u0430 + \u043f\u0440\u044f\u043c\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 + hash|sha256 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 ide \u043e\u0434\u043d\u0438\u043c \u0449\u0435\u043b\u0447\u043a\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0432 \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u043a\u0430\u043d\u0430\u043b\u0443 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 (<code>fvm releases<\/code> + <code>fvm install<\/code>);<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0437\u0434\u0435\u043b \u0432\u0430\u0448\u0438\u0445 flutter-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u0434\u0432\u0430 \u043a\u043b\u0438\u043a\u0430 \u0441\u043c\u0435\u043d\u0438\u0442\u044c flutter sdk (<code>fvm use<\/code>). \u0422\u0430\u043a\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 Playground-\u0440\u0435\u0436\u0438\u043c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c <code>dart<\/code>|<code>flutter<\/code> \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk (\u0443\u0441\u043b\u043e\u0432\u043d\u043e <code>fvm spawn<\/code>). \u0423\u0434\u043e\u0431\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 (<code>flutter config --[no-]analytics<\/code>) \u0441\u0440\u0430\u0437\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0432\u0435\u0436\u0435\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 flutter sdk  \u0438 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043b\u0430\u0448\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (<code>flutter config --[no-]enable-web<\/code> \u0438 \u043a\u043e\u043b\u043b\u0435\u0433\u0438);<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f (\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 22 \u044f\u0437\u044b\u043a\u0430);<\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u0438.<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"useful_tips\" id=\"useful_tips\"><\/a><\/p>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/h2>\n<p>\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f dart-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432\u0441\u0451 \u0435\u0449\u0451 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/discussions\/532\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c<\/a>. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u0442\u0430\u043a \u2013 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0443\u0436\u043d\u0443\u044e \u043c\u043d\u0435 \u0432\u0435\u0440\u0441\u0438\u044e dart sdk) \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <code>.fvm\\flutter_sdk\\bin\\cache\\dart-sdk<\/code> \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0414\u0430, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u0440\u0430\u0439\u043d\u0435 \u0441\u043e\u043c\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c, \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0447\u0430\u0441\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter \u0441\u043e stable \u043a\u0430\u043d\u0430\u043b\u0430. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e dart-\u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043e dart 3, \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 flutter sdk 3.7.12, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 dart sdk 2.19.6.<\/p>\n<\/li>\n<li>\n<p>\u0438\u043d\u043e\u0433\u0434\u0430 \u0440\u0435\u043b\u0438\u0437 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0430\u043d\u0430\u043b\u0430\u0445 \u0441\u0440\u0430\u0437\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, flutter sdk \u0432\u0435\u0440\u0441\u0438\u0438 2.5.0 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u043c \u0438 \u0431\u0435\u0442\u0430 \u043a\u0430\u043d\u0430\u043b\u0430\u0445. FVM \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043a\u0430\u043d\u0430\u043b\u0430 \u043f\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0442.\u0435. <code>Stable > Beta<\/code>, \u0438 \u0432\u044b\u0431\u0435\u0440\u0435\u0442 \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u0437 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 \u0431\u0435\u0442\u044b, \u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0442\u0430\u043a <code>fvm install 2.5.0@beta<\/code> . <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/749\/23c\/b2b\/74923cb2bc1874ade4d4998f4bc8c30d.png\" width=\"1069\" height=\"635\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/749\/23c\/b2b\/74923cb2bc1874ade4d4998f4bc8c30d.png\"\/><\/figure>\n<\/li>\n<li>\n<p>\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u043e\u0434\u0435: <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/kuhnroyal\/flutter-fvm-config-action\" rel=\"noopener noreferrer nofollow\">fvm-config-action<\/a> c <a href=\"https:\/\/github.com\/subosito\/flutter-action\" rel=\"noopener noreferrer nofollow\">flutter-action<\/a> \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Github Actions;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0440\u0430\u0437\u044b \u0434\u043b\u044f Docker \u0432 \u0432\u0438\u0434\u0435 <a href=\"https:\/\/github.com\/leoafarias\/fvm\/tree\/main\/.docker\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/hub.docker.com\/r\/daniellampl\/flutter-fvm\" rel=\"noopener noreferrer nofollow\">daniellampl\/flutter-fvm<\/a> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e flutter-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 Codemagic, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <a href=\"https:\/\/docs.codemagic.io\/flutter-configuration\/flutter-projects\/#setting-the-flutter-version\" rel=\"noopener noreferrer nofollow\">Workflow Editor<\/a> \u0438\u043b\u0438 \u0436\u0435 <a href=\"https:\/\/docs.codemagic.io\/yaml-quick-start\/building-a-flutter-app\/#setting-the-flutter-version\" rel=\"noopener noreferrer nofollow\">YAML \u0444\u0430\u0439\u043b<\/a>;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u043d\u0430 fvm \u0438 \u0443 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e flutter sdk, \u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0445 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u043d\u043e \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u043e\u0433\u043e sdk \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm spawn &lt;version> --version<\/code> . \u041f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>fvm list<\/code>. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0438 \u043f\u0443\u0442\u0435\u0439 \u0432 \u0432\u0430\u0448\u0435\u0439 IDE;<\/p>\n<\/li>\n<li>\n<p>\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm list<\/code> \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 <code>fvm use &lt;\u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f_\u0432\u0435\u0440\u0441\u0438\u044f><\/code> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>fvm use<\/code> . \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430. \u041a \u043c\u043e\u0435\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b fvm (\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b \u043f\u0430\u043f\u043a\u0443 <code>.fvm<\/code>). <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/880\/bbe\/1bd\/880bbe1bdaa464d4a78116164845cd61.png\" width=\"627\" height=\"450\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/880\/bbe\/1bd\/880bbe1bdaa464d4a78116164845cd61.png\"\/><\/figure>\n<\/li>\n<li>\n<p>\u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0444\u043e\u0440\u043a\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432 \u043d\u0451\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043f\u0430\u043f\u043a\u0430 <code>.fvm<\/code>, \u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm install<\/code> \u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u043d\u0430 \u0438 \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0430 (\u0435\u0441\u043b\u0438 \u0435\u0451 \u0435\u0449\u0451 \u043d\u0435\u0442) \u0432\u0435\u0440\u0441\u0438\u044f flutter sdk, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u0430\u044f \u0432 \u0444\u0430\u0439\u043b\u0438\u043a\u0435 <code>.fvm\/fvm_config.json<\/code>;<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"bonus_story\" id=\"bonus_story\"><\/a><\/p>\n<h3>\u0411\u043e\u043d\u0443\u0441\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f<\/h3>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u043a \u0432 \u0441\u0430\u043c\u044b\u0445 \u043b\u0443\u0447\u0448\u0438\u0445 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0442\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0433\u0430\u0437\u0435\u0442\u044b \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u043c \u044f\u0449\u0438\u043a\u0435, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0431\u0430\u0431\u0443\u0448\u0435\u043a \u0438 \u0434\u0435\u0434\u0443\u0448\u0435\u043a \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c\u0443 \u0438\u0441\u0446\u0435\u043b\u0435\u043d\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u044b\u0445 \u043a\u0430\u043f\u0435\u043b\u044c \u2013 &#171;\u041a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u044d\u0442\u043e, \u0442\u043e \u043e\u0431\u043e\u043c\u043b\u0435\u043b&#8230;! \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0432\u0435\u0440\u0433\u043b\u0438 \u0432 \u0448\u043e\u043a!!!&#187;. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u044f \u0441\u043c\u043e\u0433 \u0441\u043d\u0435\u0441\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 flutter sdk \u0431\u0435\u0437\u0432\u043e\u0437\u0432\u0440\u0430\u0442\u043d\u043e*. \u0418 \u0432\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm use .<\/code> \u0431\u0443\u0434\u0443\u0447\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0423\u043c\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0440\u0430\u0437\u0443 \u043e \u0447\u0451\u043c-\u0442\u043e \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0442\u043e\u0440\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0430\u043c\u043e\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#171;\u0441\u043d\u0435\u0441\u0442\u0438&#187; \u043d\u0435\u0438\u0441\u043f\u0440\u0430\u0432\u043d\u043e\u0435 sdk. \u041f\u0444\u0444, \u0432\u0441\u0435\u0433\u043e-\u043d\u0430\u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0412\u0421\u0415 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437 \u0432\u0430\u0448\u0435\u0439 <code>Cache Directory<\/code>. \u041d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u043e\u0447\u043a\u0443, \u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e 10\u0433\u0431 \u043e\u0442\u043c\u0435\u043d\u043d\u044b\u0445 flutter sdk. \u0411\u043b\u0430\u0433\u043e, \u0443 \u043c\u0435\u043d\u044f \u0430\u0432\u0442\u043e-\u0431\u044d\u043a\u0430\u043f \u0432\u0441\u0435\u0433\u043e \u0438 \u0432\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0451 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c ?. \u0412 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0441\u043b\u043e\u0436\u043d\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438:<\/p>\n<ul>\n<li>\n<p>\u0431\u044d\u043a\u0430\u043f\u0430 \u043d\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b \u043d\u0435 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u043b\u0438, \u043a\u0430\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443 \u0432\u0430\u0441 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c<\/p>\n<\/li>\n<li>\n<p>sdk \u0431\u044b\u043b\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0430\u0432\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0432 \u0434\u0432\u0443\u0445 \u0448\u0430\u0433\u0430\u0445:<\/p>\n<ul>\n<li>\n<p>\u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>flutter create .<\/code><\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0442\u0438\u0440\u0430\u044f \u0441\u043e\u043d\u043d\u044b\u0435 \u0433\u043b\u0430\u0437\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443  <code>fvm use .<\/code> <\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/62a\/7c7\/997\/62a7c7997f0a3fee19379f06487bde2a.png\" width=\"1247\" height=\"886\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/62a\/7c7\/997\/62a7c7997f0a3fee19379f06487bde2a.png\"\/><\/figure>\n<p>\u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f, \u0431\u0435\u0440\u0435\u0433\u0438\u0442\u0435 \u0441\u0435\u0431\u044f \u0438 \u0441\u0432\u043e\u0438 \u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u0435\u043b\u0430\u0439\u0442\u0435 \u0431\u044d\u043a\u0430\u043f\u044b.<\/p>\n<p><a class=\"anchor\" name=\"analogues\" id=\"analogues\"><\/a><\/p>\n<h2>\u0410\u043d\u0430\u043b\u043e\u0433\u0438<\/h2>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435 \u0441\u0430\u043c\u043e\u0435 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u2013 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 sdk \u0430\u0440\u0445\u0438\u0432\u044b. \u041d\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432 \u044d\u0442\u043e\u043c \u043c\u0430\u043b\u043e, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 (\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445) \u043f\u043e\u0440\u0430\u0445 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f dart | flutter \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0435\u043c-\u0442\u043e \u0435\u0449\u0451. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0432\u0435\u0440\u044c\u0442\u0435\u0441\u044c \u0442\u0435\u0447\u0435\u043d\u0438\u044e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2013 \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0434\u0451\u0442 \u0441\u0430\u043c\u0430.<\/p>\n<p><a class=\"anchor\" name=\"puro\" id=\"puro\"><\/a><\/p>\n<h3>Puro<\/h3>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 <a href=\"https:\/\/puro.dev\/\" rel=\"noopener noreferrer nofollow\">Puro<\/a>. \u041f\u0440\u043e\u0435\u043a\u0442 \u0441\u0432\u0435\u0436\u0438\u0439, \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0434\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 <a href=\"https:\/\/github.com\/pingbird\/puro\/releases\/tag\/0.1.0\" rel=\"noopener noreferrer nofollow\">18 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2022<\/a>. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e \u0440\u044f\u0434\u0443 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u043c \u0432 \u0438\u0434\u0435\u044e \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u2013 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u043d\u0430 <a href=\"https:\/\/docs.gitlab.com\/ee\/development\/git_object_deduplication.html\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e GitLab \u043f\u043e \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 Git<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/46a\/826\/2fa\/46a8262faf6a5148a8c477aed042fcb5.png\" alt=\" \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u044d\u0448 \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 git \u0438 \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u0432\u0438\u0436\u043a\u0430 (\u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u044e), \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk, \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 git. \" title=\" \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u044d\u0448 \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 git \u0438 \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u0432\u0438\u0436\u043a\u0430 (\u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u044e), \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk, \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 git. \" width=\"2019\" height=\"1906\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/46a\/826\/2fa\/46a8262faf6a5148a8c477aed042fcb5.png\"\/><\/p>\n<div><figcaption> \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u044d\u0448 \u0434\u043b\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 git \u0438 \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u0434\u0432\u0438\u0436\u043a\u0430 (\u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u044e), \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk, \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437\u0431\u0435\u0433\u0430\u0435\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 git. <\/figcaption><\/div>\n<\/figure>\n<p>\u0418 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 \u0441\u043e\u043b\u0438\u0434\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u044b\u043f\u0443\u0441\u043a\u043e\u0432. \u0415\u0441\u043b\u0438 \u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u043c \u0430\u0432\u0442\u043e\u0440\u0430 \u041f\u041e, \u0442\u043e \u043f\u0440\u0438\u0440\u043e\u0441\u0442\u044b \u043f\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u0430\u043a\u0438\u0435 \u2013 \u043f\u0435\u0440\u0432\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 20% \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 50-95%:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7ec\/2bd\/8af\/7ec2bd8af1e238429c49ff9bdd2c695b.png\" alt=\"\u0421\u0432\u0435\u0440\u0445\u0443 \u2013 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 flutter sdk, \u0441\u043d\u0438\u0437\u0443 \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u0444\u0438\u043a\u0430.\" title=\"\u0421\u0432\u0435\u0440\u0445\u0443 \u2013 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 flutter sdk, \u0441\u043d\u0438\u0437\u0443 \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u0444\u0438\u043a\u0430.\" width=\"653\" height=\"712\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7ec\/2bd\/8af\/7ec2bd8af1e238429c49ff9bdd2c695b.png\"\/><\/p>\n<div><figcaption>\u0421\u0432\u0435\u0440\u0445\u0443 \u2013 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 flutter sdk, \u0441\u043d\u0438\u0437\u0443 \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u0444\u0438\u043a\u0430.<\/figcaption><\/div>\n<\/figure>\n<p> \u041f\u0440\u0438 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u043b\u0435\u043d\u0438\u0438 \u044f \u043f\u043e\u0434\u043c\u0435\u0442\u0438\u043b \u0440\u044f\u0434 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439:<\/p>\n<ul>\n<li>\n<p>\u0443\u043c\u0435\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 PATH \u0441\u0435\u0431\u044f \u0438 flutter sdk, \u043f\u0440\u0438\u0447\u0451\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442 \u043e \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u044e\u0449\u0438\u0445 \u043f\u0443\u0442\u044f\u0445;<\/p>\n<\/li>\n<li>\n<p>puro \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f \u0440\u0430\u0437 \u0432 \u0434\u0435\u043d\u044c (\u044d\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435) \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>puro upgrade-puro<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u043b\u0438\u0437\u044b \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>puro releases<\/code>. 5 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0438 5 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 (stable \u0438 beta) + \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u0435\u0440\u0441\u0438\u0438 dart sdk;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c \u043e\u0442 flutter sdk \u0438 \u043d\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0443\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e\u0439 \u043f\u043e\u0447\u0432\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442 IDE (\u0431\u0443\u0434\u044c \u0442\u043e Android Studio \u0438\u043b\u0438 VSCode) \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 flutter \u0438 dart;<\/p>\n<\/li>\n<li>\n<p>\u0432 \u0446\u0435\u043b\u043e\u043c <a href=\"https:\/\/puro.dev\/reference\/commands\/\" rel=\"noopener noreferrer nofollow\">\u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043c\u0430\u043d\u0434<\/a> \u0448\u0438\u0440\u0435 \u0447\u0435\u043c \u0432 fvm (\u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 <code>eval<\/code>) \u0438 \u0438\u043c\u0435\u0435\u0442 \u0431\u00f3\u043b\u044c\u0448\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0444\u043b\u0430\u0433\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0442\u043e\u0442 \u0436\u0435 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0432\u0435\u0436\u0438\u0439, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u0434\u0451\u0442\u0441\u044f \u0441\u0438\u043b\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c dart-\u0440\u0435\u043b\u0438\u0437\u044b (\u043f\u043e\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 fvm), <a href=\"https:\/\/github.com\/pingbird\/puro\/issues\/22\" rel=\"noopener noreferrer nofollow\">issue #22<\/a><\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0442 ui \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u043e\u043c\u0443 \u043e\u043d \u0432\u0430\u0436\u0435\u043d<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u2013 \u0432\u044b\u0441\u043e\u043a\u043e\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0441\u0430\u043c\u043e\u0440\u043e\u0434\u043e\u043a. Flutter \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0437\u043d\u0430\u0435\u0442 \u043e \u043d\u0451\u043c, \u0438 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e-\u0442\u043e\u043b\u044c\u043a\u043e <a href=\"https:\/\/blog.flutterando.com.br\/puro-uma-forma-eficiente-de-gerenciar-as-vers%C3%B5es-flutter-d950d1685e47\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442<\/a> <a href=\"https:\/\/www.youtube.com\/watch?v=olqmK-opexA\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f<\/a>. \u0421\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u2013 \u043c\u0435\u043d\u044c\u0448\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043b\u044e\u0431\u044b\u043c\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438. \u0418 \u0435\u0441\u043b\u0438 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0438\u043d\u0442\u0440<em>\u0430<\/em>\u043d\u0435\u0442, \u0442\u043e \u044d\u0442\u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u043a\u0441\u0442\u0430\u0442\u0438.<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u2013 <a href=\"https:\/\/github.com\/pingbird\/puro\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/pingbird\/puro<\/a><\/p>\n<p>\u041f\u0438\u0448\u0438\u0442\u0435 \u0432\u0430\u0448\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d \u043d\u0435\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0442\u0430\u0439\u043d\u0430\u043c \u0438 \u0440\u0430\u0434 \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432.<\/p>\n<p><a class=\"anchor\" name=\"conclusion\" id=\"conclusion\"><\/a><\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044e \u0432\u0430\u0441 \u0437\u0430 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u042d\u0442\u043e \u0431\u044b\u043b \u043d\u0435\u043b\u0451\u0433\u043a\u0438\u0439 \u043f\u0443\u0442\u044c \u0441\u043a\u0432\u043e\u0437\u044c \u0442\u0435\u0440\u043d\u0438\u0441\u0442\u044b\u0435 \u0442\u0440\u043e\u043f\u044b \u043c\u0438\u0440\u0430 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u044b \u0435\u0433\u043e \u043f\u0440\u043e\u0448\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435. \u041d\u0438\u0436\u0435 \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"useful_links\" id=\"useful_links\"><\/a><\/p>\n<h3>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h3>\n<ol>\n<li>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f fvm \u2013 <a href=\"https:\/\/fvm.app\/docs\" rel=\"noopener noreferrer nofollow\">https:\/\/fvm.app\/docs<\/a><\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 fvm \u2013 <a href=\"https:\/\/github.com\/fluttertools\/fvm\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/fluttertools\/fvm<\/a><\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0443\u0434\u044c\u0431\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 fvm \u2013 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/discussions\/469\" rel=\"noopener noreferrer nofollow\">RFC: FVM Changes<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/cshanjib.medium.com\/setting-up-fvm-flutter-version-management-properly-ab45ade0dd55\" rel=\"noopener noreferrer nofollow\">Setting up FVM (Flutter Version Management) properly<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=xojw_2O8Acg\" rel=\"noopener noreferrer nofollow\">Flutter Version Management (FVM) \u0438 \u0441 \u0447\u0435\u043c \u0435\u0433\u043e \u0435\u0434\u044f\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/dhruvnakum.hashnode.dev\/fvm-flutter-version-management-an-easier-way-to-maintain-flutter-versions\" rel=\"noopener noreferrer nofollow\">FVM (Flutter Version Management) &#8212; An Easier Way To Maintain Flutter Versions<\/a><\/p>\n<\/li>\n<\/ol>\n<p>\u00a9 2023 <a href=\"https:\/\/github.com\/PackRuble\" rel=\"noopener noreferrer nofollow\">Ruble<\/a><\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/articles\/758212\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041a\u0430\u043a \u0432\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 flutter sdk?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">30.77% <\/span><span class=\"tm-article-poll__answer-label\">\u0440\u0443\u0447\u043a\u0430\u043c\u0438<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 30.77%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">53.85% <\/span><span class=\"tm-article-poll__answer-label\">fvm<\/span><span class=\"tm-article-poll__answer-votes\">7<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 53.85%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">7.69% <\/span><span class=\"tm-article-poll__answer-label\">puro<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 7.69%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">7.69% <\/span><span class=\"tm-article-poll__answer-label\">\u0441\u0432\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 7.69%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 13 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f 1 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/758212\/\"> https:\/\/habr.com\/ru\/articles\/758212\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u041f\u0440\u0438\u0432\u0435\u0442 \u0434\u0440\u0443\u0437\u044c\u044f. \u0412 \u0436\u0438\u0437\u043d\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e stable) \u0432\u0435\u0440\u0441\u0438\u0435\u0439 flutter sdk \u0443\u0436\u0435 \u043d\u0435 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u043e\u0440\u043a\u043d\u0443\u0442\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0441\u0442\u0430\u0440\u043e\u0439, \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0439 (\u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0435) \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 stable, \u0432\u0435\u0440\u0441\u0438\u0438. \u041b\u0438\u0431\u043e \u0436\u0435 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u0437 beta \u0432\u0435\u0440\u0441\u0438\u0438 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435. \u0412\u0440\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u043c &#171;Flutter SDK archive&#187; \u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0443\u0442\u0438 \u0432 IDE, \u043d\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0448\u0435.<\/p>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043a\u0435\u0442 (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443) fvm \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 flutter sdk. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u043d\u043e \u043f\u043e\u0438\u0441\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0435 \u0434\u0430\u043b (\u0437\u0434\u0435\u0441\u044c \u0431\u044b\u043b\u043e \u043c\u043e\u0451 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u0432\u0435\u0434\u044c \u0435\u0433\u043e \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 &#171;\u041f\u0435\u0440\u0435\u0432\u043e\u0434&#187;). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u043b\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u044f\u044e \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b.<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u0435. \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c!<\/p>\n<hr\/>\n<h2>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"#introduction\" rel=\"noopener noreferrer nofollow\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#beginning_of_work\" rel=\"noopener noreferrer nofollow\">\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#commands\" rel=\"noopener noreferrer nofollow\">\u041a\u043e\u043c\u0430\u043d\u0434\u044b<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#frequent\" rel=\"noopener noreferrer nofollow\">\u0427\u0430\u0441\u0442\u044b\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#rare\" rel=\"noopener noreferrer nofollow\">\u0420\u0435\u0434\u043a\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#episodic\" rel=\"noopener noreferrer nofollow\">\u042d\u043f\u0438\u0437\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#using\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#in_system\" rel=\"noopener noreferrer nofollow\">\u0412 \u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#in_ide\" rel=\"noopener noreferrer nofollow\">\u0412 IDE<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#in_android_studio\" rel=\"noopener noreferrer nofollow\">\u0412 Android Studio<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#in_vs_code\" rel=\"noopener noreferrer nofollow\">\u0412 VS Code<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#gui\" rel=\"noopener noreferrer nofollow\">GUI<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#mini_investigation\" rel=\"noopener noreferrer nofollow\">\u041c\u0438\u043d\u0438-\u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#useful_tips\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u043e\u0432\u0435\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#bonus_story\" rel=\"noopener noreferrer nofollow\">\u0411\u043e\u043d\u0443\u0441\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#analogues\" rel=\"noopener noreferrer nofollow\">\u0410\u043d\u0430\u043b\u043e\u0433\u0438<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"#puro\" rel=\"noopener noreferrer nofollow\">Puro<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#conclusion\" rel=\"noopener noreferrer nofollow\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#useful_links\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"introduction\" id=\"introduction\"><\/a><\/p>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u0447\u0435\u0433\u043e \u0431\u044b \u0442\u043e \u043d\u0438 \u0431\u044b\u043b\u043e \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0430\u0436\u043d\u044b\u0445 \u0442\u0435\u043c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 flutter sdk \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0437-\u0437\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u044f \u043f\u0440\u043e <code>flutter [down|up]grade<\/code>).<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u043d\u0430\u0434 \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 flutter sdk, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043f\u043e \u043c\u0430\u043d\u043e\u0432\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435\u0440\u0441\u043a\u043e\u0439 \u043f\u0430\u043b\u043e\u0447\u043a\u0438. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0430\u0439\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 &#171;\u0440\u0435\u0430\u043a\u0446\u0438\u0438&#187; \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b flutter sdk, \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u044b\u0433\u0430\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0442\u043a\u0430\u043c\u0438 stable \u0438 beta.<\/p>\n<p>\u042d\u0442\u043e\u0439 \u043f\u0430\u043b\u043e\u0447\u043a\u043e\u0439 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f FVM, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f flutter sdk \u0432\u0435\u0440\u0441\u0438\u0439. \u041f\u0435\u0440\u0432\u044b\u0439 commit \u0434\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/commit\/72615bc600506472b47741488ff5c22834250b73\" rel=\"noopener noreferrer nofollow\">22 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2019\u0433<\/a>, \u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0443\u0436\u0435 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/releases\/tag\/v0.1.1\" rel=\"noopener noreferrer nofollow\">27 \u0444\u0435\u0432 2019\u0433<\/a>. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f <a href=\"https:\/\/fvm.app\/\" rel=\"noopener noreferrer nofollow\">fvm.app<\/a>, \u0438 \u0432\u043e\u0442 \u0447\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442 \u043d\u0430\u0441 \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c \u043a\u0440\u044b\u043b\u044c\u0446\u0435 \u043f\u0430\u0440\u0430\u0434\u043d\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430:<\/p>\n<figure class=\"full-width\"><\/figure>\n<ul>\n<li>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e Flutter SDK \u0432\u0435\u0440\u0441\u0438\u0439 \u2013 &#171;\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0441\u0438\u0439 Flutter SDK. \u0411\u044b\u0441\u0442\u0440\u043e\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438 \u0438 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438. \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0438 \u0440\u0435\u043b\u0438\u0437\u043e\u0432.&#187;<\/p>\n<\/li>\n<li>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2013 &#171;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u044e Flutter SDK \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0443\u0442\u0438 SDK \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0432 IDE. \u041e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0438 CI \u0441\u0440\u0435\u0434\u0430\u043c\u0438.&#187;<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u2013  &#171;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Flutter SDK. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Flutter SDK. Docker-\u043e\u0431\u0440\u0430\u0437\u044b \u0434\u043b\u044f CI \u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Flutter \u0438\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432.&#187;<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u0431\u0435\u0437 \u043f\u0440\u0435\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0439, \u0432\u0441\u0451 \u0442\u0430\u043a \u0438 \u0435\u0441\u0442\u044c.<\/p>\n<p><a class=\"anchor\" name=\"beginning_of_work\" id=\"beginning_of_work\"><\/a><\/p>\n<h2>\u041d\u0430\u0447\u0430\u043b\u043e \u0440\u0430\u0431\u043e\u0442\u044b<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 flutter sdk \u0441\u043b\u0435\u0434\u0443\u044f <a href=\"https:\/\/docs.flutter.dev\/get-started\/install\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439<\/a> \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e. \u0417\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 fvm.<\/p>\n<blockquote>\n<p>\u2139 \u0412\u0435\u0441\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/releases\/tag\/2.4.1\" rel=\"noopener noreferrer nofollow\">2.4.1<\/a>. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 <code>changelog.md<\/code> \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u0435\u0440\u0441\u0438\u0438 3.0.0, \u0438 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u044f \u043f\u0440\u043e\u0448\u0451\u043b\u0441\u044f \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0442\u0430\u043c \u0433\u0440\u044f\u0434\u0443\u0449\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c.<\/p>\n<\/blockquote>\n<p>\u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0438\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448 \u043f\u043a. \u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 brew \u0434\u043b\u044f unix \u0438\u043b\u0438 choco \u0434\u043b\u044f windows:<\/p>\n<pre><code class=\"bash\">brew tap leoafarias\/fvm   brew install fvm  choco install fvm<\/code><\/pre>\n<p>\u041b\u0438\u0431\u043e, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0437 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/releases\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/a> \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c fvm \u043a\u0430\u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 dart-<a href=\"https:\/\/pub.dev\/packages\/fvm\" rel=\"noopener noreferrer nofollow\">\u043f\u0430\u043a\u0435\u0442<\/a>, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">dart pub global activate fvm<\/code><\/pre>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0442\u0435\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0441\u044f, \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a (\u043c\u044b \u0436\u0435 flutter dev!?), \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0443\u0436\u0435 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f (\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u043c\u0438\u043b\u0430\u044f \u043e\u0448\u0438\u0431\u043e\u0447\u043a\u0430 \u2013 <a href=\"https:\/\/github.com\/dart-lang\/pub\/issues\/2593\" rel=\"noopener noreferrer nofollow\">Running a globally activated binary after SDK upgrade &#8212; Can&#8217;t load Kernel binary: Invalid SDK hash<\/a>. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 dart, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438 \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f snapshot \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430. \u0418 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e VM \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 dart \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c snapshot, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 dart.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438 \u0434\u0432\u0438\u0436\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p><a class=\"anchor\" name=\"commands\" id=\"commands\"><\/a><\/p>\n<h2>\u041a\u043e\u043c\u0430\u043d\u0434\u044b<\/h2>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 <code>fvm<\/code> \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code>Available commands:   config     Set configuration for FVM   dart       Proxies Dart Commands   destroy    Destroy FVM cache by deleting FVM directory   doctor     Shows information about environment, and project configuration.   exec       Executes scripts with the configured Flutter SDK   flavor     Switches between different project flavors   flutter    Proxies Flutter Commands   global     Sets Flutter SDK Version as a global   install    Installs Flutter SDK Version   list       Lists installed Flutter SDK Versions   releases   View all Flutter SDK releases available for install.   remove     Removes Flutter SDK Version   spawn      Spawns a command on a Flutter version   use        Sets Flutter SDK Version you would like to use in a project<\/code><\/pre>\n<p>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u043e 14 \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434, \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f (<code>gh repo clone fluttertools\/fvm<\/code>) \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \ud83d\ude42<\/p>\n<p><a class=\"anchor\" name=\"frequent\" id=\"frequent\"><\/a><\/p>\n<h3>\u0427\u0430\u0441\u0442\u044b\u0435<\/h3>\n<p>\u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435  \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<ul>\n<li>\n<p><code>fvm install &lt;version><\/code> \u2013 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e\/\u043a\u0430\u043d\u0430\u043b flutter sdk.<\/p>\n<\/li>\n<li>\n<p><code>fvm dart<\/code> \u2013 \u0432\u044b\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b dart sdk, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 flutter sdk. \u042d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c dart sdk, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a: <\/p>\n<ul>\n<li>\n<p><code>dart run build_runner build<\/code>, <code>dart pub upgrade<\/code>, <code>dart migrate<\/code>, <code>dart fix \u2014apply<\/code>, <code>dart create<\/code>, <code>dart test<\/code> \u0438 \u043f\u0440\u043e\u0447\u0438\u043c;<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><code>fvm flutter<\/code> \u2013 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 flutter sdk, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <code>flutter build<\/code>, <code>flutter pub<\/code>, <code>flutter run<\/code> \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p><code>fvm use &lt;version><\/code> \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u043a \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e flutter sdk \u0432\u0435\u0440\u0441\u0438\u044e. \u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043f\u0430\u043f\u043a\u0443 <code>.fvm<\/code> \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 flutter sdk \u0438 \u0444\u0430\u0439\u043b <code>fvm_config.json<\/code> \u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439. \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438: <\/p>\n<ul>\n<li>\n<p><code>--force<\/code>, \u0447\u0442\u043e\u0431\u044b \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f flutter-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 dart-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u043b\u0438 \u0436\u0435, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c flutter-\u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0437\u0436\u0435.<\/p>\n<\/li>\n<li>\n<p><code>--pin<\/code>, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0435\u043b\u0438\u0437 \u0441 \u043a\u0430\u043d\u0430\u043b\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>fvm use stable --pin<\/code> \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk \u0441 \u043a\u0430\u043d\u0430\u043b\u0430 <code>stable<\/code> (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0430) \u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0451 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<\/li>\n<li>\n<p><code>--flavor<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 sdk \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043b\u043e\u0433\u0438\u043a\u0430 \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 &#171;\u0430\u0440\u043e\u043c\u0430\u0442\u044b&#187;, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432\u043e flutter. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e flutter sdk \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e &#171;\u0430\u0440\u043e\u043c\u0430\u0442\u0430&#187; \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a: <\/p>\n<ul>\n<li>\n<p><code>fvm use &lt;version> --flavor &lt;flavor_name><\/code> \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433-\u0444\u0430\u0439\u043b:<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code class=\"json\">{   \"flutterSdkVersion\": \"stable\",   \"flavors\": {     \"dev\": \"beta\",     \"staging\": \"2.0.3\",     \"prod\": \"1.22.6\"   } }<\/code><\/pre>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 &#171;\u0430\u0440\u043e\u043c\u0430\u0442&#187;, \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a:<\/p>\n<ul>\n<li>\n<p><code>fvm flavor staging<\/code>, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 flutter sdk \u0432\u0435\u0440\u0441\u0438\u0438 <code>2.0.3<\/code><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"rare\" id=\"rare\"><\/a><\/p>\n<h3>\u0420\u0435\u0434\u043a\u0438\u0435<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0436\u0435:<\/p>\n<ul>\n<li>\n<p><code>fvm global<\/code> \u2013 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <code>default<\/code>-\u0432\u0435\u0440\u0441\u0438\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u041d\u0415 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>fvm flutter &lt;command><\/code>, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u042d\u0442\u0443 \u043e\u043f\u0446\u0438\u044e \u0430\u0432\u0442\u043e\u0440 \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0445\u043e\u0447\u0435\u0442 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0418\u041b\u0418 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439 <a href=\"https:\/\/github.com\/fluttertools\/fvm\/discussions\/469#discussioncomment-5012824\" rel=\"noopener noreferrer nofollow\">\u043f\u043e \u0440\u044f\u0434\u0443 \u043f\u0440\u0438\u0447\u0438\u043d<\/a>.<\/p>\n<\/li>\n<li>\n<p><code>fvm list<\/code> \u2013 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0441\u0435\u0445 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 flutter sdk. \u042d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm use<\/code>, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e (\u0445\u043e\u0442\u044f \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443) \u0438\u043b\u0438 \u0436\u0435, \u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p><code>fvm releases<\/code> \u2013 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u044b\u043f\u0443\u0441\u043a\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438. \u041f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c \u0447\u0435\u0441\u0442\u043d\u043e, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0440\u0430\u0439\u043d\u0435 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c, \u0431\u044b\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e dev \u043a\u0430\u043d\u0430\u043b \u0431\u044b\u043b \u043d\u0435\u0434\u0430\u0432\u043d\u043e <a href=\"https:\/\/medium.com\/flutter\/whats-new-in-flutter-2-8-d085b763d181\" rel=\"noopener noreferrer nofollow\">\u0437\u0430\u043a\u0440\u044b\u0442<\/a>.<\/p>\n<\/li>\n<li>\n<p><code>fvm destroy<\/code> \u2013 \u0443\u0434\u0430\u043b\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk \u0438 \u0441\u0430\u043c\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f fvm.<\/p>\n<\/li>\n<li>\n<p><code>fvm remove<\/code> \u2013 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>fvm remove &lt;version><\/code> \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 sdk. \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0444\u043b\u0430\u0433 <code>--force<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 &#171;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043b\u0438 \u0434\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439&#187;.<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"episodic\" id=\"episodic\"><\/a><\/p>\n<h3>\u042d\u043f\u0438\u0437\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/h3>\n<p>\u0418 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0434\u043a\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u044b\u043c:<\/p>\n<ul>\n<li>\n<p><code>fvm exec<\/code> \u2013 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 flutter cli \u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0440\u044f\u0434\u043e\u043c \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk (\u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>.fvm\/flutter_sdk\/bin<\/code>). \u0427\u0430\u0441\u0442\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u0437 \u043f\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0432\u0430\u0441 \u043b\u0435\u0436\u0438\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 <code>generate_secrets.sh<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u0437\u043e\u0440 \u0434\u0432\u0443\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c:<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">PATH=\"$(pwd)\/.fvm\/flutter_sdk\/bin:$PATH\" .\/generate_secrets.sh<\/code><\/pre>\n<ul>\n<li>\n<p>\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>exec<\/code>:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">fvm exec .\/generate_secrets.sh<\/code><\/pre>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u044d\u0442\u043e\u043c issue, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438: <a href=\"https:\/\/github.com\/fluttertools\/fvm\/issues\/317\" rel=\"noopener noreferrer nofollow\">[Feature Request] fvm exec<\/a>.<\/p>\n<ul>\n<li>\n<p><code>fvm spawn &lt;version><\/code> \u2013 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432\u00a0flutter cli \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk. \u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e  <code>fvm flutter<\/code> \u0437\u0430 \u0442\u0435\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0441\u0430\u043c\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e sdk, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"bash\">fvm spawn 3.10.6 test fvm spawn 3.13.0-0.3.pre test fvm spawn 2.10.5 analyze<\/code><\/pre>\n<ul>\n<li>\n<p><code>fvm config<\/code> \u2013 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c fvm. \u0412 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <code>.settings<\/code> (\u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0435\u0433\u043e <code>settings.json<\/code>? \u041d\u0430\u043c\u0451\u043a \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0440\u0443\u0447\u043a\u0430\u043c\u0438 \u043d\u0435 \u043b\u0430\u0437\u0438\u043b\u0438? ) \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u043f\u0443\u0442\u0438 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 (<code>USERPROFILE<\/code> \u0434\u043b\u044f windows \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, <code>HOME<\/code> \u0434\u043b\u044f unix). \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438: <\/p>\n<ul>\n<li>\n<p><code>--cache-path<\/code> \u2013 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u044c, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 flutter sdk. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043d\u0430\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>FVM_HOME<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0438, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u0442\u044c \u0431\u0443\u0434\u0435\u0442 <code>%USERPROFILE%\/fvm\/versions\/<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>--[no-]skip-setu<\/code><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\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-353730","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353730","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=353730"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353730\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=353730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=353730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=353730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}