欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

fluttergl,Flutterglue

flutter 反編譯

You are building a fat APK that includes binaries for android-arm, android-arm64.

巴馬ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

If you are deploying the app to the Play Store, it's recommended to use app bundles or split the APK to reduce the APK size.

To generate an app bundle, run:

? ? flutter build appbundle --target-platform android-arm,android-arm64

? ? Learn more on:

To split the APKs per ABI, run:

? ? flutter build apk --target-platform android-arm,android-arm64 --split-per-abi

? ? Learn more on:?

Initializing gradle...? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.3s

Resolving dependencies...? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 14.2s

Running Gradle task 'assembleRelease'...? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?: E:\work_tool\flutter\.pub-cache\hosted\pub.flutter-io.cn\connectivity-0.4.4\android\src\main\java\io\flutter\plugins\connectivity\ConnectivityPlugin.java???????????????? API??

?: ?й???????, ????? -Xlint:deprecation ???±???

?: E:\work_tool\flutter\.pub-cache\hosted\pub.flutter-io.cn\url_launcher-5.1.3\android\src\main\java\io\flutter\plugins\urllauncher\WebViewActivity.java?

??????????????? API??

?: ?й???????, ????? -Xlint:deprecation ???±???

Calling mockable JAR artifact transform to create file: C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\android.jar\baf414ed95f14e507d85c560886dfbe2\android.jar with input E:\work_tool\sdk\android-sdk-windows\platforms\android-28\android.jar

Calling mockable JAR artifact transform to create file: C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\android.jar\ab096bb3fb172ccb785acdb1058c10a9\android.jar with input E:\work_tool\sdk\android-sdk-windows\platforms\android-27\android.jar

Request to incrementing alive workforce from 0. Current workforce (dead or alive) 0

thread-pool size=4

ProGuard, version 6.0.3

Reading input...

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\flutter.jar\ab2691c929f4d2aa57a17fa551e662a6\jetified-flutter.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\app\intermediates\flutter\release\libs.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\localbroadcastmanager-1.0.0.aar\7a407f962902eada026a8e241a760bac\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\work-runtime-2.1.0.aar\8e3a1e8a8ff79006a94df6c01ceeb4f5\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\fragment-1.1.0.aar\4fa7d1b49e3514cb08c8a696f9b59436\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\room-runtime-2.1.0.aar\1b8774fa39759f08defb930275652eac\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\room-runtime-2.1.0.aar\1b8774fa39759f08defb930275652eac\jars\libs\room-common-java8-2.1.0.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\viewpager-1.0.0.aar\885186e7f6f969363bc93cd607d741a5\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\loader-1.0.0.aar\f84f22ad0a97d2c689850b912fc04277\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\activity-1.0.0.aar\a46db1490fae1b9001fc672a24eb288f\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\customview-1.0.0.aar\fe8bf4a709414e884086911d2168b715\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\core-1.1.0.aar\87febb54759dd5a2c7be8e971d745644\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\versionedparcelable-1.1.0.aar\754157c6f50ca4e4cf3ac8d7cb5ced26\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\androidx.collection\collection\1.1.0\1f27220b47669781457de0d600849a5de0e89909\collection-1.1.0.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-livedata-2.0.0.aar\de6944801d37d99b1dd0b877649fde1f\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-livedata-core-2.0.0.aar\e21d6663beb6faa41a30fd5a582cb4d9\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\core-runtime-2.0.1.aar\724bb0cc2ce99eaf0a23a99bb1cc5c23\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\androidx.room\room-common\2.1.0\b87765704590bd992ea0d92ac50253a9df7818a0\room-common-2.1.0.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\sqlite-framework-2.0.1.aar\9cbdf82e938f7e565620a3682d2406e9\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\sqlite-2.0.1.aar\1215aa5476f752bd431fb2d8059a1a39\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-service-2.0.0.aar\9d24ebd4d6766d7b2cd515369a737934\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-runtime-2.1.0.aar\ca02c0867547ae607130bcc54a4a9ba5\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\lifecycle-viewmodel-2.1.0.aar\594e1ff6298a01d8933530bb534fa472\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\savedstate-1.0.0.aar\8a2c3791a34fc80e5d9d268bf2886f95\jars\classes.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\androidx.lifecycle\lifecycle-common\2.1.0\c67e7807d9cd6c329b9d0218b2ec4e505dd340b7\lifecycle-common-2.1.0.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\androidx.arch.core\core-common\2.1.0\b3152fc64428c9354344bd89848ecddc09b6f07e\core-common-2.1.0.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\androidx.annotation\annotation\1.1.0\e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8\annotation-1.1.0.jar] (filtered)

