Shield 手機端開發工具入門:五分鐘搭起第一個專案

系统工具 ·约 7 分钟 ·記筆記的貓:團子

Shield 是什麼

Shield 是一款跑在安卓手機上的開發工具,包名 github.depolarization.shield,最新版本 2.0,安裝包約 19MB。它的定位很明確:讓從事開發工作的人在不在電腦旁時,手邊也能有一套稱手的工具——臨時需要看一段程式碼、對照專案檔案、甚至對手機上已安裝的應用做結構研究,在手機上就能完成。

它支援的檔案類型頗雜:cpp、alp、apk、reg、appx、m3u8 等都能處理,加上內建的 DEX 查看、安裝包提取、指定類分析等工具,從純檢視到輕量改動都有覆蓋。如果你曾在通勤路上被工作訊息追著要改一段腳本,或者想拆解手機上某個應用看看它到底做了什麼,Shield下载 就是為這兩種場景設計的。

安裝

Shield 的安裝包來源是獨立 APK,不走應用商店——可以從 Shield官網 對應的指南頁拿到。拿到檔案後先做一次 MD5 校驗——這款工具的官方發布值固定是 250EF359BFC6FC74822F711495D4B531,電腦上用 certutil -hashfile <路徑> MD5 或手機檔案管理器的屬性頁都能讀值,對得上再往下走。

安卓系統首次安裝來源不明的 APK 會擋下安裝流程,這時到「設定 → 應用程式與通知 → 進階 → 特殊應用存取權 → 安裝未知應用」,把你用來開啟 APK 的那個檔案管理器或瀏覽器設成允許即可。裝完首次啟動會要求儲存空間權限——這是必須給的,否則專案檔案與提取的 APK 無法寫入。

前置條件

打開 Shield 之前,先確認兩件事:

  • 手機系統版本在 Android 7.0 以上,舊版本的 SELinux 限制會擋掉部分檔案讀取;
  • 給 Shield 開了儲存空間權限後,首次進入應用時會掃描一次手機上已安裝的應用,這步可能要等十幾秒,別以為卡了就強關。

Shield 首頁的應用列表與工具入口

上圖就是首次進入 Shield 看到的樣子:主區塊是手機已安裝應用的列表,底部有一排標籤切換不同頁面。主頁列表每一行都長得差不多——左上是應用名,名字下面一行是版本號加包名,行尾還有一個圓形按鈕帶小蟲圖標。這個按鈕是後面 DEX 分析的入口,先記住位置,等等會用到。

步驟一:新建一個空白專案

打開 Shield 後,找到首頁右側的「新增專案」按鈕,點進去會看到一個對話盒,要填三個值:

  1. 應用名——顯示在桌面的名字,隨便取,比如 demo;
  2. 版本號——通常寫 1.0;
  3. 包名——系統層面的唯一識別,必須是反域名格式,例如 com.example.demo。

填完確認,Shield 會在內部儲存區幫你建好一個資料夾,裡面已經預放了三個檔案:main.lua(程式入口)、init.lua(剛才填的那三個值就在這裡)、layout.aly(介面布局表)。這三個檔案是專案的骨架,之後所有修改都從它們開始。

步驟二:打開預設程式碼

新建好的專案不會自動展開,要回到主頁應用列表,找到你剛剛建的那個專案,點它的應用名進入專案編輯頁。編輯頁頂部有一排檔案清單,預設選中的就是 main.lua,裡面是幾行導入模組、載入布局、顯示介面的範例碼——這是 Shield 幫你生成的最小可執行範本,直接按右下角的「執行」按鈕就能彈出一個空白介面。

如果你想改介面長什麼樣,不要在 main.lua 裡硬寫 UI 代碼,把視角切到 layout.aly——介面的外觀全部在這裡定義,改這裡不會碰邏輯。這是 Shield 跟其他腳本工具的一個重要差別:邏輯與外觀分檔管理,改樣式不動邏輯。

步驟三:執行並預覽

編輯頁右下角有個圓形的執行按鈕(按鈕圖示是一個播放三角形),點它之後 Shield 會在同一個手機上開一個浮動視窗跑你的程式。預設範本只顯示一塊空白卡片,這是正常的——它只是證明環境能跑起來。

編輯器與執行按鈕

如果執行後什麼都沒彈出來,八成是 main.lua 裡 loadlayout 讀不到 layout.aly,回到編輯器確認兩個檔名都沒拼錯。這是新手最常踩的第一個坑。

常見卡點與解法

卡點一:執行後介面沒彈出來。檢查 main.lua 裡 loadlayout("layout.aly") 這一行的檔名引號是否正確,layout.aly 有沒有真的存在在專案目錄裡。有時新建專案後切換到其他頁面再回來,專案檔案清單會短暫空掉,這時把 Shield 完全關掉重開就好。

卡點二:想在專案裡加圖片但載入失敗。Shield 的圖片引用走相對路徑,把圖片放進專案資料夾後,用 loadbitmap("icon.png") 這種檔名直接讀就行,不用寫完整路徑。如果你放的是子資料夾裡的圖片,就寫 loadbitmap("images/icon.png")。

卡點三:打包成 APK 後裝不上。這通常是 init.lua 裡的包名跟你手機上已安裝的某個應用撞了,改一個新的包名再打包。另外確認打包時 icon.png 和 welcome.png 的尺寸不要超過 1024×1024,太大會讓打包流程中斷。

進階:從工具箱拆解別人的應用

跑通了自己的第一個專案後,如果你對手機上某個應用好奇它的結構,切到底部最右側的人形圖標進入工具箱頁——這裡有安裝包提取、DEX 查看、指定類分析三件工具。對你想研究的應用,先用「安裝包提取」把 APK 導出來存到手機儲存區,再用「DEX 查看」讀它的類結構,順著 com.xxx.xxx 一路挖,比在電腦上反編譯省很多事。

這件工具在手機上能用、在電腦上也能用,Shield 把兩端的操作方式做了對齊——手機上摸熟了,回到電腦上寫腳本時的思維不會斷。通勤路上改一段腳本、午休時對照一下專案檔案、晚上回家在電腦上把事情收尾,這就是 Shield 存在的理由:讓開發這件事,不必綁死在一張桌子前。

本文為個人基於網路公開資料整理編寫,非官方內容,僅供學習交流參考;軟體版權歸原作者所有,請支持正版;使用過程中遇到問題請查閱官方管道,本文不承擔任何責任。

團子還試過這些