谷歌安卓應(yīng)用開(kāi)發(fā)困境:Java轉(zhuǎn)向Kotlin、官方庫(kù)頻繁更新帶來(lái)“破壞性變更”等
6 月 10 日消息, 科技 媒體 devclass 今天(6 月 10 日)發(fā)布博文,從軟件工程師 Ashish Bhatia 視角為切入點(diǎn),一窺目前開(kāi)發(fā)安卓應(yīng)用的困境。該媒體稱(chēng) Bhatia 遇到的問(wèn)題并非個(gè)例,而是代表性問(wèn)題,是安卓應(yīng)用開(kāi)發(fā)所面臨挑戰(zhàn)的一個(gè)縮影。
IT之家簡(jiǎn)要介紹下 Bhatia,他是一位經(jīng)驗(yàn)豐富的軟件工程師,曾參與 Google 的 Android 安全項(xiàng)目,目前開(kāi)發(fā)一款名為 MusicSync 的媒體應(yīng)用。
這款應(yīng)用使用 Java 編寫(xiě),但隨著谷歌將 Kotlin 設(shè)為首選開(kāi)發(fā)語(yǔ)言,Java 開(kāi)發(fā)者面臨困境。Bhatia 指出,在 Java 中,完全無(wú)法使用谷歌官方 UI 庫(kù) Jetpack Compose,而依賴(lài)庫(kù)從 Java 遷移到 Kotlin 方面,常常需要復(fù)雜的解決方法,Kotlin 的協(xié)程和掛起函數(shù)更是帶來(lái)了兼容性問(wèn)題。
此外,安卓官方庫(kù)的更新頻繁帶來(lái)“破壞性變更”,例如媒體庫(kù) ExoPlayer 在 2024 年升級(jí)為 ExoPlayer v2,隨后又被 Jetpack Media3 取代,每次更新都可能導(dǎo)致應(yīng)用崩潰。
安卓系統(tǒng)的每次大版本更新都會(huì)引入新的“破壞性變更”,尤其是在通知、存儲(chǔ)權(quán)限和后臺(tái)代碼執(zhí)行等方面,開(kāi)發(fā)者必須不斷調(diào)整代碼以適應(yīng)新規(guī)。
Bhatia 還提到,UI 設(shè)計(jì)指南的頻繁變動(dòng)令人頭痛,Material 2 被 Material 3 取代,大部分文檔只針對(duì) Kotlin,缺乏清晰的 Java 遷移指南。
更糟糕的是,第三方庫(kù)也常被棄用或停止維護(hù),進(jìn)一步加重開(kāi)發(fā)負(fù)擔(dān)。開(kāi)發(fā)者無(wú)法僅開(kāi)發(fā)一款應(yīng)用后置之不理,必須持續(xù)投入精力更新,否則應(yīng)用可能因 minSdkVersion 過(guò)舊而被 Google Play 商店下架。
Bhatia 的觀點(diǎn)引發(fā)了廣泛共鳴。一位開(kāi)發(fā)者表示,維護(hù)應(yīng)用是“巨大的負(fù)擔(dān)”,每隔幾個(gè)月就必須更新以符合新政策,包括稅務(wù)信息、隱私政策和強(qiáng)制性 API 調(diào)整等。
另一位開(kāi)發(fā)者提到,他從 2012 年起維護(hù)一款應(yīng)用,在 Google Play 商店發(fā)布了 108 個(gè)版本,深感疲憊。
此外,谷歌對(duì)新應(yīng)用使用 App Bundles 的要求也引發(fā)爭(zhēng)議,開(kāi)發(fā)者需將根簽名密鑰交給谷歌,存在應(yīng)用被未經(jīng)授權(quán)修改的風(fēng)險(xiǎn)。盡管有“代碼透明性”功能作為緩解措施,但許多開(kāi)發(fā)者仍對(duì)此表示擔(dān)憂(yōu)。
這種開(kāi)發(fā)環(huán)境的摩擦顯著增加了 商業(yè) 應(yīng)用的主導(dǎo)地位,因?yàn)橹挥兴鼈冇凶銐虻氖杖胫伍_(kāi)發(fā)成本,免費(fèi)開(kāi)源或個(gè)人愛(ài)好者的應(yīng)用則更容易被放棄。
一位開(kāi)發(fā)者無(wú)奈表示:“開(kāi)發(fā)應(yīng)用本身很簡(jiǎn)單,但應(yīng)用商店的官僚作風(fēng)讓人完全不想繼續(xù),除非你是大公司。”
另一位開(kāi)源 SSH 文件傳輸應(yīng)用的開(kāi)發(fā)者也指出,Google 的苛刻要求和商業(yè)化導(dǎo)向迫使許多優(yōu)質(zhì)免費(fèi)應(yīng)用(如 Termux)退出平臺(tái)。
【來(lái)源:IT之家】