新年第一天寫個一篇小整理,一方面怕自己忘記,
一方面幫助其他開發者找出一些問題。
首先,參考 iPhone Development Wiki 的教學,上面寫的落落長
其實就簡單兩件事,第一個是改 makefile:
1 2 |
ARCHS: armv6 arm64 TARGET := iphone:7.0:2.0 |
加到 makefile 的 include 前面
不過我都設不一樣,一來是我在 4.2 以前還不會寫程式,所以根本沒有需要支援 XD
二來是我這些東西應該也沒有要支援 armv6 的必要,
所以除了 armv6 改成 armv7 外,TARGET 也改成:
1 |
TARGET = :clang::5.0 |
視情況有些會用 6.0,這樣的話不必支援太低版本的 SDK,出問題會比較簡單一些
第二件事情很重要,就是重新下載 theos 、ldid 跟 libsubstrate.dylib
尤其是如果之前有用過非官方的 libsubstrate 的話,一定要重弄
因為我就浪費了一天去 debug,結果最後發現是非官方 libsubstrate 有問題。
如果你很懶的話,記得參考 r-plus 的安裝 script ,直接安裝好。
即使 compile 完之後,記得還要做幾件事:
1. 在 arm64 的機器上面測試
2. 在 armv7 的機器上面測試(推薦 iPhone 4)
3. 在 iOS 6 上面測試(推薦 3GS、iPhone 4)
4. Preferences Bundles 要測試(如果有的話)
5. 重新抓 UDID (如果你有要用的話)
因為有些東西你用 arm64 compile 完之後在 armv7 可能會出問題
所以記得,交叉測試是必須的...不然會跟我一樣整天推送 update OAQ...
如果真的不行的話,再去動 makefile,去弄兩個 binary 出來,
確定 arm64 的版本跟 armv7 的版本分別可以正常執行,然後在 postinst 放這個指令:
1 2 3 4 |
export version=$(dpkg -s cy+cpu.arm64 | grep Version | sed -e 's/Version: //') if [[ $version == 0 ]]; then echo "arm64" fi |
從 deb 的 postinst 下手,讓 arm64 的去安裝不同檔案即可,這樣是有點小作弊啦
不過如果在還沒有辦法解決相容性的情況下,這樣做可以讓東西趕快先上線。
以上就是簡短心得,歡迎交流(?
發佈留言