Reading program jar [C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.google.guava\listenablefuture\1.0\c949a840a6acbc5268d088e47b04177bf90b3cad\listenablefuture-1.0.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\flutter_downloader\intermediates\intermediate-jars\release\classes.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\shared_preferences\intermediates\intermediate-jars\release\classes.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\url_launcher\intermediates\intermediate-jars\release\classes.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\sqflite\intermediates\intermediate-jars\release\classes.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\connectivity\intermediates\intermediate-jars\release\classes.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\path_provider\intermediates\intermediate-jars\release\classes.jar] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\package_info\intermediates\intermediate-jars\release\classes.jar] (filtered)

Reading program directory [F:\dartSpace\flutter\jiddspace\nfc\build\app\intermediates\javac\release\compileReleaseJavaWithJavac\classes] (filtered)

Reading program jar [F:\dartSpace\flutter\jiddspace\nfc\build\app\intermediates\transforms\mergeJavaRes\release\0.jar] (filtered)

Reading library jar [C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\androidx.annotation\annotation\1.0.0\45599f2cd5965ac05a1488fa2a5c0cdd7c499ead\annotation-1.0.0.jar] (filtered)

Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\android.jar]

Reading library jar [E:\work_tool\sdk\android-sdk-windows\build-tools\28.0.3\core-lambda-stubs.jar]

Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\org.apache.http.legacy.jar]

Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\android.test.mock.jar]

Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\android.test.base.jar]

Reading library jar [E:\work_tool\sdk\android-sdk-windows\platforms\android-28\optional\android.test.runner.jar]

Initializing...

Warning: io.flutter.embedding.android.FlutterView: can't find referenced method 'android.graphics.Insets getSystemGestureInsets()' in library class android.view.WindowInsets

Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.embedding.android.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.view.FlutterView: can't find referenced method 'android.graphics.Insets getSystemGestureInsets()' in library class android.view.WindowInsets

Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

Note: io.flutter.view.AccessibilityViewEmbedder$ReflectionAccessors: can't find dynamically referenced class android.util.LongArray

Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

Warning: io.flutter.view.FlutterView: can't find referenced class android.graphics.Insets

Note: there were 1 unresolved dynamic references to classes or interfaces.

? You should check if you need to specify additional program jars.

? ()

Warning: Exception while processing task java.io.IOException: Please correct the above warnings first.

Thread(Tasks limiter_1): destruction

Warning: there were 12 unresolved references to classes or interfaces.

? ? You may need to add missing library jars or update their versions.

? ? If your code works fine without the missing classes, you can suppress

? ? the warnings with '-dontwarn' options.

? ? ()

Warning: there were 2 unresolved references to library class members.

? ? You probably need to update the library versions.

? ? ()

FAILURE: Build failed with an exception.

* What went wrong:

Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.

Job failed, see logs for details

* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at

BUILD FAILED in 4m 23s

Running Gradle task 'assembleRelease'...

Running Gradle task 'assembleRelease'... Done? ? ? ? ? ? ? ? ? ? 264.4s (!)

*******************************************************************************************

The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.

See for more information on the problem and how to fix it.

*******************************************************************************************

Gradle task assembleRelease failed with exit code 1

為什么說移動(dòng)端的未來是Flutter?

Flutter是Google開發(fā)的新一代跨平臺(tái)方案,F(xiàn)lutter可以實(shí)現(xiàn)寫一份代碼同時(shí)運(yùn)行在iOS和Android設(shè)備上,并且提供很好的性能體驗(yàn)。Flutter使用Dart作為開發(fā)語言,這是一門簡(jiǎn)潔、強(qiáng)類型的編程語言。Flutter對(duì)于iOS和Android設(shè)備,提供了兩套視覺庫,可以針對(duì)不同的平臺(tái)有不同的展示效果。

Flutter原本是為了解決Web開發(fā)中的一些問題,而開發(fā)的一套精簡(jiǎn)版Web框架,擁有獨(dú)立的渲染引擎和開發(fā)語言,但后來逐漸演變?yōu)橐苿?dòng)端開發(fā)框架。正是由于Dart當(dāng)初的定位是為了替代JS成為Web框架,所以Dart的語法更接近于JS語法。例如定義對(duì)象構(gòu)建方法,以及實(shí)例化對(duì)象的方式等。

