像美團(tuán)外賣這樣的APP用一種開發(fā)語言,能開發(fā)得出來嗎?答案是不能。
創(chuàng)新互聯(lián)建站主要從事成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)榕江,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
美團(tuán)發(fā)展到現(xiàn)在可以說已經(jīng)是一個【巨無霸】了,里面集成了很多很多功能,除了核心的外賣,還有 旅游 、 娛樂 、購物、出行,金融等等業(yè)務(wù)線,那么這么多復(fù)雜的業(yè)務(wù)根本不可能用同一種開發(fā)語言實現(xiàn)。
那么美團(tuán)都用到哪些開發(fā)語言和技術(shù)了呢?下面就根據(jù)我的理解詳細(xì)說一下。
前端是把產(chǎn)品的核心服務(wù)交給用戶的呈現(xiàn)者,它的表述方式、展示形式以及交互邏輯都跟用戶息息相關(guān),都影響著用戶使用產(chǎn)品的體驗,也就是說直接影響產(chǎn)品的用戶留存。
前端開發(fā)主要分為三大類型:Andriod、IOS和PC(H5) ,Android開發(fā)語言是Kotlin和Java,IOS開發(fā)語言是Object-c和Swift,PC(H5)開發(fā)語言就比較雜了,有JS、CSS、HTML,還有很多第三方的前端框架,比如Angular.js、vue.js、Bootstrap、JQuery等等。
關(guān)于后端的功能,這一點可以說是眾說紛紜,主要需要考慮的是如何實現(xiàn)功能、數(shù)據(jù)的交互流程和存取、平臺的穩(wěn)定性與性能等。
那么后端都用到哪些開發(fā)語言和技術(shù)呢?
根據(jù)后端技術(shù)選型的標(biāo)準(zhǔn),后端可選的開發(fā)語言和技術(shù)是非常多的。
比如Java體系的話,可以選用SpringMVC、Spring cloud、Hibernate,Mybatis、Mysql、Redis、Memcache、zookeeper、Kafka......;
比如Python體系的話,可以選用Django、Flask、Tarnado、Web2py等,中間件都是通用的,Redis,MQ、MySQL、Kafka等都可以用在python體系中;
當(dāng)然還有PHP、C、Perl等開發(fā)語言。
綜上所述,美團(tuán)這個巨無霸公司,隨著業(yè)務(wù)線的擴(kuò)展用到的技術(shù)肯定會越來越多,而且越來越復(fù)雜,技術(shù)快速變革的時代,適者生存的競爭性也會越來越激烈。
俗話說:羅馬不是一日建成的,任何事都不可能一蹴而就,包含技術(shù)。在以后的發(fā)展中美團(tuán)也會逐步更新自己的技術(shù)和開發(fā)語言的。
至少三種語言。后端一種語言(比如Java丶Go丶Python丶PHP等),后端語言及生態(tài)比較成熟。下面重點聊前端App開發(fā)。
前臺兩種語言(Android和iOS是不同的開發(fā)環(huán)境。比如Android用Java或者Kotlin,iOS采用Object C++或Swift),稱之為Native開發(fā)。
當(dāng)然創(chuàng)業(yè)公司可以用一種前端語言寫App前端,這樣就不需要Android和蘋果分兩種語言寫,寫一次代碼可以編譯成Android和iOS的App,現(xiàn)在通行的方案有Vue之類的DOM渲染模式,以及ReactNative方案(RN)。性能上RN優(yōu)于DOM渲染但低于用Native開發(fā)的App。所以美團(tuán)這種公司,一定是Native方式寫App,但RN是初創(chuàng)項目不錯的選擇。
與RN競爭的還有一種新貴flutter,是google推出來的,但設(shè)計原理與RN不同,性能方面優(yōu)于RN,只是目前生態(tài)不夠健全,國內(nèi)有閑魚app是采用此技術(shù)。未來可能會占一席之地。
最后,其實App開發(fā)已經(jīng)是強(qiáng)努之末,我覺得主流應(yīng)該是朝PWA和小程序方向發(fā)展。
你好,開發(fā)譬如美團(tuán)這種APP,用一種語言是實現(xiàn)不了的,一個APP有安卓和蘋果兩個操作系統(tǒng),開發(fā)能在安卓iOS端應(yīng)用的APP主流的開發(fā)語言和技術(shù)是很多的,如后臺有JAVA、C++、PHP、Python等多種開發(fā)語言,前端有kotlin、HTML、css、jquery、ajax、bootstrap、angular.js、react、vue.js、node.js、swift、object-c等多種語言和框架。
一個APP的開發(fā)是需要前端技術(shù)和后臺技術(shù)共同配合完成,這樣的APP不論是功能還是性能都給用戶很好的體驗,單一開發(fā)語言畢竟技術(shù)支持有限,所以即使能開發(fā)出來,APP的用戶體驗也是不理想的。
一般APP有這幾種開發(fā)組合模式:1、原生安卓iOS開發(fā),前端:JAVA、kotlin、swift、object-c后臺:JAVA、PHP、C++等后臺技術(shù),這種模式開發(fā)周期長,成本高,性能好;2、混合APP開發(fā)即hybrid app,前端以網(wǎng)頁技術(shù)為主,穿插原生開發(fā)功能,兼具原生APP和web app的優(yōu)點,如淘寶、微信等應(yīng)用都是走的這個技術(shù);3、web app,前端純網(wǎng)頁技術(shù),后臺為主流開發(fā)語言,這種模式開發(fā)速度快,成本低,界面體驗可能弱一些。
可見開發(fā)一款A(yù)PP大多數(shù)都是多種語言配合完成,謝謝閱讀。
看完之前的評論,依然好奇為什么一個語言不能完全勝任。
前端跨平臺的方案有react native,cordova,flutter等,如果需要兼容開發(fā)小程序,h5頁面,可以采用taro來開發(fā),一套代碼,所有平臺通吃。
后端的方案有服務(wù)端運行時nodejs,大數(shù)據(jù)背景下運用而生的數(shù)據(jù)庫mobgodb,緩存解決方案redis,搜索工具elasticsearch,負(fù)載均衡ngix,基本上是需要什么就有什么
所以總結(jié)下來,一句話,一種語言可以實現(xiàn)類似美團(tuán)這樣的app和小程序。為什么美團(tuán)使用的語言那么多,一大原因估計是美團(tuán)app開發(fā)的早,當(dāng)時前端技術(shù)不成熟,工具沒現(xiàn)在這么多。
使用混合開發(fā)與C++ 進(jìn)行跨平臺開發(fā),有好有壞。
C++ 進(jìn)行跨平臺開發(fā)
編寫一次,隨處運行。早在 2013 年,Dropbox 就采用上述策略進(jìn)行移動開發(fā),這背后的想法很簡單:用 C++ 編寫一次代碼,而不是用 Java 和 Objective-C 編寫兩次。那時,整個移動工程團(tuán)隊相對還比較小,但需要支持快速增長的移動路線圖。因此,公司希望找到一種方法,使這個小團(tuán)隊可以快速交付大量 Android 和 iOS 代碼。
如今,Dropbox 完全放棄了這個策略,轉(zhuǎn)而使用各個平臺的原生語言(主要是 Swift 和 Kotlin ,這兩種語言在剛開始制定移動策略時還不存在)。
Hybrid App混合開發(fā)
Hybrid App主要以JS+Native兩者相互調(diào)用為主,從開發(fā)層面實現(xiàn)“一次開發(fā),多處運行”的機(jī)制,成為真正適合跨平臺的開發(fā)。Hybrid App兼具了Native App良好用戶體驗的優(yōu)勢,也兼具了Web App使用HTML5跨平臺開發(fā)低成本的優(yōu)勢。
目前已經(jīng)有眾多Hybrid App開發(fā)成功應(yīng)用,比如美團(tuán)、愛奇藝、支付寶等知名移動應(yīng)用,都是采用Hybrid App開發(fā)模式。
移動應(yīng)用開發(fā)的方式,目前主要有三種:
幾種模似都可以開發(fā)出應(yīng)用,小應(yīng)用無所謂,但是大流量應(yīng)用,對圖形要求高的如 游戲 等原生開發(fā)的效果還是最好
支付寶打開很慢,就是因為采用混合開發(fā),使用人多了不如原生開發(fā)
不行的哦。任何你看到的應(yīng)用和網(wǎng)頁,都需要多個語言開發(fā)的,大的分比如前端和后端,用的語言都是不一樣的
手機(jī)APP制作流程:無需技術(shù),教你制作一個自己的手機(jī)APP
一款手機(jī)APP的制作,說復(fù)雜非常復(fù)雜,涉及到多個領(lǐng)域的研發(fā),稍復(fù)雜一點的個人研發(fā)基本上搞不定,但是,也有非常簡單的手機(jī)APP一站式制作運營方法。
隨著移動互聯(lián)網(wǎng)基層開開發(fā)技術(shù)的發(fā)展,無需編程技術(shù),也可以在應(yīng)用公園制作手機(jī)。這里就以應(yīng)用公園為例,教您熟悉手機(jī)APP制作流程,手把手教你制作一款自己心儀的手機(jī)APP。
第一步:了解自己想要制作一款怎么的手機(jī)APP。是軟硬件結(jié)合? 游戲 類?商城類?新聞資訊類?互動類?聊天類?還是團(tuán)購類、同城服務(wù)類?送餐類?企業(yè)展示類?
每一個類別的APP開發(fā)差異非常大,主要就是不同類型所需要的功能支持。對自己想要做的APP有個大致的了解,但是這一步很多人都沒搞清楚,大部分人都存在一個大概模糊的創(chuàng)意、想法階段。
第二步:了解自己想要做的APP的基礎(chǔ)功能,劃分板塊。
對基礎(chǔ)功能的了解、板塊的分類,上手最快的方法就是:查看市場上類似的APP進(jìn)行借鑒。
第三步:界面及交互的設(shè)計
界面及交互的設(shè)計,可以直接使用“墨刀”??梢韵仍O(shè)計一個大概,后期不斷豐富。
第四步:APP功能的開發(fā)制作
APP功能的開發(fā)直接使用應(yīng)用公園就可以了。應(yīng)用公園把市場上常見的APP功能進(jìn)行拆分組合,你不需要懂任何編程技術(shù),只需喲安把需要的功能挑選出,組合搭配一個,就能迅速組建出一個手機(jī)APP。
手機(jī)APP制作具體流程:
1、打開應(yīng)用公園的官網(wǎng),點擊“開始制作”,注冊登錄;
2、應(yīng)用公園為在線APP制作平臺,所以不需要下載任何東西,直接進(jìn)入制作頁面就可以;
3、應(yīng)用公園目前有兩種模式:
(1)主題模式:應(yīng)用公園平臺上,已經(jīng)很多已經(jīng)制作完善的手機(jī)APP軟件,可以直接當(dāng)做模板使用,僅需要把里面的文字圖片進(jìn)行替換,就可以快速制作一款A(yù)PP。
(2)自由模式:就像拼圖一樣,把需要的功能自由組合搭配一下,就可以創(chuàng)造一款獨一無二的手機(jī)APP。
每一個功能控件的具體功能,都通過后臺自動配置。
4、手機(jī)APP打包
制作完善后,在應(yīng)用公園平臺直接點擊制作完成,就會自動打包成手機(jī)安裝程序。
5、應(yīng)用發(fā)布上架
在應(yīng)用公園平臺直接申請應(yīng)用發(fā)布,通過聯(lián)網(wǎng)后,就可以聯(lián)網(wǎng)使用了。
6、下載管理、運營
應(yīng)用公園提供運營管理后臺、下載站點、下載二維碼、手機(jī)管理助手等APP相關(guān)產(chǎn)品,一站式服務(wù),自動配置,免去多次開發(fā)成本,而且后期的功能、內(nèi)容的更新迭代自己既可以搞定,也不需要具體的編程技術(shù)。
自己制作app需要 編程知識 。但依靠第三方工具,三分鐘就可以做成專屬自己的APP。下面以簡易網(wǎng)為例演示:
簡網(wǎng)APP工廠三大特點
1、最低的成本:節(jié)省所有開發(fā)成本,以及僅幾分鐘的時間成本。
2、實用的功能:貼近傳統(tǒng)網(wǎng)站的內(nèi)容編輯與發(fā)布方式。
3、靈活的運營:生成APP后,一個人也可以完美運營。
先來了解一下APP工廠:三分鐘制作APP
使用簡網(wǎng)APP工廠之前,我曾經(jīng)通過其他類似的APP公司制作過兩三個不同版本的免費APP,簡網(wǎng)的操作流程是制作門檻最低的一家。
不支持用戶名注冊,需要使用微博賬號
新浪與騰訊微博用戶數(shù)幾乎覆蓋全網(wǎng)網(wǎng)民數(shù),我們默認(rèn)用戶已經(jīng)擁有微博賬號,以便于進(jìn)行APP快速創(chuàng)建。
填寫APP信息:幾分鐘搞定
制作APP之前我們需要做一些準(zhǔn)備工作,比如我們要明確我們要做一個怎樣的APP,我們要為這個APP準(zhǔn)備一張1024x1024的ICON以及一張114x114的小圖標(biāo),另外還需要一張640x1136的開機(jī)圖。
從簡網(wǎng)APP工廠的首頁,經(jīng)過3次跳轉(zhuǎn),省略了網(wǎng)站注冊過程,通過模板挑選完成APP美工定案,所需的是APP的圖標(biāo)與應(yīng)用簡介。全過程幾分鐘足矣。
快捷實用的后臺采編系統(tǒng)
我們制作了一個新聞資訊類的APP軟件,同時我們擁有了一個功能齊全的后臺更新系統(tǒng)。利用后臺可以完全解決APP內(nèi)容更新問題,可以快速進(jìn)行新聞發(fā)布,包括文字、圖片、視頻、微博等形式,并且引入了完善的評論系統(tǒng)與社區(qū)系統(tǒng)。
筆者至今使用過三家大型網(wǎng)站的后臺系統(tǒng),由于種種 歷史 原因,這些后臺系統(tǒng)都存在或多或少的不合理設(shè)計,也許是因為承載的功能過多,數(shù)據(jù)架構(gòu)過于復(fù)雜,在新入職人員上手操作時,需要經(jīng)過長時間的熟悉過程。
簡網(wǎng)為我們制作的APP提供了統(tǒng)一的后臺模板,這個后臺的功能亮點在于不僅提供原始錄入,還提供也許是目前設(shè)計最為合理的網(wǎng)絡(luò)來源抓取功能。包括網(wǎng)頁、微博在內(nèi)的網(wǎng)絡(luò)內(nèi)容,都可以在大約1分鐘時間內(nèi)導(dǎo)入后臺中,并且實時呈現(xiàn)在用戶手機(jī)上的APP客戶端。
APP的生成時間約為三分鐘,APP容量只有3M,一般的寬帶都可以在1分鐘之內(nèi)下載好裝進(jìn)手機(jī)
我們得到了一個可安裝的APP軟件
同時獲得了一個功能完善的編輯后臺
快速的內(nèi)容抓取,讓后臺采編人員的數(shù)量可以降到最低,維持一個日更新量在100篇文章左右的APP客戶端,一個工作人員足矣。
內(nèi)容采編神器:發(fā)布到應(yīng)用
“發(fā)布到應(yīng)用”這個功能可以說是管理后臺提供的最強(qiáng)大的一個功能,經(jīng)過簡單的設(shè)置后,我們可以在幾秒鐘之內(nèi)把網(wǎng)絡(luò)內(nèi)容發(fā)布到我們的APP客戶端。
這樣一個媒體類APP就做好了。
很高興回答這個問題。
我是從事安卓App開發(fā)的,開發(fā)過很多App,那么App是如何制作的。
頁面設(shè)計
我們看到的app都一個個頁面,每個頁面功能不同。首先是產(chǎn)品經(jīng)理通過調(diào)研整理需求,然后將需求整理成頁面(可以使用墨刀等網(wǎng)頁制作),然后在交給UI人員進(jìn)行專業(yè)設(shè)計和美化,最后將設(shè)計圖打包給開發(fā)人員。
開發(fā)設(shè)計
拿安卓舉例,開發(fā)使用語言也分幾種,具體得根據(jù)實際情況來選擇。
1.原生開發(fā)
安卓一般使用java語言開發(fā),當(dāng)然現(xiàn)在也有kotlin語言進(jìn)行開發(fā)。如何開發(fā)就涉及到具體編程了,這里就不詳說了。簡單描述就是使用安卓提供的一系列控件來實現(xiàn)頁面,復(fù)雜點的頁面可以通過自定義控件來實現(xiàn)。
2.使用H5語言開發(fā)
使用H5開發(fā)的好處有很多,可以多端復(fù)用,比如瀏覽器端,ios端,當(dāng)然H5開發(fā)的體驗是沒有原生好的。結(jié)合我做過的項目來說,一般是這個頁面需要分享出去的話,就用H5開發(fā)。
3.使用flutter開發(fā)
flutter是近年來谷歌推出的一款UI框架,
使用dart語言進(jìn)行開發(fā),支持跨平臺,weight渲染直接操作硬件層,體驗可媲美原生。但是flutter技術(shù)比較新,生態(tài)還不完善,開發(fā)起來效率相對偏低
頁面數(shù)據(jù)填充
頁面開發(fā)出來只是空殼子,沒有數(shù)據(jù)填充,這時候就需要通過接口獲取數(shù)據(jù),然后解析數(shù)據(jù),顯示在頁面上。
到此,一個大概的App制作流程就結(jié)束了。
首先你要清楚自己想要什么樣的APP,是做哪一方便的?簡單的?還是復(fù)雜的
一下我就分為兩類進(jìn)行回答
一,簡單APP
必要崗位
ui設(shè)計師(至少一個)
主要負(fù)責(zé)APP頁面的搭建和交互的梳理
客戶端開發(fā)人員(至少一個)
目前市面上的APP開發(fā)方式多為混合開發(fā),如果做一個簡單的APP可以選擇webapp,這樣不但可以減少開發(fā)周期還可以控制開發(fā)成本
服務(wù)端開發(fā)(至少一個)
目前服務(wù)器語言很多php,java,
node.js
非必要崗位
首先 ,我說的非必要崗位不是說這些崗位不重要,而是說在為了減少成本的情況下,這樣崗位可以被別的崗位所替代
產(chǎn)品經(jīng)理
如果開發(fā)的App功能簡單,UI設(shè)計師就可以擔(dān)任這樣職責(zé)
測試工程師
當(dāng)然,在時間允許的情況下,開發(fā)人員也可以是測試人員
二,復(fù)雜APP
復(fù)雜app可以考慮純原生開發(fā),那么客戶端至少兩個人進(jìn)行開發(fā)(安卓,IOS),或者考慮混合開發(fā),及web前端+原生開發(fā)人員
必要崗位
ui設(shè)計師,安卓開發(fā)工程師,ios開發(fā)工程師,后端開發(fā)工程師,產(chǎn)品經(jīng)理,測試工程師,人員的多少可以根據(jù)項目的大小來定
三,必要成本
服務(wù)器 :這是開發(fā)app必須要的,也就是我們放代碼的地方
上架審核所需費用 :比如IOS上架審核的花好幾百,安卓要申請軟著等
今年六月的時候,萌生了開發(fā)一個記賬 App 的想法,想去用自己的 App 記賬,管理收支。那時正好在英國是考試周,放假后,我回到了國內(nèi),準(zhǔn)備去實現(xiàn)我的計劃。沒想到這暑假很快就結(jié)束了,在這個暑假中經(jīng)歷的太多的事,準(zhǔn)備了要去美國讀研的考試,遇到了生命中的另一半,同時,也將 Costuary for iPhone 帶到了這個世界。
Logo
說道為什么要開發(fā)這樣一個 App ,因為筆者在 UK 讀書,市面上很少有記賬 App 能夠?qū)崿F(xiàn)實時匯率的換算,帶有這個功能的 App 也是操作繁雜。所以要自己開發(fā)一個,功能并沒有那么復(fù)雜的,并且能夠滿足自己在國外和國內(nèi)生活需求的 App,所以自己編寫了 iPhone 的客戶端,為了獲取匯率和 Excel 導(dǎo)出,又用 Java 設(shè)計和編寫了 Costuary 的后端服務(wù)器。
比起今年年初開發(fā)的 Flat Weather,這個項目的代碼量大約是他的十倍,需要實現(xiàn)眾多的功能和模塊。
這篇文章將會介紹一下 Costuary 的功能與我開發(fā)過程中的一些心得。
效果圖設(shè)計
說到設(shè)計,兩年前,我還是一個 Android 開發(fā)者,Google 的 Material Design 是我的最愛,所以,Costuary 采用了 Android 5.0 之后采用的 Material Design 設(shè)計。其中摻雜了一些我自己的設(shè)計,因為 Material Design 的控件有時候操作繁瑣。
早在 5 月份的時候已經(jīng)零零總總的用 Sketch 畫出了這個產(chǎn)品的 UI 和圖標(biāo),之后開始了漫長開發(fā)的過程。
Sketch交互
與去年開發(fā)的 Android 版不同,iPhone 版的 Costuary 采用了底部導(dǎo)航欄的設(shè)計,相比于 Android 通常使用的 Navigation Drawer 的抽屜布局,底部導(dǎo)航欄的設(shè)計即使在右手操作 iPhone 的時候都不會太費力。
UX功能 Features
Costuary 支持世界上主要貨幣的實時匯率轉(zhuǎn)換,所有外匯在統(tǒng)計時會轉(zhuǎn)換成主貨幣的數(shù)目,方便查看花銷。
日歷視圖能夠很直觀的反映出哪一天有消費和收入。
說到記賬軟件,量化消費的圖表無疑是重要的一環(huán),Costuary 提供了餅狀圖來視覺化一段時間的花銷。
可以建立多個賬戶來表示自己的銀行卡,支付寶,現(xiàn)金等等。
可以看出本月的預(yù)算還有多少。
如果想要進(jìn)行更加詳細(xì)的分析,可以使用導(dǎo)出功能將賬本導(dǎo)出到 Excel。
允許備份賬本內(nèi)容到 iCloud。
開發(fā)
去把一紙設(shè)計變成真正的產(chǎn)品,這是一個獨立開發(fā)者應(yīng)該具有的能力。只會寫代碼不只是我唯一掌握的,能夠去設(shè)計出來自己想要的應(yīng)用并且將他實現(xiàn)才是我在做的事情。
這款應(yīng)用的開發(fā)并沒有想象中的簡單,需要自己去實現(xiàn)大量 Android UI 控件,很多圓角,陰影,字體,要慢慢的去調(diào)整,讓控件適合 iPhone 的屏幕。整個應(yīng)用的背后有 3 個關(guān)系型數(shù)據(jù)庫來儲存賬戶,賬本與各種匯率。與以前開發(fā)的 Flat Weather 不同,Costuary 會產(chǎn)生大量的用戶數(shù)據(jù),所以整個軟件架構(gòu)的穩(wěn)定性變得異常重要,需要設(shè)計一些機(jī)制來防止數(shù)據(jù)丟失與損壞。
Development
為了實現(xiàn) App 獲取每日的匯率,并且在 iPhone 上能夠?qū)崿F(xiàn)賬本導(dǎo)出到 Excel ,我設(shè)計了一個服務(wù)器后端來處理這些繁雜的實物。每次 App 啟動后會與我的服務(wù)器來更新最新的匯率。當(dāng)用戶選擇導(dǎo)出時,賬本會被發(fā)送到服務(wù)器上并處理為 Excel 發(fā)送到用戶的郵箱里。
說到服務(wù)器,就不得不提到用戶隱私了,因為導(dǎo)出到 Excel 功能需要將賬本傳到我的服務(wù)器上做進(jìn)一步處理,很多人會覺得我侵犯了他的個人隱私。對此,為了保護(hù)我的權(quán)益與用戶的權(quán)益,我撰寫了 Costuary 軟件許可及服務(wù)協(xié)議與 Costuary 隱私政策,這是我作為獨立開發(fā)者這么多年后第一次去寫許可協(xié)議。
Agreement資費
與我的其他產(chǎn)品一樣,這款 App 依舊是免費供大家使用的,作為獨立開發(fā)者,我們都知道,絕大多數(shù)用戶不會去珍惜一個免費的產(chǎn)品。就像 Flat Weather 一樣,雖然獲得了很多人的支持,但是也收到了很多人的吐槽。在 Costuary 中依然設(shè)計了一個的捐助按鈕,如果大家使用之后喜歡這個應(yīng)用,請支持我將他維護(hù)下去。
Please donate me尾巴
Costuary for iPhone 是我開發(fā)出來過最大的軟件體系。我相信,能夠獨立開發(fā)出來產(chǎn)品的人懂得不只是編程。一個人要去經(jīng)歷項目的全部生命周期:規(guī)劃,設(shè)計,開發(fā),運營,維護(hù),營銷,這些是我開發(fā)這么多產(chǎn)品所學(xué)會的。
現(xiàn)在的 Costuary 只是第一個版本,還有很多 iPhone 的特性沒有來得及開發(fā),以后會跟上的,比如 iPhone X 的適配,3D Touch、Today Widget、Touch ID 等等。
以前在少數(shù)派撰稿的時候,很多讀者會來問我如何學(xué)習(xí)開發(fā),我也特地去寫過如何去學(xué)習(xí)編程,但我相信,真正想去學(xué)習(xí)的,想去為這個生態(tài)貢獻(xiàn)出自己的一份力的人,自己都會找到學(xué)習(xí)的方法。我的專業(yè)是電子電器而不是軟件工程,但是我不后悔當(dāng)年去學(xué)習(xí)編程。
最后,還是感謝在背后默默支持我的人,我會不斷地改進(jìn)與提升,如果 Costuary 真的在記賬方面給予了你便利,這是我莫大的榮幸。
如果想要了解我的更多作品可以訪問我的個人博客 MikeTech,或者在少數(shù)派中閱讀我以前寫過的文章。今年年初也在 iPhone 上寫過一個天氣 App,天氣應(yīng)用 Flat Weather 的設(shè)計歷程
對了,關(guān)于記賬有什么用,如何記賬,如何養(yǎng)成記賬的習(xí)慣。為什么每個月末都捉襟見肘,除了沒錢,很可能是對財務(wù)管理的能力不強(qiáng)。想了解這一方面的知識,不妨看一看我派的付費閱讀欄目:從零開始做好個人記賬
你好,非常感謝你的邀請。
開發(fā)一個app的話首先
第一步、需要調(diào)研,分析開發(fā)需求。
第二步、根據(jù)你的開發(fā)需求整理一個開發(fā)方案,選擇合理的架構(gòu)。
第三步、開始研發(fā)。
第四步、測試。
第五步、上線試運行。
第六步、查缺補(bǔ)漏后投入使用。
開發(fā)一個app的話。有多種選擇??梢哉乙粋€第三方公司來進(jìn)行開發(fā)。也可以自己招聘開發(fā)團(tuán)隊。也可以交給比較信任的程序員朋友來進(jìn)行開發(fā)。第三種方式的話,屬于接私活兒,成本較低。 當(dāng)然前提你得有認(rèn)識的人。
我也是程序員出身。參與過web網(wǎng)站開發(fā)。傳統(tǒng)辦公開發(fā)。H5開發(fā)。微信小程序開發(fā)。以及安卓開發(fā)。有著較豐富的開發(fā)經(jīng)驗。自己完全可以勝任一個App,如果你有這方面的事需求的話,也可以私信我。我是山東的。如果方便的話也可以面談。
App軟件開發(fā),從之前的溝通需求、規(guī)劃設(shè)計、程序開發(fā)、測試修改、它的發(fā)布等。這是一個非常復(fù)雜和漫長的過程,一旦進(jìn)入通信,就需要定期維護(hù)和功能變更。它需要大量的專業(yè)人員參與,成本自然很高。 所以,隨著更新市場的發(fā)展和人們福利的提高,現(xiàn)在已經(jīng)不像傳統(tǒng)開發(fā)那么困難了。只需要動動鼠標(biāo),不需要觸碰代碼就可以完成制作app部分。
App開發(fā)已成為企業(yè)發(fā)展的重要推動力量
十年巨變!移動互聯(lián)網(wǎng)已顛覆我們的時代,商業(yè)、社交、視頻、新聞、工具等領(lǐng)域,移動應(yīng)用的滲透率已高達(dá)95%,在團(tuán)購 旅游 和零售行業(yè),移動端收入規(guī)模已超過PC端,手機(jī)APP已成為企業(yè)不可或缺的線上陣地。
不用編程就能制作app的在線平臺,擺脫了很多復(fù)雜的流程,還能減少用戶的麻煩,不會制作,而且可以在平臺上查看詳細(xì)的課程,非常貼心的設(shè)置!在這里,我想說的是,如果你想制作app的話,可以在平臺上查看詳細(xì)的課程??偟膩碚f,這種方法會大大降低軟件開發(fā)app的成本,節(jié)省時間,讓很多人解決了資金短缺和想快速制作app的問題。
app是如何制作的,APP如何開發(fā)?
隨著智能手機(jī)APP軟件的吸引力越來越大,越來越多的企業(yè)開始開發(fā)自己的APP應(yīng)用。企業(yè)要想開發(fā)屬于自己企業(yè)的APP應(yīng)用,首先要分析自身的情況和市場對產(chǎn)品的需求。
在APP,開發(fā)這件事上,企業(yè)一定要注意以下幾點。
1. 開發(fā)APP應(yīng)用一定要明確以自己為中心,開發(fā)APP是否能帶來巨大的利潤。
2. 要了解目標(biāo)用戶的需求,配置APP吸引用戶,提高用戶購買應(yīng)用的意愿。
3. 通過合作再次尋找潛在客戶,我相信開發(fā)APP的收益遠(yuǎn)遠(yuǎn)大于成本。
開發(fā)APP蘋果系統(tǒng),必須使用Xcode蘋果開發(fā)工具,一般采用Objective-C或Swift語言。Objective-C是繼承了C語言的C字,可以直接用Objective-C語言進(jìn)行編程。如果你不懂?dāng)?shù)據(jù),差別很小。還有一些新的蘋果后綴語言,非常有用。
Andro系統(tǒng)的app都是用Java語言開發(fā)的,Java語言已經(jīng)流行了20多年,這個趨勢還在持續(xù)和延續(xù)。如果想要安卓系統(tǒng)的app首先要掌握J(rèn)ava語言,對于說C語言的人來說,學(xué)習(xí)Java還是很容易的。如果你對自學(xué)感興趣,Java網(wǎng)站上有很多培訓(xùn)課程,還有很多免費培訓(xùn)。視頻,不想付費。如果這個絕對是零基礎(chǔ)(沒學(xué)過其他編程語言,比如c語言),如果真的很感興趣,可以自學(xué),但是速度比較慢。
總結(jié):app開發(fā)擁有多種方法,選擇最適合自己的方式方法很重要
答案寫到這里,我想您應(yīng)該知道了app的開發(fā)途徑或者方法是什么。如果您是小企業(yè)或者是個體工商戶,您可以找人幫忙開發(fā)小程序或者自己在一些網(wǎng)站上進(jìn)行傻瓜式軟件開發(fā)。正如上文所說,現(xiàn)在有很多的網(wǎng)站支持在線生成APP,常用的功能和接口都已經(jīng)設(shè)置好了,操作起來不是很難。如果您是大企業(yè),業(yè)務(wù)多訪問量比較大,我的建議是您應(yīng)該聘請專業(yè)的軟件工程師開發(fā)專門的app,避免后期出現(xiàn)的問題沒辦法及時解決給您的企業(yè)帶來損失。
不懂的話,找專業(yè)的人幫忙,我就是專業(yè)的
app即application program。應(yīng)用程序。目前手機(jī)平臺是ios和安卓兩大平臺的天下。本人不才從事安卓開發(fā)。簡單介紹一下吧你問的這個問題范圍太廣。ios和安卓開發(fā)語言不同。ios使用的是object_c和swift。安卓是基于java。二者都屬于面向?qū)ο蟮恼Z言。開發(fā)平臺安卓基于android studio早期使用的是eclipse+adt。不過已經(jīng)被淘汰了。那么怎樣開發(fā)app?首先你需要一個后臺程序員寫服務(wù)器以及搭建數(shù)據(jù)庫。其次你的會ios或是android其中之一那么這就是最簡單的配置.現(xiàn)在流行混合開發(fā)如果你再會點前端的h5和js就更好了。一般一個軟件公司的基本配置是一個前端一個ios一個安卓一個后臺?;揪蜐M足你搭建網(wǎng)站和手機(jī)應(yīng)用的需求了。不過你作為老板養(yǎng)這樣一個團(tuán)隊很費錢。還不如找外包
軟件的生成需要經(jīng)歷以下幾個階段:
1、滿足用戶需求——建立軟件目標(biāo),設(shè)想產(chǎn)品功能,進(jìn)行場景化細(xì)分說明;進(jìn)行可行性分析,用戶需求收集,用戶需求場景描述;場景問題梳理;獲取用戶行為、想法;場景應(yīng)用痛點,機(jī)會點
2、需求開發(fā)與管理——建立用戶畫像,從軟件目標(biāo)出發(fā),進(jìn)行問題梳理,場景行為分析,愿景分析,建立體驗地圖
3、利用Axure繪制軟件原型,在用戶場景中切入,并組織軟件原型實施,在實施過程中進(jìn)行問卷調(diào)查,收集問題,記錄用戶行為,不斷改善軟件需求,進(jìn)行需求評審,進(jìn)入評審優(yōu)化
4、技術(shù)可行性分析——技術(shù)分析,場景分析,功能實現(xiàn)驗證,
5、開發(fā)計劃制定,實施,測試,驗證,發(fā)布
1,執(zhí)行 flutter pub publish--dry-run 檢查是否具備發(fā)布條件
遇到的問題1:
It‘s strongly recommended to include a “homepage“ or “repository“ field
解決方案:在 pubspec. yaml ?中配置 主頁 homepage 地址 :
homepage:
可參考:
2,執(zhí)行 flutter pub publish--server= 發(fā)布
如果執(zhí)行flutter pub publish發(fā)布的話會遇到以下錯誤,國內(nèi)還是用?flutter pub publish--server= 來發(fā)布
package repository requested authentication! You can provide credential using:pub token add
問題1:It looks like accounts.google.com is having some trouble. Pub will wait for a while before trying to connect again. OS Error: Operation timed out, errno = 60, address = accounts.google.com, port = 53481 pub finished with exit code 69
原因:
1、國內(nèi)墻;
2、flutter環(huán)境配置添加了國內(nèi)鏡像
解決方式:
1、翻墻;
2、屏蔽環(huán)境變量里關(guān)于flutter的國內(nèi)鏡像;
屏蔽方式如下:
# export PUB_HOSTED_URL=
# export FLUTTER_STORAGE_BASE_URL=
3、設(shè)置終端代理命令(這個是我解決的方式),這個非常重要,不然就會報上面超時錯誤了
如果出現(xiàn):Flutter pub finished with exit code 1
解決方式:flutter packages pub publish --server=
此問題原文鏈接:(畢竟要尊重版權(quán))
問題2:LICENSE這個文件中不能有TODO,也不能為空,可找個flutter庫看看別人是怎么寫的
文/陳爐軍
整理/LiveVideoStack
大家好,我是阿里巴巴閑魚事業(yè)部的陳爐軍,本次分享的主題是Flutter浪潮下的音視頻研發(fā)探索,主要內(nèi)容是針對閑魚APP在當(dāng)下流行的跨平臺框架Flutter的大規(guī)模實踐,介紹其在音視頻領(lǐng)域碰到的一些困難以及解決方案。
分享內(nèi)容主要分為四個方面,首先會對Flutter有一個簡單介紹以及選擇Flutter作為跨平臺框架的原因,其次會介紹Flutter中與音視頻關(guān)系非常大的外接紋理概念,以及對它做出的一些優(yōu)化。之后會對閑魚在音視頻實踐過程中碰到的一些Flutter問題提出了一些解決方案——TPM音視頻框架。最后是閑魚Flutter多媒體開源組件的介紹。
Flutter
Flutter是一個跨平臺框架,以往的做法是將音頻、視頻和網(wǎng)絡(luò)這些模塊都下沉到C++層或者ARM層,在其上封裝成一個音視頻的SDK,供UI層的PC、iOS和Android調(diào)用。
而Flutter做為一個UI層的跨平臺框架,顧名思義就是在UI層也實現(xiàn)了一個跨平臺開發(fā)??梢灶A(yù)想的是未Flutter發(fā)展的好的話,會逐漸變?yōu)橐粋€從底層到UI層的一個全鏈路的跨平臺開發(fā),技術(shù)人員分別負(fù)責(zé)SDK和UI層的開發(fā)。
在Flutter之前已經(jīng)有很多跨平臺UI解決方案,那為什么選擇Flutter呢?
我們主要考慮性能和跨平臺的能力。
以往的跨平臺方案比如Weex,ReactNative,Cordova等等因為架構(gòu)的原因無法滿足性能要求,尤其是在音視頻這種性能要求幾乎苛刻的場景。
而諸如Xamarin等,雖然性能可以和原生App一致,但是大部分邏輯還是需要分平臺實現(xiàn)。
我們可以看一下,為什么Flutter可以實現(xiàn)高性能:
原生的native組件渲染以IOS為例,蘋果的UIKit通過調(diào)用平臺自己的繪制框架QuaztCore來實現(xiàn)UI的繪制,圖形繪制也是調(diào)用底層的API,比如OpenGL、Metal等。
而Flutter也是和原生API邏輯一致,也是通過調(diào)用底層的繪制框架層SKIA實現(xiàn)UI層。這樣相當(dāng)于Flutter他自己實現(xiàn)了一套UI框架,提供了一種性能超越原生API的跨平臺可能性。
但是我們說一個框架最終性能怎樣,其實取決于設(shè)計者和開發(fā)者。至于現(xiàn)在到底是一個什么狀況:
在閑魚的實踐中,我們發(fā)現(xiàn)在正常的開發(fā)沒有特意的去優(yōu)化UI代碼的情況下,在一些低端機(jī)上,F(xiàn)lutter界面的流暢性是比Native界面要好的。
雖然現(xiàn)在閑魚某些場景下會有卡頓閃退等情況,但是這是一個新事物發(fā)展過程中的必然問題,我們相信未來性能肯定不會成為限制Flutter發(fā)展的瓶頸的。
在閑魚實踐Flutter的過程中,混合棧和音視頻是其中比較難解決的兩個問題,混合棧是指一個APP在Flutter過程中不可能一口氣將所有業(yè)務(wù)全部重寫為Flutter,所以這是一個逐步迭代的過程,這期間原生native界面與Flutter界面共存的狀態(tài)就稱之為混合棧。閑魚在混合棧上也有一些比較好的輸出,例如FlutterBoost。
外接紋理
在講音視頻之前需要簡要介紹一下外接紋理的概念,我們將它稱之為是Flutter和Frame之間的橋梁。
Flutter渲染一幀屏幕數(shù)據(jù)首先要做的是,GPU發(fā)出的VC信號在Flutter的UI線程,通過AOT編譯的機(jī)器碼結(jié)合當(dāng)前Dart Runtime,生成Layer Tree UI樹,Layer Tree上每一個葉子節(jié)點都代表了當(dāng)前屏幕上所需要渲染的每一個元素,包含了這些元素渲染所需要的內(nèi)容。將Layer Tree拋給GPU線程,在GPU線程內(nèi)調(diào)用Skia去完成整個UI的渲染過程。Layer Tree中有PictureLayer和TextureLayer兩個比較重要的節(jié)點。PictureLayer主要負(fù)責(zé)屏幕圖片的渲染,F(xiàn)lutter內(nèi)部實現(xiàn)了一套圖片解碼邏輯,在IO線程將圖片讀取或者從網(wǎng)絡(luò)上拉取之后,通過解碼能夠在IO線程上加載出紋理,交給GPU線程將圖片渲染到屏幕上。但是由于音視頻場景下系統(tǒng)API太過繁多,業(yè)務(wù)場景過于復(fù)雜。Flutter沒有一套邏輯去實現(xiàn)跨平臺的音視頻組件,所以說Flutter提出了一種讓第三方開發(fā)者來實現(xiàn)音視頻組件的方式,而這些音視頻組件的視頻渲染出口,就是TextureLayer。
在整個Layer Tree渲染的過程中,TextureLayer的數(shù)據(jù)紋理需要由外部第三方開發(fā)者來指定,可以把視頻數(shù)據(jù)和播放器數(shù)據(jù)送到TextureLayer里,由Flutter將這些數(shù)據(jù)渲染出來。
TextureLayer渲染過程:首先判斷Layer是否已經(jīng)初始化,如果沒有就創(chuàng)建一個Texture,然后將Texture Attach到一個SufaceTexture上。
這個SufaceTexture是音視頻的native代碼可以獲取到的對象,通過這個對象創(chuàng)建的Suface,我們可以將視頻數(shù)據(jù)、攝像頭數(shù)據(jù)解碼放到Suface中,然后Flutter端通過監(jiān)聽SufaceTexture的數(shù)據(jù)更新就可以順利把剛才創(chuàng)建的數(shù)據(jù)更新到它的紋理中,然后再將紋理交給SKIA渲染到屏幕上。
然而我們?nèi)绻枰肍lutter實現(xiàn)美顏,濾鏡,人臉貼圖等等功能,就需要將視頻數(shù)據(jù)讀取出來,更新到紋理中,再將GPU紋理經(jīng)過美顏濾鏡處理后生成一個處理后的紋理。按Flutter提供的現(xiàn)有能力,必須先將紋理中的數(shù)據(jù)從GPU讀出到CPU中,生成Bitmap后再寫入Surface中,這樣在Flutter中才能順利的更新到視頻數(shù)據(jù),這樣做對系統(tǒng)性能的消耗很大。
通過對Flutter渲染過程分析,我們知道Flutter底層需要渲染的數(shù)據(jù)就是GPU紋理,而我們經(jīng)過美顏濾鏡處理完成以后的結(jié)果也是GPU紋理,如果可以將它直接交給Flutter渲染,那就可以避免GPU-CPU-GPU這樣的無用循環(huán)。這樣的方法是可行的,但是需要一個條件,就是OpenGL上下文共享。
OpenGL
在說上下文之前,得提到一個和上線文息息相關(guān)的概念:線程。
Flutter引擎啟動后會啟動四個線程:
第一個線程是UI線程,這是Flutter自己定義的UI線程,主要負(fù)責(zé)GPU發(fā)出的VSync信號時候用當(dāng)前Dart編譯的機(jī)器碼和當(dāng)前運行環(huán)境創(chuàng)建出Layer Tree。
還有就是IO線程和GPU線程。和大部分OpenGL處理解決方案中一樣,F(xiàn)lutter也采取一個線程責(zé)資源加載,一部分負(fù)責(zé)資源渲染這種思路。
兩個線程之間紋理共享有兩種方式。一種是EGLImage(IOS是 CVOpenGLESTextureCache)。一種是OpenGL Share Context。Flutter通過Share Context來實現(xiàn)紋理共享,將IO線程的Context和GPU線程的Context進(jìn)行Share,放到同一個Share Group下面,這樣兩個線程下資源是互相可見可以共享的。
Platform線程是主線程,F(xiàn)lutter中有一個很奇怪的設(shè)定,GPU線程和主線程共用一個Context。并且在主線程也有很多OpenGL 操作。
這樣的設(shè)計會給音視頻開發(fā)帶來很多問題,后面會詳細(xì)說。
音視頻端美顏處理完成的OpenGL紋理能夠讓Flutter直接使用的條件就是Flutter的上下文需要和平臺音視頻相關(guān)的OpenGL上下文處在一個Share Group下面。
由于Flutter主線程的Context就是GPU的Context,所以在音視頻端主線程中有一些OpenGL操作的話,很有可能使Flutter整個OpenGL被破壞掉。所以需要將所有的OpenGL操作都限制在子線程中。
通過上述這兩個條件的處理,我們就可以在沒有增加GPU消耗的前提下實現(xiàn)美顏和濾鏡等等功能。
TPM
在經(jīng)過demo驗證之后,我們將這個方案應(yīng)用到閑魚音視頻組件中,但改造過程中發(fā)現(xiàn)了一些問題。
上圖是攝像頭采集數(shù)據(jù)轉(zhuǎn)換為紋理的一段代碼,其中有兩個操作:首先是切進(jìn)程,將后面的OpenGL操作都切到cameraQueue中。然后是設(shè)置一次上下文。然后這種限制條件或者說是潛規(guī)則往往在開發(fā)過程中容易被忽略的。而這個條件一旦忽略后果就是出現(xiàn)一些莫名其妙的詭異問題極難排查。因此我們就希望能抽象出一套框架,由框架本身實現(xiàn)線程的切換、上下文和模塊生命周期等的管理,開發(fā)者接入框架以后只需要安心實現(xiàn)自己的算法,而不需要關(guān)心這些潛規(guī)則還有其他一些重復(fù)的邏輯操作。
在引入Flutter之前閑魚的音視頻架構(gòu)與大部分音視頻邏輯一樣采用分層架構(gòu):
1:底層是一些獨立模塊
2:SDK層是對底層模塊的封裝
3:最上層是UI層。
引入Flutter之后,通過分析各個模塊的使用場景,我們可以得出一個假設(shè)或者說是抽象:音視頻應(yīng)用在終端上可以歸納為視頻幀解碼之后視頻數(shù)據(jù)幀在各個模塊之間流動的過程,基于這種假設(shè)去做Flutter音視頻框架的抽象。
咸魚Flutter多媒體開源組件
整個Flutter音視頻框架抽象分為管線和數(shù)據(jù)的抽象、模塊的抽象、線程統(tǒng)一管理和上下文同一管理四部分。
管線,其實就是視頻幀流動的管道。數(shù)據(jù),音視頻中涉及到的數(shù)據(jù)包括紋理、Bit Map以及時間戳等。結(jié)合現(xiàn)有的應(yīng)用場景我們定義了管線流通數(shù)據(jù)以Texture為主數(shù)據(jù),同時可以選擇性的添加Bit Map等作為輔助數(shù)據(jù)。這樣的數(shù)據(jù)定義方式,避免重復(fù)的創(chuàng)建和銷毀紋理帶來的性能開銷以及多線程訪問紋理帶來的一些問題。也滿足一些特殊模塊對特殊數(shù)據(jù)的需求。同時也設(shè)計了紋理池來管理管線中的紋理數(shù)據(jù)。
模塊:如果把管線和數(shù)據(jù)比喻成血管和血液,那框架音視頻的場景就可以比喻成器官,我們根據(jù)模塊所在管線的位置抽象出采集、處理和輸出三個基類。這三個基類里實現(xiàn)了剛才說的線程切換,上下文切換,格式轉(zhuǎn)換等等共同邏輯,各個功能模塊通過集成自這些基類,可以避免很多重復(fù)勞動。
線程:每一個模塊初始化的時候,初始化函數(shù)就會去線程管理的模塊去獲取自己的線程,線程管理模塊可以決定給初始化函數(shù)分配新的線程或者已經(jīng)分配過其他模塊的線程。
這樣有三個好處:
一是可以根據(jù)需要去決定一個線程可以掛載多少模塊,做到線程間的負(fù)載均衡。第二,多線程并發(fā)式能夠保證模塊內(nèi)的OpenGL操作是在當(dāng)前線程內(nèi)而不會跑到主線程去,徹底避免Flutter的OpenGL 環(huán)境被破壞。第三,多線程并行可以充分利用CPU多核架構(gòu),提升處理速度。
從Flutter端修改Flutter引擎將Context取出后,根據(jù)Context創(chuàng)建上下文的統(tǒng)一管理模塊,每一個模塊在初始化的時候會獲取它的線程,獲取之后會調(diào)用上下文管理模塊獲取自己的上下文。這樣可以保證每一個模塊的上下文都是與Flutter的上下文進(jìn)行Share的,每個模塊之間資源都是共享可見的,F(xiàn)lutter和音視頻native之間也是互相共享可見的。
基于上述框架如果要實現(xiàn)一個簡單的場景,比如畫面實時預(yù)覽和濾鏡處理功能,
1:需要選擇功能模塊,功能模塊包括攝像頭模塊、濾鏡處理模塊和Flutter畫面渲染模塊,
2:需要配置模塊參數(shù),比如采集分辨率、濾鏡參數(shù)和前后攝像頭設(shè)置等,
3:在創(chuàng)建視頻管線后使用已配置的參數(shù)創(chuàng)建模塊
4:最后管線搭載模塊,開啟管線就可以實現(xiàn)這樣簡單的功能。
上圖為整個功能實現(xiàn)的代碼和結(jié)構(gòu)圖。
結(jié)合上述音視頻框架,閑魚實現(xiàn)了Flutter多媒體開源組件。
組要包含四個基本組件分別是:
1:視頻圖像拍攝組件
2:播放器組件
3:視頻圖像編輯組件
4:相冊選擇組件
現(xiàn)在這些組件正在走內(nèi)部開源流程。預(yù)計9月份,相冊和播放器會實現(xiàn)開源。
后續(xù)展望和規(guī)劃
1:實現(xiàn)開頭所說的從底層SDK到UI的全鏈路的跨端開發(fā)。目前底層框架層和模塊層都是各個平臺各自實現(xiàn),反而是Flutter的UI端進(jìn)行了跨平臺的統(tǒng)一,所以后續(xù)會將底層也按照音視頻常用做法把邏輯下沉到C++層,盡可能的實現(xiàn)全鏈路跨平臺。
2:第二部分內(nèi)容為開源共建,閑魚開源的內(nèi)容不僅包括拍攝、編輯組件,還包括了很多底層模塊,希望有開發(fā)者在基于Flutter開發(fā)音視頻應(yīng)用時可以充分利用閑魚開源出的音視頻模塊能力,搭建APP框架,開發(fā)者只要去負(fù)責(zé)實現(xiàn)特殊需求模塊就可以,盡可能的減少重復(fù)勞動。