iOS Application Bundle By Flutter - Blog Concetto Labs

iOS Application Bundle By Flutter

Author image By Manish Patel  |  Monday, August 5, 2019 02:56 PM  |  3 min read  |   5

Flutter

In today’s article, we gonna discuss how Flutter’s build system converts Flutter project with its goods into an iOS application bundle.

We will also let you know the purpose of generated objects so that it can help you to integrate the same processes with your custom build environment.

First Let’s Discuss the Workflow:

When your application is ready to release to make the build process easy you can use Flutter tooling as it helps to make the entire build process easy.

But some of the developers didn’t think this way and they don’t find the process as configurable for their custom build or CI (Continuous Integration) setups.

If you have a custom Xcode build than all the vision added by Flutter tooling is optional and you can configure the build that suits your workflow.

These all information we discuss applies to iOS applications bundles prepared for release to the App Store which means projects built to Flutter’s release mode.

To support toolings such as observatory and hot reload profile mode uses a different runtime and packaging model.

Similar App bundle like iOS:

 App bundle like iOS

If you want to create similar to a typical iOS app bundle then you can use the flutter build iOS – release command that contains the application executable along with any referenced framework and resources.

What required to compile the Application?

While the installation process starts to install the SDK, at that time flutter tools are cached on into the machine. To check the same you can see under bin/cache directory which is available in the copy of the Flutter SDK.

This directory contains all the versioned tool that is required to work with Flutter so you can integrate any step of the process into your own build system.

Let me introduce to you some of the files that are unique to Flutter’s iOS app bundles – Flutter Engine Framework Bundle:

Flutter.framework directory bundled as an iOS framework bundle, that includes Flutter Engine and Assets that are referenced by the Flutter Engine.

  1. Flutter Engine:
    Include core libraries like file, network I/O, file, accessibility, plugin architecture, and support, the Skia renderer and the DartVM.
  2. Assets referenced by Flutter Engine:
    This is just ICU data currently.

Ahead-Of-Time Framework Hustle:

An AOT snapshot of all the Dart application code that is written by the user is contained by the App.Framework bundle.

Whenever a release builds, the compiler performs the tree shaking on the Dart code. Hence only the code that is used to end up in the bundle.

The necessary artifacts that are used to create the App.framework bundle are getting generated under machine tool cache by the gen_snapshot.

The Ahead-Of-Time Snapshot:

This library contains the ahead-of-time code that is compiled from Dart to Machine native bits.

The four main symbols contained by the snapshot library that gets generated by gen_snapshot and these symbols can be dumped by nm command.

For example:

Runner.app/Frameworks/App.framework/App (for architecture arm64):
00000000004041a0 S _kDartIsolateSnapshotData
0000000000009000 T _kDartIsolateSnapshotInstructions
00000000003fc740 S _kDartVmSnapshotData
0000000000005000 T _kDartVmSnapshotInstructions

The purpose behind the AOT Snapshot:

1. DartVM Snapshot:

  • kDartVmSnapshotData
  • This represents the initial state of the Dart heap shared between isolates.
  • Helps to launch Dart isolates faster but it doesn’t contain any isolate-specific information.

2. DartVM Instructions:

  • kDartVmSnapshotData
  • Have all AOT instructions for common routines.
  • This information gets shared between all Dart isolates in the VM.
  • Extremely small snapshot and also contains stubs.

3. Isolate Snapshot:

  • kDartIsolateSnapshotData
  • The initial state of Dart heap represents by these.
  • Also includes isolate-specific information

4. Isolate Instructions:

  • kDartIsolateSnapshotinstructions
  • Have the AOT code that gets executed by the Dart isolate.

Flutter tools make sure that the assets that are referred by the application and its plugin end up in the app bundle.

These can be easily done by just reading the assets that are listed in the project’s pubspec.yaml file.

WRAP UP with some of the Flutter Application Development iOS app bundle keypoints:

In the native view hierarchy, Flutter view can be used anywhere as all the content rendered by Flutter get combined under this view.

Flutter can be integrated under a custom build system that is independent of Flutter tooling and development machine as well. All these tools are easily available in the bin/cachedirectory of the Flutter SDK.

 

iOS Application Bundle By Flutter

Contact Us

 

 


Author image

Manish Patel

Manish Patel is a Co-Founder of Concetto Labs, a leading mobile app development company specialized in android and iOS app development. We provide a one-stop solution for all IT related services.

Why Our Client Love Us?

  • Fast kick-off
  • Agile Ready
  • 98% Client Retention
  • 360-Degree solutions

Our integrity and process focuses largely on providing every customer the best recommendations for their respective business. Our clients become recurring customers because we always go beyond their expectations to deliver the best solutions.

Get In Touch
Mr. Sieva Savko
Customer for over 4 years Mr. Sieva Savko Norway

Concetto Labs have provided us with a tremendous amount of help. Their competence in various IT fields led to a positive outcome while facing different challenges. A lot of value was given by their helpful professional staff. To describe this company in three words: effectiveness, collaboration, trust. I would also like to personally thank Mr. Tejas Patel for his positive, friendly, and highly competent approach. The all-around support provided by him made every task at hand a no-brainer.

Miss. Caroline Jack
Customer for over 4 years Miss. Caroline Jack South Africa

It has been an absolute pleasure working with the Concetto Labs team! We have worked together on a few projects now, all of which have been successful. You can rely on good communication and response times from these guys. And they go above and beyond to ensure that the result is achieved. Because of their great service, they have become an integral part of our business and we will continue to use them going forward.

Mr. Richard Bartlett
Customer for over 3 years Mr. Richard Bartlett United States

Concetto Labs is a group of incredibly talented individuals. They are very responsive and communicate with you each and every step of the process. I worked with Manish Patel throughout the entire process and must say that I have never conducted business with a more honest and professional individual. Together with his team, Manish created www.travcentiverewards.com exactly how we envisioned it to be. Thanks for all of your hard work.

Mr. Conrad Abraham
Customer for over 2 years Mr. Conrad Abraham United States

Concetto Labs team is my go-to for any simple or complex development projects. They have risen to the challenge. Great project management, communication, and super quick turnaround. I’ve done multiple projects with them and don’t plan on changing that.

Mr. Edward Chin
Customer for over 4 years Mr. Edward Chin Canada

Concetto Labs was able to bring my complex idea to life. Throughout the project, Concetto Labs maintained constant communications and was always professional - considering I had no experience in what I wanted to create their welcoming attitude, patience, and knowledge in the field created the perfect environment to work in. I was so impressed with their work that I've kept them on board as my go-to experts. Thanks for the worthwhile experience and the breathtaking product.

Karuna Govind
Karuna Govind CTO & Co Founder (Coupay) London, UK

We started working with Concettolabs due to the influx of work on mobile (Flutter) and frontend (React.js). It's been fantastic working with them. Good, consistent communication and good quality of work means they may be our first choice for many projects to come.

GlobalClients
Good Firms Clutch App Futura Microsoft Associate Mobile App Top Developers Gesia
 

Ahmedabad

303-309, City Center, Science City Road,
Ahmedabad - 380060
 

Broomfield

2355 Prospect LN,
Broomfield CO-80023
 

Oshawa

1557 Clearbrook Dr,
Oshawa, ON L1K 2P6
 

Ilford

6 Hastings Avenue,
Ilford, IG6 1DZ, UK
 

Bodo

Lille Hunstad 4A,
8019 Bodø