在Google剛推出Flutter時(shí),其發(fā)展很緩慢,終于在18年發(fā)布第一個(gè)Bate版之后迎來了爆發(fā)性增長(zhǎng),發(fā)布第一個(gè)Release版時(shí)增長(zhǎng)速度更快??梢詮腉ithub上Star數(shù)據(jù)看出來這個(gè)增長(zhǎng)的過程。在19年最新的Flutter 1.2版本中,已經(jīng)開放Web支持的Beta版。

Flutter不僅僅提供了一套視覺庫,在Flutter整體框架中包含各個(gè)層級(jí)階段的庫。例如實(shí)現(xiàn)一個(gè)游戲功能,上面一些游戲控件可以用上層視覺庫,底層游戲可以直接基于Flutter的底層庫進(jìn)行開發(fā),而不需要調(diào)用原生應(yīng)用的底層庫。Flutter的底層庫是基于Open GL實(shí)現(xiàn)的,所以O(shè)pen GL可以做的Flutter都可以。

前端開發(fā)怎么樣,想去學(xué)習(xí),有推薦的嗎?

核心

前端三大框架已趨于平穩(wěn),標(biāo)準(zhǔn)化,向?Web Components?看齊。

小程序(各種平臺(tái))爆發(fā),互聯(lián)網(wǎng)創(chuàng)業(yè)優(yōu)先選擇小程序。多端受到重視,不再只是?all in mobile。

WebAssembly?讓更多語言可以運(yùn)行在瀏覽器上。

PWA進(jìn)入穩(wěn)定期,尤其是 PWA 桌面版,可以讓我們更好的看清楚 PC 桌面版開發(fā)的全貌。

Flutter?發(fā)展較快,最大硬傷是Dart語言。RN原有的開發(fā)方式會(huì)退出歷史舞臺(tái)。

TypeScript已經(jīng)慢慢成為前端的主流開發(fā)如果你想要學(xué)好web前端最好加入一個(gè)好的學(xué)習(xí)環(huán)境,可以來這個(gè)Q群,首先是132,中間是667,最后是127,這樣大家學(xué)習(xí)的話就比較方便,還能夠共同交流和分享資料語言,將成為必備開發(fā)技能。

開發(fā)團(tuán)隊(duì)前后端分離已經(jīng)進(jìn)入深水期。

其他:ServerLess\GraphSQL發(fā)展迅猛、D3、webgl、SVG、webpack不再是唯一的打包工具選項(xiàng)(Rollup、parcel零配置)、WebRTC、靜態(tài)生成、人工智能前端化

趨勢(shì)一:更加移動(dòng)優(yōu)先

響應(yīng)式設(shè)計(jì)顯然是目前web前端開發(fā)領(lǐng)域的主要趨勢(shì)之一,并且這一趨勢(shì)在未來還將持續(xù)一段時(shí)間。雖然現(xiàn)在的響應(yīng)式設(shè)計(jì)大部分還是以PC版優(yōu)先,然而如果有一天我們把PC版放到比移動(dòng)版次要的位置上,也沒有什么好奇怪的。因?yàn)?,目前許多web前端開發(fā)者已經(jīng)開始轉(zhuǎn)向以移動(dòng)優(yōu)先方案來做他們的響應(yīng)式設(shè)計(jì)和開發(fā),這就象征著一個(gè)重大轉(zhuǎn)變,值得我們跟進(jìn)的。

趨勢(shì)二:更多使用快速原型開發(fā)工具

眾多web前端開發(fā)者從2018年開始嘗試使用快速原型開發(fā)工具,而在2019年將是這種技術(shù)真正爆發(fā)的一年?!癠Xpin、Webflow、Invision以及其它許多快速原型開發(fā)工具,讓設(shè)計(jì)師不用寫一行代碼,就能為網(wǎng)站和服務(wù)快速創(chuàng)建低保真和高保真原型,便于設(shè)計(jì)師衡量它們的可用性和美觀性?!眞eb設(shè)計(jì)師Jamie 如是說,“許多工具也允許你在瀏覽器中設(shè)計(jì)原型并從工具里真正啟動(dòng)網(wǎng)站自身?!?/p>

趨勢(shì)三:營(yíng)銷類頁面小程序化

這個(gè)指的就是大家平時(shí)在微信里看到的各類營(yíng)銷網(wǎng)頁,因?yàn)橹饕肟谠谖⑿?,因此變成微信小程序。這個(gè)大家比較好理解吧,就不多說了。小程序現(xiàn)在可能BUG多,功能跟不上,但是要替代這類網(wǎng)頁可能也就是2年不到的時(shí)間。

