ipad 升級到 6.1.2 造成 Xcode 無法辨識

Posted by: 邱小新 at 晚上11:42:00

iPad 升級到 6.1.2,Xcode 卻無法辨識,Organizer 中顯示 The version of iOS on “xxxx’s iPad” is not supported by this installation of the iOS SDK. Please restore the device to a version of the OS listed below, or update to the latest version of the iOS SDK; which is available here.

解決方法很簡單,把 Xcode 升級到 4.6 就可以了。

使用自建憑證上傳 APP 到 ipad

Posted by: 邱小新 at 晚上11:15:00

憑證錯誤訊息

沒有憑證就發佈到 iphone 會出現錯誤訊息: Code Sign error: The identity 'iPhone Developer' doesn't match any valid, non-expired certificate/private key pair in your keychains

修改 Code Signing

打開任一個 Xcode Project,在 Build Settings 頁面中找到 Code Signing 選項,Code Signing Identity 的子項目 Any iOS SDK,將它全改成 Don't Code Sign。

這時候發佈會出現 CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 6.1'

修改 SDKSettings.plist

打開終端機輸入 sudo /Applications/Xcode.app/Contents/MacOS/Xcode /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist,輸入密碼,使用 root 權限來開啟 Xcode 修改 SDKSettings.plist 文件。

找出 Key 是 ENTITLEMENTS_REQUIRED 及 CODE_SIGNING_REQUIRED,把 Value 從 YES 改成 NO。

修改 Info.plist

打開終端機輸入 sudo /Applications/Xcode.app/Contents/MacOS/Xcode /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist,輸入密碼,使用 root 權限來開啟 Xcode 修改 Info.plist 文件。

找出 Value 是 XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,總共有三個地方在 DefaultProperties、RuntimeRequirements、OverrideProperties。

按右鍵使用 Add Row,新增二個 ROW,PROVISIONING_PROFILE_ALLOWED 值為 NO,PROVISIONING_PROFILE_REQUIRED 值為 NO。

這時候發佈會出現 No code signature found. 的錯誤視窗。

參考

Windows 最佳化 by VMware

Posted by: 邱小新 at 晚上9:48:00

VMware on Windows 7 最佳化

Posted by: 邱小新 at 晚上10:23:00

開啟 Disable memory page trimming

VM(選單列) → Settings... → 出現 Virtual Machine Settings 對話框 → Options(分頁) → Advanced → 打勾 Disable memory page trimming

等同於修改虛擬機的 .vmx 文件,修改 MemTrimRate = "0"。

在此功能啟用時,VMware 會將一些虛擬機未使用的記憶體交給主機,而將虛擬機記憶體保存在硬碟交換文件中。但是這樣做,雖然可以讓主機獲得更多記憶體,同時卻導致硬體性能的下降。如果當 VM Suspend 時,卻發現主機整個卡住,硬碟瘋狂的運轉,持續十分鐘以上,把此功能打勾試試。

開啟 Fit all virtual machine memory into reserved host ram

Edit(選單列) → Preferences → 出現 Preferences 對話框 → Memory → Advanced → 選取 Fit all virtual machine memory into reserved host ram

等同於修改 C:/ProgramData/VMware/VMware Workstation/config.ini 文件,修改 prefvmx.minVmMemPct = "100"。

如果這個參數是 100 的話,當虛擬機啟動時,VMware 會將該虛擬機的全部記憶體都使用實體記憶體,而不 swap 到檔案系統上;如果這個參數是 50 的話,VMware會將該虛擬機的部份記憶體 swap 到檔案系統上,部份使用實體記憶體。要高效能的話,就設為 100 吧。

開啟 prefvmx.useRecommendedLockedMemSize

修改 C:/ProgramData/VMware/VMware Workstation/config.ini 文件,修改prefvmx.useRecommendedLockedMemSize = "TRUE"。

不詳

取消 mainMem.useNamedFile

修改虛擬機的 .vmx 文件,加入 mainMem.useNamedFile = "FALSE"。

沒此參數前虛擬機執行時會在本機產生 .vmem 的文件。虛擬機上的記憶體讀寫等於在本機 .vmem 文件讀寫,也就造成虛擬機執行時,硬碟常常運轉不停。但有得必有失,加上這個參數後 Suspend 虛擬機速度就會慢很多,突然斷電就更難保證數據的完整性。

當虛擬機啟動時,VMware 會把部份的虛擬機記憶體存在檔案系統上,以檔案形式存在,這是因為 VMware 使用了 mmap(記憶體映射)的方式來管理虛擬機記憶體。藉由修改 mainMem.useNamedFile,VMware 會將這個檔案由 VM 所在的目錄,改放到主機暫存目錄下,這個異動可能對效能有小小地幫助,特別是暫存目錄是 ramdisk 時,但要注意有可能發生空間不足的問題。

取消 sched.mem.pshare.enable

修改虛擬機的 .vmx 文件,加入 sched.mem.pshare.enable = "FALSE"。

停用 memory sharing 後,VM 將不會分享通用記憶體block,VM 也將停止比對記憶體block。強制關閉虛擬機的虛擬記憶體管理分享裝置,需要較高的主系統資源,但提供比較快的虛擬環境。

取消 MemAllowAutoScaleDown

修改虛擬機的 .vmx 文件,加入 MemAllowAutoScaleDown = "FALSE"。

這個參數設定成 "TRUE" 時,如果虛擬機設定需要 2GB 的記憶體,但實際上主機卻提供給虛擬機的記憶體不到 2GB,虛擬機在啟動時會自動調整縮小記憶體到足夠啟動的範圍。


Windows XP 的 config.ini 放在 C:\Documents and Settings\All Users\Application Data\VMware\VMware Workstationg。


以上是修改 VMware 的設定,當然在 windows 7 下也要做一些微調,才能使 vmware 跑起來很順,原文 vmware 提供,有空在來做整理。