器:ALMP v7.0完整實(shí)踐指南)
簡(jiǎn)介在安卓設(shè)備上搭建輕量級(jí) Web 服務(wù)環(huán)境的實(shí)用工具包 almp_v7.0ALMP面向需要快速完成 PHP/ASP 動(dòng)態(tài)腳本聯(lián)調(diào)、MySQL 數(shù)據(jù)存儲(chǔ)驗(yàn)證的開(kāi)發(fā)者與愛(ài)好者也適合臨時(shí)內(nèi)網(wǎng)服務(wù)的移動(dòng)端部署。壓縮包共 8 個(gè)文件、約 17.59MB涵蓋 3 個(gè) apk終端模擬器、SSH 服務(wù)端、DDNS 客戶(hù)端、2 個(gè) shell 安裝/卸載腳本、1 個(gè) doc 使用說(shuō)明、1 個(gè) help 幫助文檔及 1 個(gè) bz2 格式的 lmp 數(shù)據(jù)包各文件用途清晰按文檔逐步配置即可完成環(huán)境搭建。目前已有 1088 人瀏覽學(xué)習(xí)常見(jiàn)的做法是在 Android 設(shè)備上快速驗(yàn)證 Web 應(yīng)用邏輯、執(zhí)行移動(dòng)開(kāi)發(fā)測(cè)試或搭建局域臨時(shí)站點(diǎn)。借助這套資源用戶(hù)省去了從零編譯與繁瑣配置的過(guò)程安裝后啟動(dòng)預(yù)設(shè)的 ALMP 環(huán)境再調(diào)整監(jiān)聽(tīng)端口、腳本解析路徑和數(shù)據(jù)庫(kù)連接參數(shù)便能在移動(dòng)端完成從部署到業(yè)務(wù)調(diào)試的完整工作流適合作為移動(dòng) Web 開(kāi)發(fā)與教學(xué)演示的輕量方案。 最近在折騰安卓上的 Web 服務(wù)器環(huán)境發(fā)現(xiàn) almp_v7.0ALMP 這個(gè)方案比我想象中完整不少。不是那種只塞一個(gè) Nginx 的玩具而是把 Apache/Lighttpd、MySQL、PHP 打包到一起裝完就像給安卓設(shè)備套了個(gè)縮小版 LAMP。它可以拿來(lái)干嘛本地開(kāi)發(fā)調(diào)試 PHP 項(xiàng)目、給安卓 App 的接口做 mock、在內(nèi)網(wǎng)掛一個(gè)輕量站點(diǎn)或者干脆把吃灰的舊手機(jī)和電視盒子變成小服務(wù)器。適合 PHP 開(kāi)發(fā)者、盒子玩家、做嵌入式網(wǎng)關(guān)的人參考。這篇不會(huì)講太虛的架構(gòu)概念我直接按 v7.0 的組件構(gòu)成、部署過(guò)程、安全加固和踩坑記錄一步步說(shuō)清楚。1. 為什么要在安卓上跑一套 Web 服務(wù)器先說(shuō)個(gè)很多人都會(huì)問(wèn)的問(wèn)題電腦上跑 Web 服務(wù)不香嗎干嘛非要在安卓上折騰這還真不是閑的實(shí)際場(chǎng)景一抓一大把。1.1 場(chǎng)景先行舊手機(jī)不只是鬧鐘我自己最開(kāi)始是因?yàn)橘I(mǎi)了個(gè)外接鍵盤(pán)想把咖啡店寫(xiě)了一半的 PHP 項(xiàng)目帶出門(mén)繼續(xù)改。筆記本太重手機(jī)加鍵盤(pán)倒是輕問(wèn)題是 Windows/Linux 那套環(huán)境沒(méi)法直接跑。后來(lái)發(fā)現(xiàn)安卓上可以跑完整的 MySQL PHP思路一下就打開(kāi)了。這類(lèi)方案最典型的幾個(gè)用途本地開(kāi)發(fā)調(diào)試PHP 項(xiàng)目需要環(huán)境一致直接在手機(jī)裝一套隨時(shí)改代碼隨時(shí)看效果不用每次都在 VPS 上調(diào)試。內(nèi)網(wǎng)輕量站點(diǎn)公司或家里跑一個(gè)內(nèi)部工具站、離線文檔站沒(méi)必要專(zhuān)門(mén)買(mǎi)服務(wù)器一臺(tái)舊安卓機(jī)就夠。接口 mock安卓開(kāi)發(fā)時(shí)經(jīng)常需要模擬后端返回?cái)?shù)據(jù)本地起一個(gè)小服務(wù)比寫(xiě)死數(shù)據(jù)靈活太多。電視盒子再利用很多機(jī)頂盒閑置下來(lái)性能并不弱當(dāng)服務(wù)器跑一點(diǎn)定時(shí)任務(wù)、文件共享比直接扔掉環(huán)保且實(shí)用。熱詞里還有“安卓TV”“九聯(lián)unt401h”“e900v22c”這類(lèi)刷機(jī)相關(guān)詞都和這個(gè)場(chǎng)景相關(guān)盒子刷成安卓系統(tǒng)后很多人不只看電視還想把它當(dāng)成迷你主機(jī)。1.2 ALMP v7.0 比手動(dòng)部署強(qiáng)在哪可能有人會(huì)問(wèn)安卓上不是可以用 Termux 自己裝 Nginx、MySQL 嗎為什么還要用集成包Termux 方案確實(shí)靈活但它的問(wèn)題是需要手動(dòng)編譯依賴(lài)遇到 glibc 兼容、PHP 擴(kuò)展缺失、數(shù)據(jù)庫(kù) socket 路徑不對(duì)就得花不少時(shí)間處理。而且每次系統(tǒng)更新后環(huán)境可能說(shuō)崩就崩。ALMP 這類(lèi)集成包的核心價(jià)值是“開(kāi)箱即用”。v7.0 版本把 AApache / Lighttpd、LLinux 底層、MMySQL / MariaDB、PPHP整合在一個(gè)安裝包里組件之間做了聯(lián)動(dòng)配置啟動(dòng)和停止用統(tǒng)一入口管理。跟手動(dòng)裝 Termux 比省掉的是環(huán)境適配的坑跟 KSWEB 這類(lèi)老牌方案比又多了組件版本選擇和多站點(diǎn)管理方面的靈活性。提示不要因?yàn)樗?APK 就覺(jué)得“玩具”。這類(lèi)方案在真實(shí)項(xiàng)目里已經(jīng)跑得很成熟關(guān)鍵是看你怎么配安全和性能后面我會(huì)專(zhuān)門(mén)講。2. 組件組成與版本選型邏輯ALMP v7.0 不是單個(gè)軟件是一整套服務(wù)的組合。理解它的組成才能知道出了問(wèn)題該去哪查。2.1 拆名字A、L、M、P 各代表什么看名字很容易聯(lián)想到 LAMP 的安卓變體。L 對(duì)應(yīng) Linux 內(nèi)核安卓本身就是跑在 Linux 上的所以這一層是天然的A 默認(rèn)是 Apachev7.0 也支持切換到 LighttpdM 是 MySQL 或 MariaDBP 是 PHP。v7.0 比較特別的是 Web 引擎支持雙選。Apache 功能全、模塊多適合做需要 .htaccess 支持的項(xiàng)目或者比較復(fù)雜的偽靜態(tài)規(guī)則Lighttpd 更輕量在電視盒子這種小內(nèi)存設(shè)備上跑更友善。安裝的時(shí)候可以選一個(gè)做默認(rèn)引擎也可以?xún)蓚€(gè)都啟動(dòng)分配給不同端口。為什么要做雙引擎選擇因?yàn)榘沧吭O(shè)備性能參差不齊有的舊手機(jī)只有 2GB 內(nèi)存跑 Apache MySQL PHP-FPM 會(huì)很吃力換 Lighttpd 會(huì)明顯輕松。而有的場(chǎng)景又依賴(lài) Apache 的.htaccess目錄級(jí)配置這時(shí)候 Lighttpd 就不合適了。2.2 v7.0 的默認(rèn)端口與目錄結(jié)構(gòu)裝完之后各項(xiàng)服務(wù)的默認(rèn)配置大概是這樣組件版本參考默認(rèn)端口說(shuō)明Apache2.4.x8080主站點(diǎn)訪問(wèn)入口Lighttpd1.4.x8082備用 Web 引擎按需開(kāi)啟MySQL / MariaDB5.7 / 10.x3306數(shù)據(jù)庫(kù)服務(wù)PHP7.4 / 8.x無(wú)模塊或 FastCGI腳本解析引擎phpMyAdmin5.x8081數(shù)據(jù)庫(kù)圖形化管理入口我用的版本默認(rèn)就帶這三個(gè)端口主要是避免和手機(jī)上其他應(yīng)用沖突。比如 80 端口在大部分安卓設(shè)備上需要 root 才能綁定所以不用 80 是很合理的選擇。目錄結(jié)構(gòu)上默認(rèn)站點(diǎn)根目錄一般在安裝數(shù)據(jù)目錄下的www里每個(gè)站點(diǎn)一個(gè)子目錄日志則分門(mén)別類(lèi)放在logs下。第一次安裝時(shí)建議把數(shù)據(jù)目錄放到內(nèi)部存儲(chǔ)而不是 SD 卡因?yàn)椴簧倭畠r(jià) SD 卡讀寫(xiě)速度和穩(wěn)定性都差數(shù)據(jù)庫(kù)很容易損壞。注意如果你有 root 權(quán)限可以把 Apache 監(jiān)聽(tīng)端口改成 80這樣訪問(wèn)時(shí)不帶端口號(hào)會(huì)方便很多。但要注意很多安卓系統(tǒng)自帶的網(wǎng)絡(luò)服務(wù)也可能占用 80 端口改之前先確認(rèn)沒(méi)沖突。3. 部署實(shí)操?gòu)牧愕脚芡ㄒ粋€(gè)動(dòng)態(tài)站點(diǎn)這部分我按完整的實(shí)操流程來(lái)寫(xiě)盡量做到照著做就能跑起來(lái)。3.1 安裝前的環(huán)境檢查先確認(rèn)設(shè)備條件Android 版本建議 7.0 以上。v7.0 對(duì)新老版本都有適配但太低版本缺少一些動(dòng)態(tài)鏈接庫(kù)MySQL 啟動(dòng)容易報(bào)錯(cuò)。存儲(chǔ)空間安裝包加上數(shù)據(jù)庫(kù)和站點(diǎn)文件預(yù)留 2GB 以上比較穩(wěn)。權(quán)限首次啟動(dòng)需要授予存儲(chǔ)權(quán)限否則站點(diǎn)目錄和數(shù)據(jù)庫(kù)文件都建不了。后臺(tái)限制進(jìn)手機(jī)管家/設(shè)置里把 ALMP 設(shè)為“允許后臺(tái)運(yùn)行”并忽略電池優(yōu)化否則一鎖屏服務(wù)就被殺了。操作系統(tǒng)本身不需要 root。沒(méi)有 root 的情況下除了 80、443 這類(lèi)低于 1024 的端口不能直接監(jiān)聽(tīng)之外其他一切正常。如果你后續(xù)想公網(wǎng)訪問(wèn)、綁定域名、用 TLS 證書(shū)建議還是 root 之后配合防火墻操作會(huì)順手很多。3.2 三分鐘跑通默認(rèn)站點(diǎn)安裝完成后打開(kāi) ALMP 主界面依次啟動(dòng) Apache 和 MySQL。第一次啟動(dòng)時(shí)應(yīng)用會(huì)初始化數(shù)據(jù)庫(kù)文件這個(gè)過(guò)程大概十到二十秒耐心等。初始化完成后在手機(jī)瀏覽器訪問(wèn)http://127.0.0.1:8080/如果看到默認(rèn)歡迎頁(yè)說(shuō)明 Apache 和 PHP 的基本鏈路已經(jīng)通了。接下來(lái)驗(yàn)證 PHP 解析是否正常在站點(diǎn)根目錄放一個(gè)測(cè)試文件名字叫t.php內(nèi)容寫(xiě)?php phpinfo();然后訪問(wèn)http://127.0.0.1:8080/t.php能看到完整的 PHP 配置信息頁(yè)說(shuō)明 PHP 模塊已經(jīng)生效。這里有個(gè)小提醒測(cè)試完記得把這個(gè)文件刪掉phpinfo 頁(yè)面暴露出來(lái)的配置信息很容易被掃描工具利用。局域網(wǎng)內(nèi)訪問(wèn)也很簡(jiǎn)單確保手機(jī)和電腦在同一個(gè) WiFi 下查一下安卓設(shè)備的 IP一般在 Wi-Fi 設(shè)置里能看到然后電腦瀏覽器訪問(wèn)http://設(shè)備IP:8080/。3.3 部署一個(gè)帶數(shù)據(jù)庫(kù)的 PHP 項(xiàng)目空跑通過(guò)之后拿一個(gè)真實(shí)項(xiàng)目走一遍完整流程這里我以最經(jīng)典的 WordPress 為例換成別的 PHP 項(xiàng)目邏輯也一樣。第一步把項(xiàng)目文件放到站點(diǎn)根目錄。比如我建了一個(gè)blog子目錄然后確認(rèn) Apache 的文檔根目錄指向正確位置。第二步創(chuàng)建數(shù)據(jù)庫(kù)。進(jìn)入 phpMyAdminhttp://127.0.0.1:8081/或直接在 MySQL 命令行執(zhí)行CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER wp_userlocalhost IDENTIFIED BY 這里寫(xiě)一個(gè)強(qiáng)密碼; GRANT ALL PRIVILEGES ON wordpress.* TO wp_userlocalhost; FLUSH PRIVILEGES;注意字符集一定要用 utf8mb4不要用默認(rèn)的 latin1不然中文內(nèi)容進(jìn)去全變問(wèn)號(hào)。第三步訪問(wèn)站點(diǎn)完成安裝。瀏覽器打開(kāi)項(xiàng)目地址在安裝向?qū)Ю锾顢?shù)據(jù)庫(kù)名、用戶(hù)名、密碼和主機(jī)名。主機(jī)名填127.0.0.1不要填localhost。因?yàn)?PHP 連接本地 MySQL 時(shí)localhost會(huì)走 Unix Socket而安卓上 socket 路徑經(jīng)常不對(duì)反而報(bào)連接失敗。改成127.0.0.1走 TCP問(wèn)題就沒(méi)了。第四步如果網(wǎng)址不是域名而是 IP 加端口需要修改站點(diǎn)配置文件里的siteurl和home兩個(gè)選項(xiàng)否則頁(yè)面資源會(huì)加載不出來(lái)。4. 安全加固與性能調(diào)優(yōu)很多人在安卓上起了服務(wù)之后直接拿到公網(wǎng)就完事了這是很危險(xiǎn)的。熱詞列表里也有“web服務(wù)器安全”說(shuō)明大家確實(shí)關(guān)心這個(gè)點(diǎn)。安卓設(shè)備的安全思路和云服務(wù)器不太一樣我單獨(dú)列一節(jié)說(shuō)。4.1 手機(jī)上的服務(wù)器為什么更容易被攻擊電腦服務(wù)器有專(zhuān)門(mén)的防火墻和安全組但安卓設(shè)備往往處于“裸奔”狀態(tài)。如果同一 WiFi 下的其他設(shè)備可以訪問(wèn)你那就意味著局域網(wǎng)內(nèi)任何人都能訪問(wèn)到你起的站點(diǎn)。默認(rèn)端口 8080、8081 很容易被掃描器探測(cè)到一旦暴露出去攻擊者會(huì)批量掃描公網(wǎng) IP 段專(zhuān)門(mén)找這類(lèi)暴露的管理接口然后用弱口令爆破。更麻煩的是手機(jī) App 的進(jìn)程權(quán)限邊界比傳統(tǒng)服務(wù)器弱服務(wù)如果被攻破攻擊者可能讀到你手機(jī)里的其他應(yīng)用數(shù)據(jù)。所謂“服務(wù)安全”在安卓上不只是 Web 層面的事還關(guān)系到整個(gè)設(shè)備安全。4.2 可以落地的加固清單我實(shí)際用下來(lái)這幾條做了基本能擋住 90% 的順手攻擊修改默認(rèn)管理端口phpMyAdmin 從 8081 改成 18081 這種非常規(guī)端口減少被自動(dòng)掃描命中的概率。禁用目錄瀏覽Apache 配置里加上Options -Indexes避免站點(diǎn)文件被列目錄。強(qiáng)密碼和最小權(quán)限數(shù)據(jù)庫(kù)用戶(hù)不要用 root給每個(gè)應(yīng)用單獨(dú)建用戶(hù)權(quán)限只授權(quán)到對(duì)應(yīng)庫(kù)。限制 MySQL 監(jiān)聽(tīng)地址在 MySQL 配置里設(shè)置bind-address 127.0.0.1只允許本機(jī)連接禁止遠(yuǎn)程數(shù)據(jù)庫(kù)訪問(wèn)。關(guān)閉危險(xiǎn) PHP 函數(shù)在php.ini的disable_functions里加上exec、system、shell_exec、passthru、proc_open等防止被拿到代碼執(zhí)行權(quán)限。不用的組件別開(kāi)Lighttpd、phpMyAdmin 用不到就關(guān)掉攻擊面越小越好。對(duì)于局域網(wǎng)內(nèi)的服務(wù)這些足夠了。真有公網(wǎng)訪問(wèn)需求建議不要直接暴露設(shè)備 IP而是用合規(guī)的隧道或網(wǎng)關(guān)方案做轉(zhuǎn)發(fā)同時(shí)一定要上 HTTPS至少不能用默認(rèn)的自簽證書(shū)裸奔。4.3 性能調(diào)優(yōu)這臺(tái)“小服務(wù)器”能扛多少并發(fā)安卓設(shè)備受限于 CPU 和內(nèi)存性能肯定不能和云服務(wù)器比。我拿一臺(tái)驍龍 665、4GB 內(nèi)存的舊手機(jī)實(shí)測(cè)Apache 默認(rèn)配置下跑一個(gè)純 PHP 動(dòng)態(tài)頁(yè)ab -n 1000 -c 50壓測(cè)大概能到 300 左右 RPS。作為對(duì)比一臺(tái)普通云主機(jī) 2 核 4G 能跑到上千 RPS。但對(duì)內(nèi)網(wǎng)開(kāi)發(fā)調(diào)試、幾十個(gè)人同時(shí)使用的小工具站來(lái)說(shuō)完全夠用。想壓榨性能可以調(diào)整這幾個(gè)地方開(kāi)啟 PHP OPcache復(fù)用編譯后的字節(jié)碼減少重復(fù)解析RPS 能提升 30% 以上。調(diào)整 PHP-FPM 進(jìn)程數(shù)安卓設(shè)備內(nèi)存有限pm.max_children不要盲目調(diào)大。內(nèi)存 4GB 的機(jī)器設(shè)為 10 左右比較穩(wěn)。MySQL 查詢(xún)緩存如果項(xiàng)目沒(méi)太多寫(xiě)入考慮開(kāi)啟 query cache但要注意版本差異MariaDB 10.1 之后的版本和 MySQL 8 都需要針對(duì)性配置。換 Lighttpd在低配置設(shè)備上Lighttpd 比 Apache 處理靜態(tài)文件更快靜態(tài)資源多的項(xiàng)目直接切換到 Lighttpd 會(huì)更流暢。經(jīng)驗(yàn)之談性能瓶頸往往不在 CPU而在磁盤(pán)和內(nèi)存。安卓設(shè)備如果存儲(chǔ)空間快滿MySQL 的寫(xiě)入會(huì)明顯變慢。平時(shí)注意留出至少 30% 的可用空間。5. 常見(jiàn)問(wèn)題與排查實(shí)錄用這類(lèi)集成方案問(wèn)題基本集中在服務(wù)啟動(dòng)、后臺(tái)被殺、數(shù)據(jù)庫(kù)連接和上傳文件幾個(gè)方向。我把遇到的典型問(wèn)題整理一下。5.1 服務(wù)起不來(lái)先從日志看起第一個(gè)坑就是服務(wù)啟動(dòng)失敗界面提示“Apache 啟動(dòng)失敗”或“MySQL 啟動(dòng)失敗”。這時(shí)候不要瞎猜去日志目錄看具體的錯(cuò)誤信息。日志路徑一般在安裝目錄下的logs文件夾里比如apache_error.log和mysql_error.log。常見(jiàn)原因有端口被占用手機(jī)上其他 App 占了 8080 或 3306改一個(gè)端口就好。數(shù)據(jù)庫(kù)文件損壞強(qiáng)制斷電或存儲(chǔ)卡讀寫(xiě)異??赡軐?dǎo)致數(shù)據(jù)庫(kù)文件損壞MySQL 日志里通常會(huì)有corrupt字樣。處理辦法是把數(shù)據(jù)目錄備份后重新初始化。權(quán)限不足安卓系統(tǒng)對(duì)目錄權(quán)限管控很?chē)?yán)比如/data下的目錄歸屬不對(duì)MySQL 就起不來(lái)。如果是非 root 模式安裝的確認(rèn)站點(diǎn)目錄在應(yīng)用自己的數(shù)據(jù)目錄內(nèi)。排查端口占用時(shí)可以用 Termux 或 ADB 執(zhí)行netstat -tlnp查看當(dāng)前監(jiān)聽(tīng)端口和對(duì)應(yīng)進(jìn)程也可以順便確認(rèn)一下自己設(shè)備上到底跑著哪幾個(gè) Web 服務(wù)。5.2 后臺(tái)被殺、息屏斷服務(wù)這個(gè)問(wèn)題在國(guó)產(chǎn)手機(jī)上特別明顯。默認(rèn)情況下安卓系統(tǒng)的省電管理會(huì)把長(zhǎng)時(shí)間后臺(tái)的進(jìn)程殺掉表現(xiàn)就是鎖屏一段時(shí)間后網(wǎng)站訪問(wèn)不了打開(kāi) ALMP 一看服務(wù)全停了。解決辦法分三步關(guān)閉電池優(yōu)化在系統(tǒng)設(shè)置里把 ALMP 加入“不受限制”或“忽略電池優(yōu)化”列表。鎖定后臺(tái)任務(wù)在最近任務(wù)界面把 ALMP 下拉鎖定防止一鍵清理時(shí)被關(guān)掉。開(kāi)啟前臺(tái)服務(wù)模式v7.0 版本有“前臺(tái)服務(wù)”開(kāi)關(guān)打開(kāi)后系統(tǒng)會(huì)把應(yīng)用視為正在運(yùn)行的服務(wù)被殺概率大幅降低。如果還是被系統(tǒng)回收可以考慮給設(shè)備插電運(yùn)行、關(guān)閉“深度休眠”或者干脆在開(kāi)發(fā)機(jī)上用模擬器方案。5.3 數(shù)據(jù)庫(kù)亂碼和連接失敗安裝 WordPress 或其他中文系統(tǒng)時(shí)最常見(jiàn)的是頁(yè)面一堆問(wèn)號(hào)。原因基本是建庫(kù)時(shí)字符集沒(méi)選對(duì)。MySQL 默認(rèn)字符集可能是latin1所以在建庫(kù)時(shí)一定要顯式指定CREATE DATABASE app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;如果庫(kù)已經(jīng)建好了就用ALTER DATABASE app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;修改。另外 PHP 連接數(shù)據(jù)庫(kù)時(shí)也要檢查連接字符集在mysqli連接后執(zhí)行SET NAMES utf8mb4。數(shù)據(jù)庫(kù)連接失敗的另一大原因就是主機(jī)名填了localhost。在安卓的 PHP 環(huán)境里localhost通常嘗試走 Unix Socket而 socket 路徑可能被配置到不存在的位置所以直接填127.0.0.1最省事。5.4 上傳文件大小限制和其他雜癥項(xiàng)目能跑之后接著就會(huì)遇到上傳文件被拒、圖片加載異常等問(wèn)題。處理辦法很簡(jiǎn)單改php.ini里的參數(shù)。高頻要?jiǎng)拥呐渲庙?xiàng)upload_max_filesize 64M post_max_size 68M max_execution_time 60 memory_limit 256M改完記得在 ALMP 界面里“重啟 PHP”或“重啟 Apache”不然配置不生效。這里有個(gè)常見(jiàn)誤區(qū)改完不重啟就以為配置有問(wèn)題反復(fù)改好幾遍結(jié)果都一樣。其實(shí)重啟一下就好。還有一種情況是文件能上傳但保存失敗多半是站點(diǎn)目錄的存儲(chǔ)權(quán)限不足。安卓 10 以后對(duì)自主存儲(chǔ)路徑管控更嚴(yán)建議站點(diǎn)根目錄不要放在公共目錄比如Download而是放在應(yīng)用自己的數(shù)據(jù)目錄下。最后再分享一個(gè)實(shí)際使用心得這套方案我主要跑在電視盒子上每天執(zhí)行一些定時(shí)任務(wù)和接口抓取連續(xù)運(yùn)行半個(gè)多月沒(méi)崩過(guò)穩(wěn)定性比我預(yù)期好。唯一要適應(yīng)的就是安卓系統(tǒng)本身有“內(nèi)存回收”機(jī)制需要經(jīng)常檢查服務(wù)狀態(tài)定期盯一下日志。如果想要更省心可以加一個(gè)開(kāi)機(jī)自啟腳本或定時(shí)檢查任務(wù)的工具服務(wù)掛了自動(dòng)拉起?;蛘咴?ALMP 里配置好監(jiān)控通知服務(wù)異常時(shí)第一時(shí)間收到消息。再往后還可以擴(kuò)展的方向就是把這臺(tái)安卓設(shè)備當(dāng)開(kāi)發(fā)測(cè)試機(jī)、內(nèi)網(wǎng)文件共享服務(wù)器、離線文檔中心。思路打開(kāi)之后會(huì)發(fā)現(xiàn)安卓不只是裝在口袋里的服務(wù)器同時(shí)也是最便宜的“折騰玩具”。本文還有配套的精品資源點(diǎn)擊獲取