趨勢(shì)四:HTML內(nèi)的技術(shù)改進(jìn)

這個(gè)能影響到的范圍看起來很大,但其實(shí)場(chǎng)景比較有限,主要是排除掉上面說的1和3之外的空間??臻g就在于這兩大技術(shù)目前都沒有成熟的最佳實(shí)踐,還需要探索。

在互聯(lián)網(wǎng)時(shí)代,更多的人、場(chǎng)景、知識(shí)將需要被更加緊密地聯(lián)系在一起,而有連接的地方就會(huì)有界面,有界面的地方就會(huì)有前端。每一門學(xué)科與技術(shù)都是在不斷摸索和總結(jié)中前行,前端技術(shù)也不例外。未來我們有理由相信在前端技術(shù)日趨成熟的前提下,新的突破和變革將會(huì)給我們的工作與生活帶來更多驚喜。

趨勢(shì)五:虛擬現(xiàn)實(shí)

如果要討論web前端技術(shù)趨勢(shì)怎能不提到虛擬現(xiàn)實(shí)技術(shù)VR呢,2019年將繼續(xù)是VR成為主流的一年,這也就意味著web開發(fā)者將通過VR來吸引用戶,我們已經(jīng)看到一些公司比如Mozilla和Google投資開發(fā)VR與Web之間的API。越來越多的VR應(yīng)用程序?qū)⑾嗬^問世,所以如果看到越來越多的虛擬現(xiàn)實(shí)元素出現(xiàn)在 Web上,也別覺得奇怪。

前端開發(fā)必學(xué)的技術(shù)有哪些?

這里給大家整理了一份系統(tǒng)全面的前端學(xué)習(xí)路線,主要掌握以下技術(shù):

第一階段:專業(yè)核心基礎(chǔ)

階段目標(biāo):

1. 熟練掌握HTML5、CSS3、Less、Sass、響應(yīng)書布局、移動(dòng)端開發(fā)。

2. 熟練運(yùn)用HTML+CSS特性完成頁面布局。

4. 熟練應(yīng)用CSS3技術(shù),動(dòng)畫、彈性盒模型設(shè)計(jì)。

5. 熟練完成移動(dòng)端頁面的設(shè)計(jì)。

6. 熟練運(yùn)用所學(xué)知識(shí)仿制任意Web網(wǎng)站。

7. 能綜合運(yùn)用所學(xué)知識(shí)完成網(wǎng)頁設(shè)計(jì)實(shí)戰(zhàn)。

知識(shí)點(diǎn):

1、Web前端開發(fā)環(huán)境,HTML常用標(biāo)簽,表單元素,Table布局,CSS樣式表,DIV+CSS布局。熟練運(yùn)用HTML和CSS樣式屬性完成頁面的布局和美化,能夠仿制任意網(wǎng)站的前端頁面實(shí)現(xiàn)。

2、CSS3選擇器、偽類、過渡、變換、動(dòng)畫、字體圖標(biāo)、彈性盒模型、響應(yīng)式布局、移動(dòng)端。熟練運(yùn)用CSS3來開發(fā)網(wǎng)頁、熟練開發(fā)移動(dòng)端,整理網(wǎng)頁開發(fā)技巧。

3、預(yù)編譯css技術(shù):less、sass基礎(chǔ)知識(shí)、以及插件的運(yùn)用、BootStrap源碼分析。能夠熟練使用 less、sass完成項(xiàng)目開發(fā),深入了解BootStrap。

4、使用HTML、CSS、LESS、SASS等技術(shù)完成網(wǎng)頁項(xiàng)目實(shí)戰(zhàn)。通過項(xiàng)目掌握第一階段html、css的內(nèi)容、完成PC端頁面設(shè)計(jì)和移動(dòng)端頁面設(shè)計(jì)。

第二階段:Web后臺(tái)技術(shù)

階段目標(biāo):

1. 了解JavaScript的發(fā)展歷史、掌握Node環(huán)境搭建及npm使用。

2. 熟練掌握J(rèn)avaScript的基本數(shù)據(jù)類型和變量的概念。

3. 熟練掌握J(rèn)avaScript中的運(yùn)算符使用。

4. 深入理解分之結(jié)構(gòu)語句和循環(huán)語句。

5. 熟練使用數(shù)組來完成各種練習(xí)。

