An overview of the

What is a Flutter? Flutter is an open source cross-platform UI framework developed by Google that allows users to quickly build high-quality native user interfaces on Android, iOS and the Web. Flutter has been updated at a rapid rate over the past two years, and many companies have started to use Flutter for cross-platform application development. It is safe to say that Flutter is the most popular cross-platform technology of 2019.

As a veteran of mobile Internet, I have studied cross-platform technologies such as Hybrid APP, React Native and Weex and had the honor to publish relevant books. My feeling about Flutter is that Flutter is clearly the best cross-platform development solution available, both in terms of community and community activity, and on a technical level.

In China, in addition to alibaba, Tencent, Meituan and other big companies, many small and medium-sized teams in China have begun to use Flutter as their first choice for mobile application development, and many companies also require a background in Flutter development for mobile recruitment. So what is Apple’s attitude towards the new Flutter? Will it be banned in the future, just like JSPatch and so on?

RN, Weex, applets

First, let’s take a look at RN and Weex. RN and Weex actually use a similar technical solution, in that they both use JavaScript as the programming language, and then use the native rendering engine to perform rendering operations after being converted to native platform components through the middle layer. In addition, students who expect a team to develop business can develop a set of code for multi-terminal use, and pursue more cross-platform capabilities. While doing this scheme, they also have dynamic capabilities.

As for the dynamic aspect itself, it has certain audit risk, which is clearly indicated here as non-compliance. Please refer to the audit rule 2.5.2 in Terms of Apple dynamic audit. However, the risk of RN and Weex is not as big as that of JSPatch, so Apple also turns a blind eye.

However, JSPatch and other hot fixes allow developers to call any native code in JS language through underlying operations, which directly leads to the possibility of extensive changes in the user App even after apple’s review, which makes Apple’s review mechanism useless. Imagine if your App, ostensibly a news App, was approved and then changed to another type of App. Your compliance would not only affect the overall experience of the App Store, but also create a systemic compliance problem for Apple. This is the reason why JSPatch was banned.

RN and Weex suggest that they do not advocate, do not promise, and do not block. From my understanding, Apple takes a wait-and-see attitude towards such relatively low-risk schemes. For example, if they find that their audit is affected one day, they will not hesitate to block them. If a page is dynamically changed during the review process using such techniques, it is likely to be rejected outright.

As for small programs, itself is actually the H5 offline package standardized yan, a development grammar itself does have the cross-platform and dynamic ability, from the perspective of the attitude of apple, as long as you don’t do too much in particular, at present, especially in the major platform were out small application solutions and open platform, You can’t kill all these apps.

Flutter

The biggest difference between Flutter and RN, Weex, and Applets is that Flutter is a cross-platform solution, not a dynamic one. If you read about Flutter, you will find that Flutter directly uses the SKIA engine to render views, and that Flutter widgets are built using a modern responsive framework that has no direct relationship to the platform.

Technically, Flutter is compiled directly through the NDK library (libflutter. So), that is, Flutter execution is AOT (static compilation), not JIT (just-in-time compilation). In practice, Flutter is also more efficient than Android’s native JIT state. Due to the nature of the local library, Flutter itself is not capable of thermal updating. Things like JSPatch, like Android’s native hotfix framework Tinker, can affect compilation efficiency, especially startup speed. It will definitely be blocked for user experience reasons, and Google Play does the same.

The current trend with Flutter is that Google wants Flutter to be the next generation of mobile development standards, with compliance considerations in everything they do. That’s why they didn’t consider supporting Flutter when considering its dynamic capabilities on iOS. Because once Flutter has this capability on iOS, there is an audit risk, and the audit risk is systemic.

Apple has made it clear that Flutter is not currently a compliance risk because it is not a dynamic solution in its own right, but it does not advocate, promise or kill Flutter because its rise will eat up the share of Apple’s native App developers. Apple doesn’t recommend using Native solutions that aren’t officially available, and apple doesn’t tolerate the mass disappearance of developers. Once this happens, the Ecosystem of Apple will be compromised. This is when The Father of Apple will protect the native developers of Apple Apps. This is the moment when Flutter shares and influence are reduced. To fend off the encroachment of cross-platform solutions on apple’s native App developers.

Reference: Mobile cross-platform solutions comparison: WEEX, React Native, Flutter, and PWA