I spent majority of my mobile development career on native app development, mainly Kotlin and Swift. And this is my perspective on using Flutter for the first time. I have only seen small code snippets and that’s it.
This is my first time logging into Flutter’s official site. I Googled Flutter. And first thing came up is Flutter – Build apps for any screen. And I have to double check, why .dev? It seems too cringe.
Anyway, time to install. I wish we could just install Flutter via homebrew brew install flutter
. Let me try.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-6.02.09-pm.png)
Well, that worked. Curiously nowhere in their macOS install | Flutter indicated this option.
Running flutter doctor be like…
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-6.08.50-pm.png)
A couple of things that caught my attention. Cocoapods not installed, okay makes sense. And “cannot find Chrome”? Yes, I don’t use Chrome.
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
Try setting CHROME_EXECUTABLE to a Chrome executable, what the fuck does that even mean. Does this mean I can’t do Flutter things without Chrome?
Let’s create our first Flutter project.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-6.16.45-pm-redacted_dot_app.png)
Flutter used my client’s Apple Development account. Maybe this is the first account that popped, I have to change this to my own in the future. It would be correct if Flutter can let me choose my account no?
Time to run my Flutter project.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-6.19.37-pm.png)
Let me attach my Android device.
![](https://lwgmnz.me/files/2022/04/maxresdefault.jpg)
Damn, I forgot to install adb. What kind of Android dev am I.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-6.24.38-pm.png)
Okay I think we are all set. Device has been detected.
flutter run
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-6.30.03-pm.png)
Why Install Android SDK Build-Tools 29.0.2? According to https://developer.android.com/studio/releases/build-tools, version 29.0.2 has been released back in August 2019. The latests version is 30.0.2.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-6.34.52-pm.png)
Deploy to iOS
I’m too lazy to find the wire, so let’s run it on an iOS emulator instead. As I’m reading the macOS install | Flutter it turns out I need Cocoapods installed. Nah let me open Xcode workspace directly and run it on the emulator. It worked perfectly well.
![](https://lwgmnz.me/files/2022/04/simulator-screen-shot-iphone-13-2022-04-28-at-18.52.13.png)
Damn, why is there a little Debug ribbon on the upper right.
Opening the project on Android Studio
Not sure if straight up importing from the Android Studio will work. Let’s try.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-7.08.38-pm.png)
Okay it worked. Let’s also update the Android Gradle Plugin. Let’s run the upgrade assistant.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-7.12.31-pm.png)
Whoa! I’m about to upgrade the AGP version from 4.1.0 to 7.1.3? Let’s do it!
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-7.23.19-pm.png)
And the build failed. It seems Flutter does not yet support AGP 7.1.3 or Java 11. It’s a shame since our current Android project (Kotlin) has been built with AGP 7.1.3 as long as I can remember.
APK Size
Let’s try to build a debug APK to check their size. I always make sure APK sizes are always manageably small since in my country, data is very pricey.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-8.09.52-pm.png)
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-8.43.09-pm.png)
Compare that to the APK size of our current released native app.
![](https://lwgmnz.me/files/2022/04/screen-shot-2022-04-28-at-8.43.09-pm-1.png)
Thoughts
- Remember the Cocoapods and Chrome issues? I’m not yet sure on their purpose since I can open and build the projects directly on Xcode and Android Studio. I read something about Flutter plugins but that is for another day.
- Cross platform solutions always tends to generate large sizes compared to native.
For the next part, maybe I will try to create a splash screen.