6.熟悉es6的語法、熟練掌握J(rèn)avaScript面向?qū)ο缶幊獭?/p>

7.DOM和BOM實(shí)戰(zhàn)練習(xí)和H5新特性和協(xié)議的學(xué)習(xí)。

知識(shí)點(diǎn):

1、軟件開發(fā)流程、算法、變量、數(shù)據(jù)類型、分之語句、循環(huán)語句、數(shù)組和函數(shù)。熟練運(yùn)用JavaScript的知識(shí)完成各種練習(xí)。

2、JavaScript面向?qū)ο蠡A(chǔ)、異常處理機(jī)制、常見對(duì)象api,js的兼容性、ES6新特性。熟練掌握J(rèn)avaScript面向?qū)ο蟮拈_發(fā)以及掌握es6中的重要內(nèi)容。

3、BOM操作和DOM操作。熟練使用BOM的各種對(duì)象、熟練操作DOM的對(duì)象。

4、h5相關(guān)api、canvas、ajax、數(shù)據(jù)模擬、touch事件、mockjs。熟練使用所學(xué)知識(shí)來完成網(wǎng)站項(xiàng)目開發(fā)。

第三階段:數(shù)據(jù)庫和框架實(shí)戰(zhàn)

階段目標(biāo):

1. 綜合運(yùn)用Web前端技術(shù)進(jìn)行頁面布局與美化。

2. 綜合運(yùn)用Web前端開發(fā)框架進(jìn)行Web系統(tǒng)開發(fā)。

3. 熟練掌握Mysql、Mongodb數(shù)據(jù)庫的發(fā)開。

4. 熟練掌握vue.js、webpack、elementui等前端框技術(shù)。

5. 熟練運(yùn)用Node.js開發(fā)后臺(tái)應(yīng)用程序。

6. 對(duì)Restful,Ajax,JSON,開發(fā)過程有深入的理解,掌握git的基本技能。

知識(shí)點(diǎn):

1、數(shù)據(jù)庫知識(shí),范式,MySQL配置,命令,建庫建表,數(shù)據(jù)的增刪改查,mongodb數(shù)據(jù)庫。深入理解數(shù)據(jù)庫管理系統(tǒng)通用知識(shí)及MySQL數(shù)據(jù)庫的使用與管理,為Node.js后臺(tái)開發(fā)打下堅(jiān)實(shí)基礎(chǔ)。

2、模塊系統(tǒng),函數(shù),路由,全局對(duì)象,文件系統(tǒng),請(qǐng)求處理,Web模塊,Express框架,MySQL數(shù)據(jù)庫處理,RestfulAPI,文件上傳等。熟練運(yùn)用Node.js運(yùn)行環(huán)境和后臺(tái)開發(fā)框架完成Web系統(tǒng)的后臺(tái)開發(fā)。

3、vue的組件、生命周期、路由、組件、前端工程化、webpack、elementui框架。Vue.js框架的基本使用有清晰的理解,能夠運(yùn)用Vue.js完成基礎(chǔ)前端開發(fā)、熟練運(yùn)用Vue.js框架的高級(jí)功能完成Web前端開發(fā)和組件開發(fā),對(duì)MVVM模式有深刻理解。

4、需求分析,數(shù)據(jù)庫設(shè)計(jì),后臺(tái)開發(fā),使用vue、node完成pc和移動(dòng)端整站開發(fā)。于Node.js+Vue.js+Webpack+Mysql+Mongodb+Git,實(shí)現(xiàn)整站項(xiàng)目完整功能并上線發(fā)布。

第四階段:移動(dòng)端和微信實(shí)戰(zhàn)

階段目標(biāo):

1.熟練掌握React.js框架,熟練使用React.js完成開發(fā)。

2.掌握移動(dòng)端開發(fā)原理,理解原生開發(fā)和混合開發(fā)。

3.熟練使用react-native和Flutter框架完成移動(dòng)端開發(fā)。

4.掌握微信小程序以及了解支付寶小程序的開發(fā)。

5.完成大型電商項(xiàng)目開發(fā)。

知識(shí)點(diǎn):

1、React面向組件編程、表單數(shù)據(jù)、組件通信、監(jiān)聽、聲明周期、路由、Redux基本概念。練使用react完成項(xiàng)目開發(fā)、掌握Redux中的異步解決方案Saga。

2、react-native、開發(fā)工具、視圖與渲染、api操作、Flutter環(huán)境搭建、路由、ListView組件、網(wǎng)絡(luò)請(qǐng)求、打包。練掌握react-native和Flutter框架,并分別使用react-native和Flutter分別能開發(fā)移動(dòng)端項(xiàng)目。

