老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

c001apk 迭代至今:從 Flutter 到 Compose,一款無廣告酷安客戶端的成長軌跡

從原倉歸檔到 Integral-Tech 接手維護,c001apk 走過了怎樣的版本進化之路?我們一起回看這款以輕量與純淨為標語的第三方客戶端,看看它從單一 Android 端到跨三平台桌面,再到 Jetpack Compose 重寫,團隊的優先級一直在哪裡。

c001apk 是什麼、能幹嘛、適合誰

先給不熟悉這款軟體的朋友一個直白的認知:c001apk官網 是基於酷安官方客戶端做的第三方精簡版,核心功能(頭條、熱榜、話題、數碼、酷圖等頻道)一個沒少,所有廣告和推薦內容全部砍掉,介面走極簡路線,讓人能專注看社區內容而不是被雜訊打擾。它適合那種「打開酷安就是想刷動態、找應用,不想看任何廣告」的使用者——對社區有需求,但對官方版日漸膨脹的體量和侵入式推廣忍無可忍。

這款軟體最早走的是 Flutter 跨平台框架,後來 Android 端單獨用 Jetpack Compose 重寫了一版,目前 Android APK 包體積只有 5.09M,比官方版輕了不止一個量級——這也是它能被長期維護、始終有死忠粉跟的核心原因:團隊從一開始就把「輕量、純淨」當作了不可動搖的底線。

安裝

c001apk下載 提供 Android APK 安裝包(包名 com.example.c001apk,與官方版 com.coolapk.market 完全隔離,兩者資料不互通),還有 Linux、Windows、macOS 三個桌面端的構建產物。Android 安裝流程不複雜,但有兩點要特別注意:

一是 包名衝突與資料隔離。如果你手機上同時裝了酷安官方版,c001apk 會被當成一個獨立應用來安裝——它讀不到官方版的本地收藏和瀏覽歷史,官方版也看不到它的。好處是互不干擾;壞處是 c001apk 裡加的本地收藏不會自動同步回官方版,反之亦然。如果打算長期用 c001apk,乾淨卸載官方版再裝會省掉很多資料管理的麻煩。

二是 首次啟動的預設狀態。打開後以遊客身份就能瀏覽全部內容、下載應用,不需要強制登入。它的「無廣告模式」是預設開啟的——不是需要你進設置去勾選的可選項,而是從構建層面就把廣告組件整個移掉了。登入酷安帳號後,帳號側的關注列表和收藏會從平台同步過來,這部分是共用的,但本地額外收藏仍然只在 c001apk 自己的資料庫裡。

桌面端(Flutter 原版)目前不支援下載 APK,只能看內容,這是已知限制。Android 端則是完整功能版,下載、安裝、收藏、評論都能做。

從 Flutter 到 Compose:一款精簡客戶端的迭代規律

作為一個從 bggRGjQaUbCoE 接手維護的開源項目,c001apk 的版本進化史其實就是一部團隊決策的濃縮劇本。我從能查到的c001apk文檔與公開倉庫資訊裡把它理了個大概,這裡跟大家聊聊我看到的規律——不是 changelog 式的流水帳,而是想說說「這支團隊一直在死磕什麼、什麼又一直不管」。

原倉歸檔,誰接了盤

最早的 c001apk 倉庫 bggRGjQaUbCoE/c001apk-flutter 是用 Flutter 寫的 Android 單端應用,後來作者宣佈歸檔停更。接盤的是 Integral-Tech 這個組織——注意是組織而非個人,從之後的提交記錄來看,至少有幾個活躍貢獻者輪流在維護。

接盤後的第一個大決策,是把桌面端也支撐起來。Flutter 本身是跨平台框架,但原作者只做了 Android。Integral-Tech 顯然不打算讓 Flutter 的跨平台優勢浪費在那裡——Linux、Windows、macOS 三平台的構建產物陸續補齊,GitHub Actions 也接好,每次推送自動構建四個產物上傳到 Actions Artifacts,本地不用編譯就能拿最新版。

