Posts RSS Comments RSS  

研究 iPhone 備份資料,以及用 Mac 的程式庫寫 Windows 命令列工具

為了要研究 iTunes 幫 iPhone / iPod Touch 備份出來的資料,寫了一個名叫 mobilesync-inspect 的 open source 小工具

然後因為考慮到 iPhone 使用者不全是 Mac 使用者,因此在想這個工具應該也要能在 Windows 上執行。

如果是自己用的工具,那選擇很簡單,我可以裝 Python 然後跑 iphone-backup-decoder ,或者類似的 scripting language。

但如果還希望一般的 Windows 使用者也能使用這樣的工具,或者說希望不要有安裝 scripting language 的額外需求,那就應該寫成獨立的應用程式。

要在 Windows 上開發應用程式也簡單,選擇很多。不過我卻又希望能跟工具的 Mac 版本共用同一組程式碼。

主要關鍵還是在於怎麼讀取 iTunes 幫 iPhone / iPod Touch 做的備份資料。格式是 Apple 的 binary property list。然後我並不想自己照著公開格式寫 parser。更何況我不只希望工具能讀,還要能寫。

於是想到了利用 Apple 自家的 CoreFoundation (以下簡稱 CF)。CF 有一點像 glib ,提供了很多基本的資料結構操作,然後透過類物件導向的方式來使用,而且有貫通的記憶體管理機制(使用 reference counting)。

不過,雖然 Apple 說 CF 有 open source,但顯然現在放出來的版本,不是你自己編得起來的。Apple 自己提供了預先編好的版本,library 連同標頭檔,供 WebKit Windows 版本開發使用。去 WebKit 網站點個同意書就可以抓到。

抓完之後,就可以用 CF 來撰寫 Windows 程式了。不過,編出來的東西,最後還是得要倚賴 Safari for Windows 提供的四個 DLL 才能執行。

所以嚴格說來還是沒有達到「建立獨立而使用同一套 code 編成的執行檔」的目標,還差那麼一點點。

但是,用同一組 C++ 程式碼,確實可以 build 岀給 Mac 還有 Windows 使用的執行檔了。

Trackback this post | Feed on Comments to this post

Leave a Reply