3、微信小程序基本介紹、開發(fā)工具、視圖與渲染、api操作、支付寶小程序的入門和api學(xué)習(xí)。掌握微信小程序開發(fā)了解支付寶小程序。

4、大型購物網(wǎng)站實(shí)戰(zhàn),整個(gè)項(xiàng)目前后端分離開發(fā);整個(gè)項(xiàng)目分為四部分:PC端網(wǎng)頁、移動(dòng)端APP、小程序、后臺(tái)管理。團(tuán)隊(duì)協(xié)作開發(fā),使用git進(jìn)行版本控制。目期間可以擴(kuò)展Three.js 、TypeScript。

SurfaceTexture詳解

之前講到了 flutter的Texture

SurfaceTexture 是 Surface 和 OpenGL ES (GLES) 紋理的組合。SurfaceTexture 用于提供輸出到 GLES 紋理的 Surface

SurfaceTexture 包含一個(gè) BufferQueue。當(dāng)生產(chǎn)方將新的緩沖區(qū)排入隊(duì)列時(shí),onFrameAvailable() 回調(diào)會(huì)通知應(yīng)用。然后,應(yīng)用調(diào)用 updateTexImage(),這會(huì)釋放先前占有的緩沖區(qū),從隊(duì)列中獲取新緩沖區(qū)并執(zhí)行 EGL 調(diào)用,從而使 GLES 可將此緩沖區(qū)作為外部紋理使用。

關(guān)鍵方法:

SurfaceTexture(int texName, boolean singleBufferMode)構(gòu)造方法

setOnFrameAvailableListener 設(shè)置回調(diào),當(dāng)生產(chǎn)者準(zhǔn)備好新的幀后會(huì)調(diào)用Listener

updateTexImage 更新texture到指定的GLESContext

detachFromGLContext

attachToGLContext

解綁/綁定 當(dāng)前GLContext

getTransformMatrix 設(shè)置重采樣紋理矩陣,當(dāng)渲染的時(shí)候會(huì)用到這個(gè)數(shù)據(jù)

release() 完全釋放 SufaceTexture的 buffers并且吧Surface狀態(tài)置為abandoned

android-8.0.0_r1 源碼解析:

GLConsumer參數(shù)解釋:

bq是BufferQueue創(chuàng)建BufferConsumer

tex 表示要將圖像流傳輸?shù)降腛penGL ES紋理名稱。

texTarget指定了哪個(gè)紋理將被綁定

useFenceSync表示是否需要同步訪問緩沖區(qū)

可以從一個(gè)OpenGL ES上下文中分離GLConsumer,然后分別使用detachFromContext和attachToContext方法將GLConsumer附加到另一個(gè)上下文。

如果設(shè)置tex參數(shù)則會(huì)通過attachToContext將GLConsumer附加到OpenGL ES context中。

第一次調(diào)用updateTexImage才會(huì)綁定,之后所有對(duì)updateTexImage的調(diào)用必須使用相同的當(dāng)前OpenGL ES context進(jìn)行

acquireBufferLocked創(chuàng)建EglImage并設(shè)置到EglSlots中

updateAndReleaseLocked 更新 EglImage

createIfNeeded 如果EGLDisplay改變或者crop改變則會(huì)創(chuàng)建EglImage

bindToTextureTarget 將調(diào)用glEGLImageTargetTexture2DOES去綁定image到指定的目標(biāo)紋理

這里創(chuàng)建EGLImageKHR,EGLImageKHR用于共享EGL資源

EGL的ShareContext是常見的共享上下文的方式(iOS平臺(tái)的EAGL叫ShareGroup)。

當(dāng)share_context參數(shù)傳入另一個(gè)EGL的context時(shí),這兩個(gè)EGLContext就可以共享紋理以及VBO等。

需要注意的是container objects不能被共享,比如:

Framebuffer objects

Vertex array objects

Transform feedback objects

Program pipeline objects

參考:

EGLImageKHR:

Android 圖形系統(tǒng)(Graphics)

本文將從三個(gè)方面介紹Android 圖形系統(tǒng)。

圖形系統(tǒng)提供繪圖和圖形處理支持。

Android 框架提供了各種用于 2D 和 3D 圖形渲染的 API、圖片解碼庫,以及各種Driver支持。

