在軟件開發(fā)領(lǐng)域,安卓應(yīng)用開發(fā)者的困境近期再次成為熱議話題。科技媒體devclass發(fā)表的一篇文章,以軟件工程師Ashish Bhatia的經(jīng)歷為切入點(diǎn),揭示了安卓應(yīng)用開發(fā)面臨的多重挑戰(zhàn)。
Bhatia,一位曾參與谷歌Android安全項(xiàng)目的資深開發(fā)者,目前正在開發(fā)名為MusicSync的媒體應(yīng)用。他遇到的問題并非孤例,而是眾多安卓開發(fā)者普遍面臨的挑戰(zhàn)。
MusicSync應(yīng)用原本使用Java編寫,但谷歌將Kotlin設(shè)為首選開發(fā)語言后,Java開發(fā)者遭遇了前所未有的困境。Bhatia指出,Java無法使用谷歌官方的UI庫Jetpack Compose,而Java庫遷移到Kotlin的過程復(fù)雜且充滿挑戰(zhàn),Kotlin的協(xié)程和掛起函數(shù)更是帶來了兼容性問題,使得Java開發(fā)者在安卓開發(fā)中的處境愈發(fā)艱難。
安卓官方庫的頻繁更新也令開發(fā)者頭疼不已。例如,媒體庫ExoPlayer在2024年升級(jí)為ExoPlayer v2后,又被Jetpack Media3取代。這種“破壞性變更”不僅增加了開發(fā)難度,還可能導(dǎo)致應(yīng)用崩潰,給用戶體驗(yàn)帶來負(fù)面影響。
安卓系統(tǒng)的大版本更新同樣帶來了一系列新的挑戰(zhàn)。通知、存儲(chǔ)權(quán)限和后臺(tái)代碼執(zhí)行等方面的變化,要求開發(fā)者不斷調(diào)整代碼以適應(yīng)新規(guī)。這不僅增加了開發(fā)成本,還延長了開發(fā)周期。
UI設(shè)計(jì)指南的頻繁變動(dòng)也是開發(fā)者面臨的一大難題。Material 2被Material 3取代,而大部分文檔只針對(duì)Kotlin,缺乏清晰的Java遷移指南。這使得Java開發(fā)者在UI設(shè)計(jì)方面面臨諸多不便。
第三方庫的棄用或停止維護(hù)也給開發(fā)者帶來了額外的負(fù)擔(dān)。開發(fā)者必須持續(xù)投入精力更新應(yīng)用,否則可能因minSdkVersion過舊而被Google Play商店下架。這不僅影響了開發(fā)者的積極性,也限制了應(yīng)用的長期發(fā)展。
Bhatia的觀點(diǎn)引發(fā)了廣泛共鳴。一位開發(fā)者表示,維護(hù)應(yīng)用已成為“巨大的負(fù)擔(dān)”,每隔幾個(gè)月就必須更新以符合新政策,包括稅務(wù)信息、隱私政策和強(qiáng)制性API調(diào)整等。另一位開發(fā)者則從2012年起維護(hù)一款應(yīng)用,在Google Play商店發(fā)布了108個(gè)版本,深感疲憊。
谷歌對(duì)新應(yīng)用使用App Bundles的要求也引發(fā)了爭議。開發(fā)者需將根簽名密鑰交給谷歌,這增加了應(yīng)用被未經(jīng)授權(quán)修改的風(fēng)險(xiǎn)。盡管谷歌提供了“代碼透明性”功能作為緩解措施,但許多開發(fā)者仍對(duì)此表示擔(dān)憂。
在這種開發(fā)環(huán)境下,商業(yè)應(yīng)用的主導(dǎo)地位愈發(fā)顯著。因?yàn)橹挥兴鼈冇凶銐虻氖杖胫伍_發(fā)成本,免費(fèi)開源或個(gè)人愛好者的應(yīng)用則更容易被放棄。一位開發(fā)者無奈表示:“開發(fā)應(yīng)用本身很簡單,但應(yīng)用商店的官僚作風(fēng)讓人完全不想繼續(xù),除非你是大公司。”
另一位開源SSH文件傳輸應(yīng)用的開發(fā)者也指出,谷歌的苛刻要求和商業(yè)化導(dǎo)向迫使許多優(yōu)質(zhì)免費(fèi)應(yīng)用退出平臺(tái)。這不僅影響了應(yīng)用的多樣性,也損害了用戶的利益。