手機上也能開發 App?我用 iapp 搞定了課堂簽到小工具

工具 ·约 8 分钟 ·記筆記的貓:團子

iapp 是什麼

iapp 是一款專門在手機上運行的 Android 應用開發工具。它的設計理念很特別——不用打開電腦、不用配置龐大的開發環境,打開手機就能開始做 App。支援裕語言、Java、JavaScript、Lua 等多種程式語言,同時提供完整的可視化設計界面,手指拖拖拽拽就能完成界面佈局。對我這種完全沒有程式基礎、但又一直想自己做點什麼小工具的人來說,它簡直就是把一道看似遙不可及的門檻給踹低了好幾階。

安裝

iapp 的安裝包將近 103MB,對一個開發工具來說體積不算小,畢竟它本身就內建了完整的編輯器、編譯器和預覽引擎。iapp下載後點擊 APK 安裝,系統會提示允許未知來源應用——這個是 Android 的標準流程,到系統設備裡放行一次就行。安裝完成首次啟動時,軟體需要初始化一些內部資源,會有幾秒的載入畫面,千萬別以為卡住了就強制退出。另外有個細節:如果你的手機記憶體本來就比較緊張,建議安裝前先清理一下後台,不然編輯界面時可能會出現預覽黑屏或控件拖不動的情況——這點我稍後會在故事裡詳細說到。

課堂上冒出的念頭

說起這個故事的開端,得從我那個讓人頭痛的課堂簽到說起。

我們系的選修課老師特別喜歡搞簽到,而且花樣百出。有時候是上課前掃一個二維碼,有時候是在黑板上寫一串數字讓我們輸入,最離譜的一次是讓我們每個人舉手自拍然後傳到一個臨時群組——總之就是沒有一次是消停的。同學們每次上課都要先忙五分鐘簽到,還經常有人掃不到碼、傳錯群,鬧得雞飛狗跳。

那天我又在簽到時折騰了三分鐘,終於忍不住在課堂上摸出了手機,心裡冒出一個念頭:能不能做一個小工具,把各種簽到方式都整合進去,讓大家打開 App 就能直接用?

問題是,我完全不會寫程式。

朋友推薦了一款奇怪的工具

放學後我跟學長吐槽這件事,他聽完直接從口袋裡掏出自己的手機,屏幕上跑著一個看起來挺正式的記事本 App。「這個是我自己用手機做的」,他說,「用的 iapp,你要是想折騰簽到工具,這個最合適。」

我當時還以為他在開玩笑。手機做 App?這怎麼可能?但他現場給我演示了幾個界面的切換,從列表頁跳到詳情頁、從主頁打開設定、點選一個選項彈出確認框——整個過程行云流水,跟我平常用的 App 沒什麼兩樣。

「你這個花了多長時間?」我問。

「第一個版本大概三天吧,上課的時候折騰折騰就做出來了。」

我當場就去下載了。

第一次打開 iapp:界面黑屏的慘痛教訓

下載安裝過程挺順利,打開之後確實被嚇了一跳——整個界面就是一個手機模擬器畫面,旁邊一排控件按鈕,底部有個屬性編輯區,看起來就像把 Android Studio 給搬到了小屏幕上。我建了一個新專案,拖了個按鈕上去,點擊預覽,然後就遇到了我的第一個災難:整個預覽區塊一片漆黑,什麼都沒有。

我當場就懵了。折騰了半天,試過關機重開、試過刪掉專案重建,甚至想過是不是我手機太破帶不動,差點就放棄了。後來翻了翻 iapp 的說明,才發現原因——我手機後台掛了十幾個應用,記憶體被佔了大半,iapp 的預覽引擎吃不消了。清理後台之後重啟軟體,預覽區瞬間就亮了。

後來我才知道,這只是 iapp 新手常踩的坑之一。除了記憶體不夠會黑屏,引用了不存在的圖片資源也可能導致整個預覽渲染失敗;還有一種情況是控件被鎖定了或者選中了外層容器,導致怎麼拖都拖不動——我後來又踩了好幾次。但好處是,iapp 的說明文檔把這些常見問題都整理得很清楚,遇到問題搜一下基本都能找到解法。

用可視化界面搭出簽到工具的骨架