? 繪圖API:2D引擎 Skia,3D引擎 OpenGL ES,RenderScript,OpenCV和Vulkan。

? 圖片解碼庫:jpg,png,gif等。

應(yīng)用開發(fā)者可通過三種方式將圖像繪制到屏幕:

? Canvas : 2D圖形API,Android View樹實(shí)際的繪制者。

? OpenGL ES : 嵌入式設(shè)備的OpenGL 三維圖形API子集。

? Vulkan :跨平臺(tái)的2D和3D繪圖引擎,Android 7.0后支持,NDK。

整個(gè)圖形系統(tǒng)架構(gòu)是一個(gè)生產(chǎn)者和消費(fèi)者模式,五層依次介紹:

2D繪制:Canvas api / view 的子類 (button ,list)/自定義view

3D繪制:應(yīng)用直接使用OpenGL 接口繪制圖形(PixelFlinger對(duì)應(yīng)的是openGl 1.0 ,GUP driver 對(duì)應(yīng)的是2.0和3.0)

所有情況下的繪圖都渲染到一個(gè)包含 GraphicBuffer的Surface上,當(dāng)一塊 Surface 顯示在屏幕上時(shí),就是用戶所看到的窗口。

? Canvas:畫布,2D圖形API,Android View樹實(shí)際的渲染者。

? Skia繪制:Android4.0之前默認(rèn)使用,主線程通過CPU完成繪圖指令操作,在復(fù)雜場(chǎng)景下單幀容易超過16ms導(dǎo)致卡頓。

WindowManagerService(WMS)窗口管理服務(wù),管理系統(tǒng)中所有的窗口。

? 管理window (view的容器)

? Window與surface對(duì)應(yīng),一塊顯示區(qū)域。添加一個(gè)window,就是 WMS 為其分配一塊 Surface 的過程。

Google 在Android source官網(wǎng)提示:

這里就對(duì)這些控件進(jìn)行簡(jiǎn)單介紹:

Surface : Handle onto a raw buffer that is being managed by the screen compositor.

Surface 對(duì)應(yīng)一塊屏幕緩沖區(qū)。生產(chǎn)者是: SurfaceTexture、MediaRecorder 等,消費(fèi)者是: OpenGL、MediaPlayer 或 CameraDevice等。每個(gè)window對(duì)應(yīng)一個(gè)Surface。Canvas或OpenGL ES等最終都渲染到Surface上。

? Flutter在Android平臺(tái)上也是直接渲染到Surface。例如:一個(gè)Activity/Dialog都是一個(gè)Surface,它承載了上層的圖形數(shù)據(jù),與SurfaceFlinger側(cè)的Layer相對(duì)應(yīng)。

Canvas(畫布)實(shí)現(xiàn)由 Skia 圖形庫提供。為了確保兩個(gè)客戶端不會(huì)同時(shí)更新某個(gè)緩沖區(qū),使用以下命令處理畫布鎖:

使用雙緩沖機(jī)制,有自己的 surface,View只是一個(gè)透明的占位符,Surface可以在后臺(tái)線程中繪制。雙緩沖機(jī)制提高渲染效率,獨(dú)立線程

繪制,提升流暢性。適合一些場(chǎng)景:需要界面迅速更新、UI繪制時(shí)間長(zhǎng)、對(duì)幀率要求較高的情況。

提供訪問和控制Surface 相關(guān)的方法 。通過SurfaceView的getHolder()函數(shù)可以獲取SurfaceHolder對(duì)象,Surface 就在SurfaceHolder對(duì)象內(nèi)。

addCallback(SurfaceHolder.Callbackcallback) /Canvas lockCanvas() /unlockCanvasAndPost(Canvascanvas)

SurfaceTexture: Surface 和 OpenGL ES (GLES) 紋理(Texture)的組合。將圖像流轉(zhuǎn)為 OpenGL 外部紋理。

TextureView:持有 SurfaceTexture,將圖像處理為 OpenGL 紋理更新到 HardwareLayer。

GLSurfaceView:加入 EGL 管理,自帶 GL 上下文和 GL 渲染線程

這些View通常涉及到Android音視頻相關(guān),需要高效的渲染能力。如下面的SurfaceTexture在camera中的應(yīng)用。

簡(jiǎn)稱Buffer, 一個(gè)Buffer包含一幀圖像,Buffer由gralloc分配和回收。Buffer 屬性包含:width, height, format, usage等

BufferQueue 的引入是為了解決顯示和性能問題。

