簡體   English   中英

Flutter中的android文件夾和gradle是什么意思?

[英]What does android folder and gradle means in Flutter?

我已經使用 Flutter 快一年了,我從未使用過 Android Studio 或使用 Java/Kotlin 進行 Android 應用程序開發。 大多數情況下,我會收到與 Gradle、更改類路徑和實現相關的這些錯誤,但我似乎對此一無所知。

Flutter 中的任何應用程序都是在 Dart、C 和 C++ 三種語言的幫助下創建的。 在這里你也可以看出,每一個 Flutter 應用都是這三種語言代碼的組合。

整個 Flutter 框架是在 Dart 中創建的,我們也使用它來開發應用程序。 這里還要注意,我們並沒有直接使用 C 和 C++ 代碼來編寫應用程序,而是在圖形渲染引擎和 Dart 虛擬機中使用 C 和 C++ 代碼來執行它們的任務。

讓我們深入了解一下 Flutter 是如何為 Android 編譯的

  • Graphics Engine 的 C 和 C++ 代碼是在 Android 的 NDK(Native Development Kit)的幫助下編譯的。
  • SDK 和我們的 dart 代碼都通過 AOT(Ahead-of-Time)編譯過程編譯為原生 ARM 和 x86 庫。
  • 編譯成功后生成APK文件。
  • 任何小部件渲染、輸入輸出、事件處理等都是由編譯的應用程序代碼完成的。
  • 請注意,調試模式構建使用 Dart 虛擬機來運行 Dart 代碼以啟用有狀態的熱重載。

撲

所以與文件夾結構相關, ios包含了部分iOS代碼,使用CocoaPods來管理依賴。 android包含部分 Android 代碼並使用 Gradle 來管理依賴項。 lib 包含部分 Dart 代碼並使用 pub 來管理依賴項。 iOS 中的 Cocoapods 對應 Podfile 和 Podfile.lock ,而 pub 對應pubspec.yamlpubspec.lock

Flutter 下的 iOS/Android 項目本質上還是一個標准的 iOS/Android 項目。 Flutter 僅通過在 BuildPhase 中添加 shell 來生成和嵌入App.frameworkFlutter.framework (iOS)。 Flutter 還通過 gradle 添加了flutter.jarvm/isolate_snapshot_data/instr (Android) 來編譯 Flutter 相關代碼並嵌入到原生 App 中。

如果您想了解有關編譯過程的更多深入信息,請參閱本文https://www.alibabacloud.com/blog/an-in-depth-understanding-of-flutter-compilation-principles-and-optimizations_597747

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM