1. 程式人生 > >我在使用Unity 釋出IOS真機過程時遇到的關於JIT的問題列表

我在使用Unity 釋出IOS真機過程時遇到的關於JIT的問題列表

  Unity 跨平臺釋出的優勢是顯而易見的.但還是會有一些坑.尤其是在IOS真機上.關於JIT的問題還是比較棘手的.

  而且是在unity中和模擬器中都是好的,一執行在真機上就出問題.

 當執行中遇到 

ExecutionEngineException: Attempting to JIT compile method '...' while running with --aot-only.

 的錯誤時.說明有有程式碼使用了JIT.但在iOS平臺中,Mono是以Full AOT模式執行的 無法使用JIT引擎,於是引發了這個異常。

Mono的AOT和.NET的Ngen一樣,都是通過提前編譯來減少JIT的工作,但預設情況下AOT並不編譯所有IL程式碼,而是在優化和JIT之間取得一個平衡。由於iOS平臺禁止JIT編譯,於是Mono在iOS上需要Full AOT編譯和執行。即預先對程式集中的所有IL程式碼進行AOT編譯生成一個原生代碼映像,然後在執行時直接載入這個映像而不再使用JIT引擎。目前由於技術或實現上的原因在使用Full AOT時有一些限制,具體可以參考

MonoTouch的文件,這裡提幾條常見的:

  • 不支援泛型虛方法,因為對於泛型程式碼,Mono通過靜態分析以確定要例項化的型別並生成程式碼,但靜態分析無法確定執行時實際呼叫的方法(C++也因此不支援虛模版函式)。
  • 不支援對泛型類的P/Invoke。
  • 目前不能使用反射中的Property.SetInfo給非空型別賦值。
  • 值型別作為Dictionary的Key時會有問題,實際上實現了IEquatable<T>的型別都會有此問題,因為Dictionary的預設建構函式會使用EqualityComparer<TKey>.Default作為比較器,而對於實現了IEquatable<T>的型別,EqualityComparer<TKey>.Default要通過反射來例項化一個實現了IEqualityComparer<TKey>的類(可以參考
    EqualityComparer<T>的實現
    )。 解決方案是自己實現一個IEqualityComparer<TKey>,然後使用Dictionary<TKey, TValue>(IEqualityComparer<TKey>)構造器建立Dictionary例項。
  • BinaryFormatter 使用 Serialize 時.如果需要對List等容器進行Serialize. 需要在程式碼中加入 System.Environment.SetEnvironmentVariable("MONO_REFLECTION_SERIALIZER", "yes"); 
  • Property 不能使用 GetValue.FiledInfo 可以正常使用 可以使用Property的GetGetMethod().Invoke 來替代.我的上一篇文章中初始化粒子物件中有用到.
  • crateinstence 帶引數不能超過9個.呵呵.這個是我一點點試出來的..
  • bytestoStruct 不能應用於 class

相關推薦

在使用Unity 釋出IOS過程遇到的關於JIT的問題列表

  Unity 跨平臺釋出的優勢是顯而易見的.但還是會有一些坑.尤其是在IOS真機上.關於JIT的問題還是比較棘手的.   而且是在unity中和模擬器中都是好的,一執行在真機上就出問題.  當執行中遇到  ExecutionEngineException: Attemp

iOS 除錯、打包測試、釋出程式常見問題

原文地址::https://blog.csdn.net/shihuboke/article/details/73864246   相關文章 1、iOS 建立真機除錯證書流程----https://blog.csdn.net/shihuboke/article/details/7

Android/Unity實戰篇:檢視安卓執行的Debug資訊

當我們在開發的時候,我們可以方便的用Debug來除錯程式,可是,有些問題恰巧出現在真機測試的時候,網上已經有了很多教程,可總是不完整,故在此寫一個完整版,供大家參考。 手機設定 使用USB連線電腦,開啟開發者模式,開啟USB除錯,允許除錯 電腦設定 找到安卓SDK所在目錄,

xcode目標除錯未出現ios裝置

在Scheme中只有各個Simulator,沒有出現已經連線到電腦的iphone4手機,在其他Project中明明有的,而且可以真機除錯,怎麼新建的工程沒有?後來才發現,我的iphone4版本未6.01,我而我所建的Project為6.1,因此手機不可用,解決辦法是: 單擊

iOS開發: 做測試 遇到的 bitcode 的問題

在做真機測試的時候  當我把所有的證書檔案 都設定好之後  執行報錯 : does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), o

iOS模擬器和除錯App的安裝檔案路徑問題

摘抄自:http://zhidao.baidu.com/question/1605787265227542067.html Xcode6釋出後,出現了很多的變動,功能性的變動,在這裡不進行過多的贅述,在WWDC上蘋果已經進行了講述,網上也有很多文章,這裡要介紹的是一些不太容

小胖說事31------iOS 編譯錯誤&quot;“XXX”的 iPod&quot; and run &quot;XXX&quot; again, or if &quot;XXX&quot; is still running

是不是 col ont lec bug div attach tracking 進程關閉 在真機上測試時用一會就出現例如以下信息,且應用掛掉。 Restore the connection to "“XXX”的 iPod" and run "XXX" again, o

Macaca 連接iOS問題

test ice can 解決方法 多個 ide and 導致 瀏覽器 1. 查看連接的iOS設備:idevice_ID -l 2. 開啟Macaca服務:Macaca server -port 4444 -verbose 3. 開始錄制:UIrecorder start

ios中Text組件出現多余邊框

模擬器 markdown 錯誤 出現問題 設置 尺寸 class .com 導致 問題 ios真機中Text組件出現多余邊框(模擬器不會出現,真機會出現該問題)。 原因 在ios啟動頁設置中,預設的尺寸要求與設置中圖片尺寸不符合導致屏幕精度計算出現問題(啟動屏分辨率錯誤設

9、如何在Xamarin中進行iOS調試和發布

開發者 雙擊 src quest alt 鑰匙串 發布 如何 xxxxx 本文主要引導用戶如何使用真機調試和編譯發布。 概述 使用前的準備: 1、一臺IPhone設備 或者IPad 都行看你自己 2、一臺Mac主機和搭建好對應的xamarin.

ios 簽名問題

ESS blog 問題 運行 ima 51cto type water ado 當你運行低版本寫的程序要真機運行時。會出現一些簽名問題。解決ios 真機簽名問題

Appium+Python3+iOS環境搭建

rip contain dev 設置 project prop xcode 連接 github Appium 是一個自動化測試開源工具,支持 iOS 平臺和 Android 平臺上的原生應用,web 應用和混合應用。 本次環境配置相關:macOS:10.13.4Appi

iOS命令(自動化測試)

獲取裝置的的UDID idevice_id --list # 顯示當前所連線裝置的 udid instruments -s devices # 列出所有裝置,包括真機、模擬器、mac ideviceinfo 可以在返回的資料中找到 udid idevice_id -l 蘋果手機

關於除錯提示“xxx is busy:Processing symbol files"和"xcode will continue when xxx is finished"

原文地址::https://www.jianshu.com/p/fdbe7ec1ec44   相關文章 1、Xcode真機除錯裝置連線一直繁忙狀態----https://blog.csdn.net/sily_13/article/details/52698907 2、XXX

iosbug, navigateTo多級跳轉以後,用navigateBack關閉多級顯示空白頁

- 當前 Bug 的表現(可附上截圖) ios下navigateTo多級跳轉以後,用navigateBack關閉多級顯示空白頁 - 預期表現 正常情況下返回螢幕應該顯示“歡迎使用程式碼片段,可在控制檯檢視程式碼片段的說明和文件”,返回時候應該也有值 - 復現路徑

reactNative ios測試的時候,死活都不行 Signing for "XXXXXX" requires a development team. Select a development

開啟之前的程式,如果沒有證書是這樣的: 執行報錯:Signing for "XXXXXX" requires a development team. Select a development team in the project editor. Code signing

快速解決低版本Xcode不支援高版本的iOS除錯問題

剛升級的iOS11.0,Xcode執行出現這個錯誤: This iPhone 6s Plus is running iOS 11.0 (15A5278f), which may not be sup

【開發工具】iOS除錯抓包工具Charles安裝及使用

支援原創,更多內容請關注: iOS開發過程中,經常需要用真機來測試和後臺的網路資料傳輸,需要一個趁手的抓包工具。在Windows下用的fidder很好用,但是由於它是在.Net框架之下的,所以在Mac下需要有一個替代品,就是Charles。 一、安裝 二、

react-native在Anroid執行可能會遇到白屏的情況解決辦法

為什麼在真機上執行react-native應用時開啟的應用是白屏?測試環境:MIUI7安裝應用:MyProject首先,開啟手機設定應用,點選進入設定介面。接下來,在設定應用中,選擇“其他應用管理”選項。接下來,開啟選擇已經安裝的應用,選擇“MyProject”。接下來,點選

Android測試ADB報錯解決方案

異常程式碼: Unable to create Debug Bridge: Unable to start adb server: error: could not install *smartso