? Surface屬于APP進(jìn)程,Layer屬于系統(tǒng)進(jìn)程,如果它們之間只用一個(gè)Buffer,會(huì)存在顯示和性能問題。

? 一些Buffer用于繪制,一些Buffer用于顯示,雙方處理完之后,交換一下Buffer,提高效率。

? BufferQueue中包含多個(gè)Buffer對(duì)象。

Android圖形系統(tǒng)包含了兩對(duì)生產(chǎn)者和消費(fèi)者模型,它們都通過BufferQueue進(jìn)行連接:

1.Canvas和OpenGL ES生產(chǎn)圖形數(shù)據(jù),SurfaceFlinger消費(fèi)圖形數(shù)據(jù)。

2.SurfaceFlinger合成所有圖層的圖形數(shù)據(jù),Display顯示合成結(jié)果。

code:frameworks/native/services/surfaceflinger

? Surface表示APP進(jìn)程的一個(gè)窗口,承載了窗口的圖形數(shù)據(jù)。

? SurfaceFlinger是系統(tǒng)進(jìn)程合成所有窗口的系統(tǒng)服務(wù),負(fù)責(zé)合成所有Surface提供的圖形數(shù)據(jù),然后送顯到屏幕。

? SurfaceFlinger既是上層應(yīng)用的消費(fèi)者,又是Display的生產(chǎn)者,起到了承上啟下的作用。

數(shù)據(jù)流:

合成示意圖:

在介紹Vsync機(jī)制之前先介紹兩個(gè)重要概念:

屏幕刷新率:屏幕每秒鐘可以刷新多少次。60HZ刷新率,16.7ms刷新一次。(120HZ/8.3ms),硬件指標(biāo)。

GPU 繪制幀率:GPU 每秒能夠合成繪制多少幀。

軟件層觸發(fā) View 繪制的時(shí)機(jī)是隨機(jī)的,當(dāng)下一次屏幕刷新時(shí),屏幕從 Frame Buffer 中拿到的數(shù)據(jù)還是“幀1”的數(shù)據(jù),導(dǎo)致“丟幀”。

每隔 16ms 硬件層發(fā)出 vsync 信號(hào),應(yīng)用層接收到此信號(hào)后會(huì)觸發(fā)UI 的渲染流程,同時(shí) vsync 信號(hào)也會(huì)觸發(fā) SurfaceFlinger 讀取Buffer 中的數(shù)據(jù),進(jìn)行合成顯示到屏幕上。

總結(jié):Vsync機(jī)制將 CPU 和 GPU 的開始時(shí)間與屏幕刷新強(qiáng)行拖拽到同一起跑線

Android提供的Graphics流程相對(duì)比較復(fù)雜對(duì)其進(jìn)行具象后的流程如下兩張圖所示:

文章名稱:fluttergl,Flutterglue
網(wǎng)頁地址:http://aaarwkj.com/article12/dsispdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、域名注冊(cè)、響應(yīng)式網(wǎng)站軟件開發(fā)、營(yíng)銷型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
免费看真人性生活视频| 亚洲av成人三区国产精品| 青青操国产在线自偷自拍| 国产日本欧美一区二区三区| 91大神午夜在线观看| 成人午夜在线三级内射| 亚洲精品你懂的av在线| 欧美高清一区二区三区不卡| 91欧美一区二区在线视频| 欧美一区二区日本国产激情| 日本熟人妻中文字幕在线| 国产女主播福利在线播放| 青草成人在线视频观看| 顶级少妇做爰片高潮丸| 国产欧美日韩精品三级| 国产成人自拍视频网站| 一级欧美黄片在线播放| 亚洲奇米精品一区二区| 人人看男人的天堂东京| 91精品人妻一区二区| 久久产精品一区二区三区日韩 | 丰满人妻一区二区三区色| 最新日韩欧美不卡一二三区| 中文字幕日韩手机在线| 麻豆国产av巨做国产剧情| 久久精品一本久久99精品| 91免费看片在线观看| 国产精品偷伦一区二区| 欧美日韩一级一区二区| 欧美日韩国产精品高清| 91麻豆成人精品国产| 国产av无毛一区二区三区| 日本99精品视频10| 日韩电影一区二区在线观看中文字幕| 亚洲中文字幕高清无二区| 亚洲男人av天堂东京热| 亚洲视频一直看一直爽| 日韩精品一区二区三区四区蜜桃| 国产精品久久午夜伦鲁鲁| 在线高清视频无卡不码| 久久精品一区欧美成人|