1. 程式人生 > >關於從android平臺porting到iOS手機上遇到的JIT錯誤~

關於從android平臺porting到iOS手機上遇到的JIT錯誤~

iOS手機執行app時出現的錯誤訊息:
ExecutionEngineException: Attempting to JIT compile method '...' while running with --aot-only.
因為在iOS平臺, Mono是以Full AOT模式執行, 但iOS禁止JIT編譯, 於是引發了這個異常
參考資料:
http://www.mono-project.com/docs/advanced/aot/
http://www.lai18.com/content/8793318.html

這個錯誤會發生在執行了某些function之後:
Marshal.StructureToPtr();
Marshal.PtrToStructure();
但使用這些function時不是一定會發生錯誤

如何避免這個錯誤:
1.不能用class, 只能用struct
2.不能用array
如果struct內需要用array, 則要手動把struct轉成byte array, byte array轉成struct

協定struct宣告要點
1.Struct要序列化並控制unmanaged記憶體的配置
[Serializable]
[StructLayout(LayoutKind.Sequential, Pack = 1)]
2.字串要使用string來操作
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_PLAYER_NAME_LEN)]
public string name;
3.array宣告方式
[MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_ITEM_COUNT)]
public UINT[] count;

協定轉換方式:
1.使用Marshal自動轉換
  收協定使用Marshal.PtrToStructure
  送協定使用Marshal.StructureToPtr
2.手動轉換
  收協定使用Marshal.PtrToStructure、BitConverter
  送協定使用Marshal.StructureToPtr、Buffer.BlockCopy、BitConverter.GetBytes

相關推薦

關於android平臺porting到iOS手機上遇到的JIT錯誤~

iOS手機執行app時出現的錯誤訊息: ExecutionEngineException: Attempting to JIT compile method '...' while running with --aot-only. 因為在iOS平臺, Mono是以Full

Android程式如何執行在自己的Android機上

我用的是魅族手機pro7,首先我們要用資料線把手機連線到電腦上,然後進入設定,然後進入到開發者選項。 開發者選項你會發現找不到,不要著急,是因為他已經給隱藏起來了。 開啟的方法是,我們找到關於手機,會有一個Android版本,你就連續的點選,就會出現開發者選項。然後進入輔助功能,你就會看

編譯且移植FFTW3到Android機上(1)

本文主要對如何將FFTW3編譯且移植到Android App上進行介紹,同時對各FFTW提供的一些快速傅立葉變換的方法在手機進行效能測試,總結出使用FFTW3進行小規模傅立葉變換的最佳方式。 文章重點內容有:FFTW configure;編譯so庫;ARM NEON優化;float加速;多執行緒 第1部分

Android studio2.3來了,也帶來不少坑:gradle編譯不通過,無法執行到小米機上。。。

Android studio 更新到2.3版本,隨之更新下來的gradle版本是3.2的,升級完之後一直處於Refreshing Gradle Project狀態,因為android studio 2.3允許最低的gradle最低版本為3.3 。所以自己手動下載了gradl

Android平臺app打包時遇到的問題:Could not resolve com.android.tools.build:gradle:3.0.0.說起

一、照例,先說一下上下文 最近進行App的打包,平臺為IOS和Android,分別都遇到了非常多的坑,後續會整理一下一起貼出來與大家交流。 目前先說一說剛剛解決的在Android平臺下打包遇到的一個超級大坑。 二、用到的環境 Android

android平臺獲取手機IMSI,IMEI ,序列號,和 機號的方法

