{"id":858,"date":"2025-05-12T12:15:42","date_gmt":"2025-05-12T11:15:42","guid":{"rendered":"https:\/\/blog.syddel.uk\/?p=858"},"modified":"2025-12-05T20:57:53","modified_gmt":"2025-12-05T20:57:53","slug":"installing-flutter-on-linux-from-github","status":"publish","type":"post","link":"https:\/\/blog.syddel.uk\/?p=858","title":{"rendered":"Installing Flutter on Linux (from Github)"},"content":{"rendered":"\n<p>Flutter is an incredible open-source UI Software Development Kit (SDK) developed by Google. It enables the creation of applications that are natively compiled for mobile platforms (iOS, Android), web, and desktop systems (Windows, macOS, Linux) using a single codebase. Flutter employs Dart, an object-oriented programming language, which was also created by Google.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation Steps<\/h2>\n\n\n\n<p>The following steps will be used to install Flutter from GitHub on Linux. I will be using Arch Linux, but the same steps should be applicable to other (inferior) Linux distros.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install dependencies.<\/li>\n\n\n\n<li>Install (clone) Flutter from GitHub<\/li>\n\n\n\n<li>Install and configure Android Studio<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Install Dependencies<\/h3>\n\n\n\n<p>Install Java, Unzip and Ninja and Chromium:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$ sudo pacman -S jdk-openjdk unzip ninja chromium clang cmake<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F69D50\">$<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">sudo<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">pacman<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">-S<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">jdk-openjdk<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">unzip<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">ninja<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">chromium<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">clang<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">cmake<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p><strong>NOTE:<\/strong> If you already have Google Chrome installed, then there&#8217;s no need to install Chromium.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Install Flutter from GitHub<\/h3>\n\n\n\n<p>Change into your desired installation directory, and then install Flutter from GitHub:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$ cd \/path\/to\/install\/dir\/\n$ git clone https:\/\/github.com\/flutter\/flutter.git<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F69D50\">$<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">cd<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">\/path\/to\/install\/dir\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F69D50\">$<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">git<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">clone<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">https:\/\/github.com\/flutter\/flutter.git<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>In <code>~\/.bashrc<\/code> (if you&#8217;re using bash), add the Flutter <code>bin<\/code> directory to your path:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>export PATH=$PATH:\/path\/to\/install\/dir\/flutter\/bin<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">export<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">PATH<\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #F69D50\">$PATH<\/span><span style=\"color: #ADBAC7\">:<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">path<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">to<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">install<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">dir<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">flutter<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">bin<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>If you want to use Chromium instead of Google Chrome for web apps, also add to your <code>~\/.bashrc<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>export CHROME_EXECUTABLE=\/usr\/bin\/chromium<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">export<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">CHROME_EXECUTABLE<\/span><span style=\"color: #F47067\">=\/<\/span><span style=\"color: #ADBAC7\">usr<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">bin<\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\">chromium<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Install Android Studio<\/h3>\n\n\n\n<p>Details of how to install Android Studio are beyond the scope of this blog post, but it&#8217;s pretty straight forward if you follow the instructions on the <a href=\"https:\/\/developer.android.com\/studio\">Android Studio website<\/a>. I use the following steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Download Android Studio from the <a href=\"https:\/\/developer.android.com\/studio\">Android Studio website<\/a>.<\/li>\n\n\n\n<li>Extract to your desired installation directory: <br><code>tar -zxvf android-studio-&lt;version&gt;-linux.tar.gz -C \/path\/to\/install\/dir\/<\/code><\/li>\n\n\n\n<li>Run the binary to complete the installation:<br><code>\/path\/to\/install\/dir\/android-studio\/bin\/studio<\/code><\/li>\n\n\n\n<li>Set up a <code>.desktop<\/code> file for Android Studio.<\/li>\n<\/ol>\n\n\n\n<p>Now run <code>flutter doctor<\/code>. This will pull in some other Flutter dependencies, and will tell you what else needs to be installed\/fixed. You can run <code>flutter doctor<\/code> at any time:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$ flutter doctor\nDoctor summary (to see all details, run flutter doctor -v):\n&#91;\u2713&#93; Flutter (Channel master, 3.32.0-1.0.pre.490, on Arch Linux 6.14.5-arch1-1, locale en_GB.UTF-8)\n&#91;!&#93; Android toolchain - develop for Android devices (Android SDK version 35.0.1)\n    \u2717 cmdline-tools component is missing.\n      Try installing or updating Android Studio.\n      Alternatively, download the tools from https:\/\/developer.android.com\/studio#command-line-tools-only and make sure to set the ANDROID_HOME environment variable.\n      See https:\/\/developer.android.com\/studio\/command-line for more details.\n    \u2717 Android license status unknown.\n      Run `flutter doctor --android-licenses` to accept the SDK licenses.\n      See https:\/\/flutter.dev\/to\/linux-android-setup for more details.\n&#91;\u2713&#93; Chrome - develop for the web\n&#91;\u2713&#93; Linux toolchain - develop for Linux desktop\n&#91;\u2713&#93; Android Studio (version 2024.3.2)\n&#91;\u2713&#93; IntelliJ IDEA Community Edition (version 2024.3)\n&#91;\u2713&#93; Connected device (3 available)\n&#91;\u2713&#93; Network resources\n\n! Doctor found issues in 1 category.\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #adbac7\">$ flutter doctor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">Doctor summary (to see all details, run flutter doctor -v):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Flutter (Channel master, 3.32.0-1.0.pre.490, on Arch Linux 6.14.5-arch1-1, locale en_GB.UTF-8)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;!&#93; Android toolchain - develop for Android devices (Android SDK version 35.0.1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">    \u2717 cmdline-tools component is missing.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">      Try installing or updating Android Studio.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">      Alternatively, download the tools from https:\/\/developer.android.com\/studio#command-line-tools-only and make sure to set the ANDROID_HOME environment variable.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">      See https:\/\/developer.android.com\/studio\/command-line for more details.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">    \u2717 Android license status unknown.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">      Run `flutter doctor --android-licenses` to accept the SDK licenses.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">      See https:\/\/flutter.dev\/to\/linux-android-setup for more details.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Chrome - develop for the web<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Linux toolchain - develop for Linux desktop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Android Studio (version 2024.3.2)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; IntelliJ IDEA Community Edition (version 2024.3)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Connected device (3 available)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Network resources<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">! Doctor found issues in 1 category.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\"><\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Let&#8217;s deal with the first issue and install the <code>cmdline-tools<\/code>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open Android Studio.<\/li>\n\n\n\n<li>Navigate to <strong>Tools<\/strong> &gt; <strong>SDK Manager<\/strong>.<\/li>\n\n\n\n<li>Click on the <strong>SDK Tools<\/strong> tab.<\/li>\n\n\n\n<li>Click the checkbox to tick <strong>Android SDK Command-line Tools (latest)<\/strong>.<\/li>\n\n\n\n<li>Click on the <strong>Apply<\/strong> button.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1009\" height=\"737\" src=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Install-CommandLine-Tools-e1747009159613.png\" alt=\"\" class=\"wp-image-863\" srcset=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Install-CommandLine-Tools-e1747009159613.png 1009w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Install-CommandLine-Tools-e1747009159613-300x219.png 300w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Install-CommandLine-Tools-e1747009159613-768x561.png 768w\" sizes=\"auto, (max-width: 1009px) 100vw, 1009px\" \/><\/figure>\n\n\n\n<p>Find where <code>sdkmanager<\/code> was installed and then add this to your path:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$ sudo find \/ -name 'sdkmanager'\n\/path\/to\/install\/dir\/Android\/Sdk\/cmdline-tools\/latest\/bin\/sdkmanager\n\n# Add permanently to path in your ~\/.bashrc:\nexport PATH=$PATH:\/path\/to\/install\/dir\/Android\/Sdk\/cmdline-tools\/latest\/bin<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F69D50\">$<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">sudo<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">find<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">\/<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">-name<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&#39;sdkmanager&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F69D50\">\/path\/to\/install\/dir\/Android\/Sdk\/cmdline-tools\/latest\/bin\/sdkmanager<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\"># Add permanently to path in your ~\/.bashrc:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">export<\/span><span style=\"color: #ADBAC7\"> PATH<\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\">$PATH<\/span><span style=\"color: #96D0FF\">:\/path\/to\/install\/dir\/Android\/Sdk\/cmdline-tools\/latest\/bin<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Agree to the licenses:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly> $ flutter doctor --android-licenses<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #adbac7\"> $ flutter doctor --android-licenses<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Run <code>flutter doctor<\/code> again, it should now show that everything is okay:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$ flutter doctor\nDoctor summary (to see all details, run flutter doctor -v):\n&#91;\u2713&#93; Flutter (Channel master, 3.32.0-1.0.pre.490, on Arch Linux 6.14.5-arch1-1, locale en_GB.UTF-8)\n&#91;\u2713&#93; Android toolchain - develop for Android devices (Android SDK version 35.0.1)\n&#91;\u2713&#93; Chrome - develop for the web\n&#91;\u2713&#93; Linux toolchain - develop for Linux desktop\n&#91;\u2713&#93; Android Studio (version 2024.3.2)\n&#91;\u2713&#93; IntelliJ IDEA Community Edition (version 2024.3)\n&#91;\u2713&#93; Connected device (2 available)\n&#91;\u2713&#93; Network resources\n\n\u2022 No issues found!<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #adbac7\">$ flutter doctor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">Doctor summary (to see all details, run flutter doctor -v):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Flutter (Channel master, 3.32.0-1.0.pre.490, on Arch Linux 6.14.5-arch1-1, locale en_GB.UTF-8)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Android toolchain - develop for Android devices (Android SDK version 35.0.1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Chrome - develop for the web<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Linux toolchain - develop for Linux desktop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Android Studio (version 2024.3.2)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; IntelliJ IDEA Community Edition (version 2024.3)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Connected device (2 available)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">&#91;\u2713&#93; Network resources<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">\u2022 No issues found!<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Finishing Steps<\/h3>\n\n\n\n<p>If you don&#8217;t want to send analytics back to Google to help improve Flutter:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>flutter config --no-analytics<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #adbac7\">flutter config --no-analytics<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Choose which Flutter &#8220;channel&#8221; you wish to use (the default is <code>master<\/code>):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>$ flutter channel\nFlutter channels:\n* master (latest development branch, for contributors)\n  main (latest development branch, follows master channel)\n  beta (updated monthly, recommended for experienced users)\n  stable (updated quarterly, for new users and for production app releases)\n\n# Switch to the \"stable\" channel:\n$ flutter channel stable <\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #adbac7\">$ flutter channel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">Flutter channels:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">* master (latest development branch, for contributors)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">  main (latest development branch, follows master channel)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">  beta (updated monthly, recommended for experienced users)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">  stable (updated quarterly, for new users and for production app releases)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\"># Switch to the &quot;stable&quot; channel:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #adbac7\">$ flutter channel stable <\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Install the Flutter plugin in Android Studio:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"991\" height=\"733\" src=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/install-flutter-plugin-android-studio.png\" alt=\"\" class=\"wp-image-867\" srcset=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/install-flutter-plugin-android-studio.png 991w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/install-flutter-plugin-android-studio-300x222.png 300w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/install-flutter-plugin-android-studio-768x568.png 768w\" sizes=\"auto, (max-width: 991px) 100vw, 991px\" \/><\/figure>\n\n\n\n<p>At this point, you should be able to create a new Flutter project from within Android Studio. However, you will need to do two more things before you can execute projects on an AVD or real device:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Select the &#8220;Flutter SDK&#8221; (which is basically just the directory where you installed Flutter).<\/li>\n\n\n\n<li>Install (if you haven&#8217;t already done so) and select an &#8220;Android SDK&#8221;.<\/li>\n<\/ol>\n\n\n\n<p>Creating a new Flutter project within Android Studio:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"806\" height=\"651\" src=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-New-Flutter-Project.png\" alt=\"\" class=\"wp-image-896\" style=\"width:840px;height:auto\" srcset=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-New-Flutter-Project.png 806w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-New-Flutter-Project-300x242.png 300w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-New-Flutter-Project-768x620.png 768w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><\/figure>\n\n\n\n<p>When creating a new Flutter Project, you will need to enter the Flutter SDK path (which is just the directory you installed Flutter in):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"801\" height=\"706\" src=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-SDK-Path.png\" alt=\"\" class=\"wp-image-897\" style=\"width:840px;height:auto\" srcset=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-SDK-Path.png 801w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-SDK-Path-300x264.png 300w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-SDK-Path-768x677.png 768w\" sizes=\"auto, (max-width: 801px) 100vw, 801px\" \/><\/figure>\n\n\n\n<p>If you haven&#8217;t already selected an Android SDK to use for your Flutter project, the device selection will not display any attached Android devices (or Android AVDs that are running):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"720\" src=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Device-Selection-Empty-1024x720.png\" alt=\"\" class=\"wp-image-898\" srcset=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Device-Selection-Empty-1024x720.png 1024w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Device-Selection-Empty-300x211.png 300w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Device-Selection-Empty-768x540.png 768w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Device-Selection-Empty.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>To be able to run Flutter projects within Android Studio on an AVD (Android Virtual Device) or real device:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>With the project open, select the &#8220;Menu&#8221; drawer.<\/li>\n\n\n\n<li>Select <strong>Project Structure<\/strong>.<\/li>\n\n\n\n<li>Under <strong>Project Settings<\/strong>, select <strong>Project<\/strong> (should be selected by default).<\/li>\n\n\n\n<li>Choose an Android SDK in the <strong>SDK<\/strong> dropdown.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1025\" height=\"851\" src=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Select-Android-SDK.png\" alt=\"\" class=\"wp-image-900\" srcset=\"https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Select-Android-SDK.png 1025w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Select-Android-SDK-300x249.png 300w, https:\/\/blog.syddel.uk\/wp-content\/uploads\/2025\/05\/Android-Studio-Select-Android-SDK-768x638.png 768w\" sizes=\"auto, (max-width: 1025px) 100vw, 1025px\" \/><\/figure>\n\n\n\n<p>That&#8217;s it, you&#8217;re good to go! So go forth, and code like there&#8217;s no tomorrow!!! \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Flutter is an incredible open-source UI Software Development Kit (SDK) developed by Google. It enables the creation of applications that are natively compiled for mobile platforms (iOS, Android), web, and desktop systems (Windows, macOS, Linux) using a single codebase. Flutter employs Dart, an object-oriented programming language, which was also created by Google. Installation Steps The<a class=\"moretag\" href=\"https:\/\/blog.syddel.uk\/?p=858\"><span class=\"screen-reader-text\">Read more about Installing Flutter on Linux (from Github)<\/span>[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":903,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,16,15],"tags":[],"class_list":["post-858","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding","category-configuration","category-installation"],"_links":{"self":[{"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=\/wp\/v2\/posts\/858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=858"}],"version-history":[{"count":34,"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=\/wp\/v2\/posts\/858\/revisions"}],"predecessor-version":[{"id":949,"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=\/wp\/v2\/posts\/858\/revisions\/949"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=\/wp\/v2\/media\/903"}],"wp:attachment":[{"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.syddel.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}