這一筆決策很說明問題:團隊想做的不是「另一個酷安精簡版」,而是「一套代碼覆蓋四個平台的精簡客戶端」。Flutter 框架的邏輯層可以跨端,但原生 UI 層還是要各寫各的——這裡的取捨是,Android 端選擇了用 Jetpack Compose 重寫,桌面端則繼續用 Flutter 自帶的 Material 組件。

為什麼 Android 端單獨重寫

Jetpack Compose 重寫是 c001apk 迭代史上最值得注意的一次架構調整。從公開資訊來看,Android 端的 Compose 版包名改為 c001apk-compose,與 Flutter 桌面端共用同一套業務邏輯——也就是說,業務層一次寫好,Android 端用 Compose 原生渲染,桌面端用 Flutter Material 渲染。

這個決策的理由不難猜:Android 原生開發社區已經把 Compose 當作未來方向,Flutter 雖然能跨平台,但在 Android 原生體驗上終究是隔了一層。但為什麼桌面端不一起換 Compose?因為 Jetpack Compose 只支援 Android——桌面端沒有對應的原生聲明式 UI 框架,Flutter 在那裡反而成了最合適的選擇。

所以團隊的優先級再清晰不過:Android 端要最原生的體驗,桌面端要最低的維護成本。這個決策到今天還在執行——Android 端已經 Compose 化,桌面端維持 Flutter,沒有要遷移的意思。

團隊一直在死磕什麼、什麼一直不管

從已知限制那一節裡能看到一些有意思的對比:

  • 一直在死磕的:輕量(5.09M APK 包體積)、無廣告(從構建層移除而非可選項)、跨平台覆蓋(四平台產物齊全)、原生體驗(Android Compose 重寫)
  • 一直不管的:後台推送(官方版有系統公告分類的推送,c001apk 完全不做)、下載加速與斷點續傳(純靠酷安伺服器)、桌面端應用下載功能(已知限制裡明確說桌面端不支援)、細粒度設置(字體只有三檔、Tab 圖標不能自訂)

這裡面有個很有意思的選擇:不做後台推送。對於社區類應用來說,推送幾乎是標配——官方版做了細分類型(系統公告、評論回覆、收藏動態),c001apk 連打開應用才檢查新消息的極限推送都沒有。團隊的解釋從來沒有明說,但我傾向於認為這是一個「有意識的取捨」:推送需要常駐後台,會增加功耗和記憶體佔用,跟「輕量」這個底線衝突——砍掉推送,換來的是應用安靜、不喚醒、不偷跑。

照這個節奏,下一步大概率怎麼走

說到這裡大家應該能感覺到這支團隊的節奏:做決策之前先想清楚「這件事會不會讓應用變重」——如果會,哪怕是用戶呼聲很高的功能也會被壓下來;如果不會,哪怕是架構級的大動作(比如 Compose 重寫)也會果斷推進。

照這個規律,我覺得接下來的走向大概率是這樣幾條:

第一,Android 端 Compose 化的收尾。已知資料裡沒寫 Compose 版是否覆蓋了全部功能模組(社區論壇、個人中心、收藏管理這些大模組應該已經 Compose 化了,但設置頁面、登錄流程這些小模組可能還殘留部分 Flutter 代碼)——團隊不太可能停在「半 Compose 半 Flutter」的狀態,把 Android 端最後一點 Flutter 代碼清乾淨是早晚的事。

第二,桌面端應用下載功能。這是目前最明顯的功能缺口——已知限制裡第一條就是「桌面端不支援下載 APK」。桌面端的 Flutter 框架本身沒有障礙,補這個功能應該不會讓應用變重,所以大概率在排期上。

第三,什麼事情肯定不會發生:不會加推送、不會加廣告(哪怕是「用戶可選」的廣告也不會)、不會做字體細節調節(那樣設置頁面會變重)、不會做下載加速(要加自己的伺服器,違反輕量原則)。

開源項目最容易讓人著急的就是「為什麼這個功能拖這麼久還不上」,但 c001apk 的團隊給了一個很好的榜樣:方向比速度重要。他們一直在往同一個方向走——讓一款真正純淨、真正輕量的酷安客戶端活下去——中間可能有架構重寫、有接盤組織變動、有功能優先級調整,但從來沒改過這個方向。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章