/** * 獲取android當前可用記憶體大小 */ private String getAvailMemory() {// 獲取android當前可用記憶體大小 ActivityManager am = (ActivityMa

Android折騰記——Linux on AndroidAndroid機上跑Linux教程

前言 手頭有淘汰的Android手機,想來將這個手機做伺服器使用,收集資料發現了一個Linux on Android的專案,可以直接將常見的Linux發行版安裝到手機上Ubuntu、Fedora 等等。查閱不少資料,都有很多缺漏,折騰了很久。現將安裝過程整理一下。 先

使用cors解決跨域,ionic打包到android機上發post請求報403錯誤

如題,百度了一圈也沒有找到答案,最後翻了個牆,最終找到了外國友人的答案: My backend is using Tomcat, one of the tomcat filters is designed for handle CORS request, it named

Android adb shell讀取機上的QQ軟體的sqlite資料庫

一.查詢QQ軟體下建立了哪些資料庫    1.開啟adb shell    2.進入軟體安裝包下資料庫資料夾       3.查詢有哪些資料庫檔案 或者: 4.開啟webview.db 發現無法開啟,報錯誤  sqlite3: not found 二.解決  sq

遊戲發展史看遊折扣平臺選擇哪個好

打字 str 空間 chris 技術分享 力度 不執行 tor 聯系 先給出結論,手遊折扣平臺,判斷是否優秀,第一是安全,第二還是安全,第三還是安全。 手遊折扣中心 (官網下載),是遊戲方集成充值代碼,是遊戲方自己認可的平臺,帳號絕對安全,不會出現小平臺的盜號,封號問

kotlin, 一種新的android平臺一級開發語言

程序 16px 語法 jvm ava lin 使用 ide 擁有 最近看到一則科技新聞, 大致內容是google將kotlin語言作為android應用開發的一級語言, 與java並駕齊驅, 這是一個開發界的大事件大新聞, 連google的親兒子go語言也沒有這

ionic App 解決android端在真機上 tab處於頂部的Bug

url stat log vid ott outer navbar config 包安裝 在app.js 頁面中添加以下代碼 .config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider)

安卓機上的python運行環境-qpython

clu log bcs var arr lec yun upa ros %E7%AC%AC%E4%BA%8C%E5%B1%8APHP%E5%85%A8%E7%90%83%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E4%BC%9A%E5%90%A

Cocos2d-x v3.0正式版嘗鮮體驗【2】 Android平臺移植

生成 ble ack nts 做的 導入 eclipse so文件 腳本 今天沒事又嘗試了下3.0正式版關於Android平臺的移植,把新建的項目移植了下。過程僅用了十分鐘左右,什麽概念?!好吧,事實上我想說,這個版本號真的移植非常輕松啊,只是還沒加上其它東西,只是就眼

Android源碼的角度分析Binder機制

androidIPC為了弄懂IPC的來龍去脈,我將從以下三個方面為大家來講解,希望對大家理解IPC會有幫助什麽是IPCIPC是Inter Process Communication的縮寫,其意思就是進程間的通信,也就是兩個進程之間的通信過程。我們都知道在Android系統中,每個應用都運行在一個進程上,具有自

oppo機上pdf文件怎麽打開編輯呢

其實好多朋友不知道,除了ios系統的,我們用的手機基本都是安卓版本的啊!安卓的系統安裝下載基本都一致,就看你手機中的應用軟件在哪個部位了。那麽手機中pdf文件我們怎麽去打開編輯呢?下面就讓小編逐步解釋! 輕快PDF閱讀器是一款體積小、啟動速度快、閱讀效果最好的PDF閱讀軟件。適用於安卓設備,支持隨時隨地

android平臺打印C語言日誌

as2 使用 pri 2.0 tag bug logs .com 3-9 在android平臺打印C語言日誌 1、操作平臺:AS2.0 2、步驟如下: 在C代碼中添加如下代碼: #define LOG_TAG "我的C語言日誌:" #define LOGD(...) _

大神告訴你機上pdf文件怎麽打開

今天我們的生活在日漸變化,每一天感覺都是不同的。在快速發展的今天,越來越多的人以手機為中心。不管什麽都想要在手機上完成,有時候手機也不是萬能的,有些格式的文件經常會打不開,那麽有沒有辦法解決呢?當然有的,下面讓我來為大家分享一下! 輕快PDF閱讀器是一款非常便捷的PDF閱讀軟件,它具有個性化的閱讀模式,

Android平臺Camera實時濾鏡實現方法探討(十一)--實時美顏濾鏡

.net 兩個 其它 強人 突出 pad eight 地址 模式 上一章完畢了對圖片的磨皮處理。經過簡單算法流程優化,能夠達到非常快的速度。可是不能用於實時美顏。經實驗,若採用僅僅處理Y信號的方案。半徑極限大約是5-10,超過10則明顯感受到卡頓。但對於1920X1

Android平臺錄音音量計的實現

type 源代碼 cti ddc res javascrip his 顯示 中間 今天博主要給大家分享的是怎樣在Android平臺上實現錄音時的音量指示計。開門見山。先來看一張Demo的效果圖: 如上圖所看到的,兩個button各自是開始錄音和停止