解決了預覽黑屏的問題之後,我開始正經八百地設計簽到工具。第一個想法很簡單:做一個首頁,上面列出各種簽到方式的入口——二維碼掃描、數字輸入、定位簽到,每點一個就跳進對應的子界面。

iapp 的界面設計真的是拖拖拽拽就能完成。左側欄有一堆控件按鈕:按鈕、文字框、圖片、列表、容器……把它們拖到中間的模擬器畫面上,然後在底部的屬性面板裡改顏色、調大小、寫文字。我之前連 HTML 都沒寫過,但看 iapp 的界面直覺就能上手——這大概就是所謂的可視化編程的魔力。

做首頁的時候我第一次用到了「導入界面」功能。一開始我傻乎乎地把底部導航欄每個頁面都複製粘貼了一份,後來才知道可以把導航欄做成一個獨立的小界面,然後在每個頁面裡導入它。這樣一來,我想改導航欄的顏色或文字,只要改那一個獨立界面,所有頁面的導航欄就自動跟著變了——這個設計簡直太聰明了。

界面跳轉與傳參:讓 App 真正動起來

界面搭好之後,下一步就是讓它們互相串起來。點首頁的「二維碼簽到」按鈕,要跳到掃碼界面;掃完碼之後要把結果帶回首頁顯示。這些在 iapp 裡通過界面跳轉和參數傳遞來實現。

在控件的點擊事件裡寫一行跳轉指令,指定目標界面的名字就行,跳轉動畫可以選左右滑入或淡入淡出。更關鍵的是參數傳遞——比如掃碼界面掃完了一個二維碼,我需要把掃到的內容帶回首頁,這時候就在跳轉指令裡附帶一個參數,目標界面在載入事件裡把這個參數取出來用。這套邏輯說起來不複雜,但我第一次寫的時候還是繞了好幾個彎。

好在 iapp 支援在頁面切換時加上動畫效果。我給所有跳轉都統一用了淡入淡出動畫,整個 App 操作起來感覺順了很多,不會像有的應用那樣頁面切換生硬得像在翻書。

出了 bug 怎麼辦:日誌調試三板斧

App 做到第三個功能的時候開始出問題了——掃碼結果帶回首頁之後,偶爾會出現文字顯示為空的情況。這種「有時候好有時候不好」的 bug 最讓人頭痛,完全摸不著頭緒。

學長給我指了一條路:在 iapp 裡開日誌輸出。裕語言裡有一個 syso() 函數,把它插在代碼的關鍵位置,就能把中間結果輸出到日誌懸浮窗上。我在跳轉前、參數取值後、顯示文字前各打了一條,運行起來一看日誌,發現問題出在掃碼結果的格式上——有的二維碼掃出來的內容帶了不可見的換行符,直接當文字顯示就被裁掉了。加了一行清理換行符的代碼,問題解決。

這套日誌調試的三板斧——syso 打印、日誌懸浮窗、調試模式單步執行——後來成了我每次遇到 bug 都會先走的流程。先明確現象,再在嫌疑最大的幾行代碼前後埋 syso,跑一遍看日誌斷點在哪,很快就能縮小範圍。比我之前想像中的「對著代碼一行一行眼睛掃」要高效得多。

用 iapp 可視化設計界面

收尾:一個業餘愛好者的小結

前後折騰了大概兩個禮拜,簽到工具的第一版終於做出來了。功能不算多,但基本能覆蓋我們系老師常用的那幾種簽到方式。我把安裝包傳到了班級群裡,同學們下載之後紛紛來問「這真的是你自己做的?」。

說實話,我一開始也沒想到自己能做出來。iapp 對我這種零基礎的愛好者來說,最大的價值不在於它能做什麼厲害的功能,而在於它把「寫一個 App」這件事的門檻壓到了足夠低——低到你只需要有一個想折騰的念頭,就能開始動手。過程中當然會遇到各種各樣的問題:預覽黑屏、控件拖不動、bug 找不到原因,但這些問題在 iapp 的說明文檔裡基本都能找到解法,社區裡也有很多同好分享的經驗。

現在我手機裡還裝著 iapp,空閒的時候就打開它繼續折騰下一版。畢竟,自己做的工具用起來就是順手——而且下一次,我還想試試做點別的。

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

團子還試過這些