由于公司政策變化,我不敢再把一些工作無關的數據保存在公司發的筆記本中。
當時知道政策變化后,我有些緊張,拿出筆記本就馬不停蹄的卸載軟件、刪除代碼。在刪除微信小程序代碼目錄時,我曾想過是否需要備份,但我記得很清楚每次代碼完成后我都git 過的,數據應該保存在阿里云code中,就沒有過多考慮直接刪掉了目錄。
回到我的個人電腦上準備check out代碼時,才意識到,無論前端還是后端的代碼我都沒有保存到阿里云中,我只是建了兩個本地repo,往里面check in的代碼。目錄刪除了,我的代碼也全部丟失了!
幸好后端的Java代碼目錄我沒有刪除,它和公司的一些項目混在一起,我沒注意,躲過一槍。但前端小程序代碼是妥妥的全部找不到了。我很后悔當時應該先放到回收站,而不是按下了shift + del把目錄徹底刪除。
當我意識到問題的嚴重性后,第一件事是通過我10多年前用過的一款軟件。
我在網易163網盤里保存過一些常用的軟件,大多數軟件已經沒有意義,但這款就在去年還幫我一個同學找到過他誤刪的羞羞視頻,我還是比較有信心。
曾經常用的軟件工具
打開公司筆記本,(無奈的)下載這個.exe,以管理員身份運行,開始掃描全盤的目錄結構。由于是公司的電腦,我也沒敢截圖免得出更多幺蛾子。
大概用了2個多小時,全盤掃描結束,終于能看到我丟失的小程序。當時我那個激動,看到目錄下的文件全部都在,以為全部文件都能成功找回。于是插上一塊U盤,迅速把數據恢復到U盤中。這里我使用一塊U盤的原因是,如果數據恢復到原磁盤,可能對現有數據產生影響,軟件推薦我恢復到其它磁盤中。
在我個人電腦中,插入U盤,拷貝出源代碼,用微信開發者工具打開...咦?怎么啥都載入不出來?看起來是正常的,但控制臺提示找不到入口。
我點開app.json一看,我靠,竟然打不開!再通過++通過2進制查看,發現這些文件內容是全0,可以說是數據沒有一點價值了。我簡單翻看了一下恢復的文件,總共可能有40個文件,其中30個都無法打開!我粗略估計了一下微信源碼本地測試,要把這30個文件全部寫完,要一周時間,簡直要崩潰了。
這個小程序是給我老婆統計數據用的,我跟我老婆提了一下,她氣得五雷轟頂,要求我必須盡快改好。現有的小程序是可以用的,但她時不時就會有新的需求,她要我在下次需求來的時候,必須把小程序恢復成以前的樣子。
我看了一下,小程序中連圖片都全部打不開。要恢復成以前的樣子,感覺難度很大。
在無限絕望的情況下,我開始搜索小程序恢復的方法。
很早我就聽說過,小程序雖然上傳到服務器上了,但它是做過的,拿到這部分代碼也沒價值,曾在論壇上有個兄弟說小程序誤刪,如果找不回來就會丟掉工作,依然沒找到。所以我本來是沒什么信心的。
但這次搜索,讓我找到一篇挺靠譜的帖子,我照著它的說法去做,還真的找回個八九不離十。
大致步驟是:
下載node.js,并安裝依賴包安裝夜神模擬器,打開后在對應的App Store中下載好微信登錄微信,打開對應的小程序使用文件管理器添加超級用戶權限,在/data/data/com/.mm//xxx//pkg/目錄下找到*.將文件拷貝到share目錄下,就可以直接在上獲取到這幾個文件。下載,這個git repo應該不是原作者的,原作者這個repo已經刪除了,我估計是被警告了,主動撤下。但有些用戶已經fork了這個repo,我也隨便找了個fork的repo克隆下來就可以了。直接反編譯.文件,如果提示缺少依賴包,則再去一一安裝。
反編譯很順利,說實話,我沒想到反編譯后的代碼竟然是未經過壓縮的。所有的變量名都在,格式也差不多,甚至連注釋都正常。
唯一的問題是,它還生成了一個@babel目錄和對應的特殊引用:
這類代碼得看一下使用的地方,再改回我以前的用法。
就這樣,本來一周重寫的工作量,縮短到了2個小時。但更重要的是,以后無論如何要記得push代碼到云repo上去微信源碼本地測試,這種馬虎再也不能發生了。