免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Unity調(diào)用安卓原生:JNI橋接、aar集成與避坑指南

Unity調(diào)用安卓原生:JNI橋接、aar集成與避坑指南 簡(jiǎn)介一份面向Unity開(kāi)發(fā)者的原生安卓調(diào)用入門(mén)工具集圍繞UnityActivity、UnityAppContext、PackageManager、RunOnUIThread等核心方法覆蓋Toast、Log、Java與C#字符串互轉(zhuǎn)等基礎(chǔ)交互并整合網(wǎng)上常用方式與自制封裝提供獲取App列表、判斷服務(wù)/應(yīng)用運(yùn)行狀態(tài)、打開(kāi)/安裝/卸載App、發(fā)送廣播以及獲取WiFi狀態(tài)、安卓版本、原生類(lèi)型ID、內(nèi)置SD卡路徑等系統(tǒng)信息。壓縮包共45個(gè)文件以cs腳本、asset場(chǎng)景資源、meta配置文件為主另有unity場(chǎng)景、xml配置、txt說(shuō)明和jar包整體僅48KB結(jié)構(gòu)清晰便于按需取用。目前已有743人學(xué)習(xí)瀏覽。借助該工具集可減少原生插件開(kāi)發(fā)的前期摸索直接復(fù)用現(xiàn)成方法快速集成到自己的Unity項(xiàng)目中同時(shí)可作為入門(mén)參考理解Unity與安卓原生交互的常見(jiàn)調(diào)用方式與封裝思路。1. Unity調(diào)用原生安卓這件事值得先搞清邊界再動(dòng)手很多開(kāi)發(fā)者第一次在 Unity 里遇到需要調(diào)用安卓原生能力時(shí)想的都是趕緊搜一段 AndroidJavaClass(android.widget.Toast) 的示例代碼貼上去。某開(kāi)發(fā)者在做一個(gè)跨平臺(tái)工具時(shí)也這么干過(guò)結(jié)果項(xiàng)目能編譯通過(guò)真機(jī)上一跑就崩最終發(fā)現(xiàn)是 Activity 引用為 null。Unity 調(diào)用原生安卓不是一句用 AndroidJavaClass 就行那么輕巧它涉及 JNI 橋接、Activity 生命周期、構(gòu)建產(chǎn)物aar/jar如何進(jìn)入最終 APK 等一系列前提。這份工具集適合已經(jīng)在 Unity 里做過(guò)基礎(chǔ)功能、卻卡在原生互通這一步的從業(yè)者它能幫你快速搭出可運(yùn)行的調(diào)用鏈路也把最容易踩的坑預(yù)先標(biāo)出來(lái)。2. 橋接原理與工程準(zhǔn)備JNI 鏈路和三個(gè)前置配置2.1 Unity 與安卓之間那層 JNIAndroidJavaClass 到底做了什么Unity 在安卓側(cè)不是簡(jiǎn)單地反射調(diào)用。每個(gè) AndroidJavaClass / AndroidJavaObject 實(shí)例背后都對(duì)應(yīng)一個(gè) JNI 全局引用。JNI 是 Java 與 C/C 之間的橋梁而 Unity 的 C# 層通過(guò)一組內(nèi)部封裝的 JNI 接口把類(lèi)型信息、方法簽名、參數(shù)值一層層傳到 Java 虛擬機(jī)里。當(dāng)一個(gè) C# 腳本寫(xiě)下AndroidJavaClass jc new AndroidJavaClass(com.unity3d.player.UnityPlayer); AndroidJavaObject activity jc.GetStaticAndroidJavaObject(currentActivity);這里實(shí)際發(fā)生了兩件事第一JNI 層根據(jù)類(lèi)名com.unity3d.player.UnityPlayer去已加載的類(lèi)里查找第二讀取靜態(tài)字段 currentActivity 并返回一個(gè) JNI 引用。這個(gè)引用在 C# 側(cè)被包裝成 AndroidJavaObject底層指針指向 Java 堆上的 Activity 實(shí)例。理解這一點(diǎn)很重要如果你持有這個(gè)引用而 Activity 已經(jīng)被系統(tǒng)回收那后續(xù)任何 Call 都可能拋異常。從調(diào)用模型上看Unity 側(cè)所有對(duì) Java 的調(diào)用都是單向、同步的除非你主動(dòng)開(kāi)線程。也就是說(shuō)C# 調(diào)用 Java 方法后線程會(huì)卡在 JNI 調(diào)用點(diǎn)上直到 Java 方法返回。這給后續(xù)的性能優(yōu)化留下了一個(gè)課題第5章會(huì)專(zhuān)門(mén)講。2.2 工程側(cè)三個(gè)前置配置SDK、Player Settings 和 Plugins/Android 目錄在我經(jīng)手的幾個(gè) Unity安卓互通項(xiàng)目里大部分跑不通的第一原因不是代碼寫(xiě)錯(cuò)而是工程配置不完整。需要先整理好三件事。第一Android SDK 路徑。Unity 的 Preferences 里 External Tools 面板需要正確指向 SDK 位置。如果你同時(shí)裝了 Android StudioSDK 路徑一般在 Android/Sdk 目錄。如果路徑不對(duì)Unity 打包時(shí)會(huì)直接報(bào)SDK not found這個(gè)一般難不倒人。第二Player Settings。打開(kāi) Edit Project Settings Player切換到 Android 標(biāo)簽頁(yè)。重點(diǎn)檢查三項(xiàng)Package Name包名必須與之后 Android 工程里要合并的 manifest 包名兼容避免沖突。Minimum API LevelUnity 會(huì)以此為準(zhǔn)來(lái)決定哪些 API 可直接調(diào)用。設(shè)置太低Java 側(cè)一些新接口會(huì)因 NoSuchMethodError 掛掉設(shè)置太高又會(huì)壓縮可覆蓋的機(jī)型范圍。Scripting BackendIL2CPP 和 Mono 在跨語(yǔ)言調(diào)用上的行為其實(shí)不一樣。IL2CPP 對(duì) AOT 的限制更嚴(yán)格如果后續(xù)要在 IL2CPP 下做裁剪strip engine code某些反射調(diào)用會(huì)被裁掉需要加 link.xml。這點(diǎn)容易被忽略后面避坑章節(jié)會(huì)有一個(gè)專(zhuān)門(mén)案例。第三Plugins/Android 目錄。Unity 在構(gòu)建 APK/AAB 時(shí)會(huì)把這個(gè)目錄下的內(nèi)容合并進(jìn)最終工程。最常見(jiàn)的路徑是 Assets/Plugins/Android。要注意的是這個(gè)目錄里如果同時(shí)存在同名不同版本的文件比如兩個(gè)版本的 support 庫(kù)最終行為完全取決于 Unity 內(nèi)部的合并順序這在后面也會(huì)細(xì)說(shuō)。2.3 最小調(diào)用鏈路從 Unity 發(fā)一條 Toast 驗(yàn)證通路工程配置完成后先別急著寫(xiě)業(yè)務(wù)代碼。我用一條最簡(jiǎn)單的 Toast 驗(yàn)證整條通路。創(chuàng)建一個(gè) C# 腳本掛在場(chǎng)景主物體上using UnityEngine; public class NativeBridge : MonoBehaviour { void Start() { ShowToast(Hello from Unity); } public void ShowToast(string msg) { AndroidJavaClass unityPlayer new AndroidJavaClass(com.unity3d.player.UnityPlayer); AndroidJavaObject currentActivity unityPlayer.GetStaticAndroidJavaObject(currentActivity); AndroidJavaClass toastClass new AndroidJavaClass(android.widget.Toast); // 最后一個(gè)參數(shù) 0 表示 LENGTH_SHORT1 表示 LENGTH_LONG AndroidJavaObject toast toastClass.CallStaticAndroidJavaObject(makeText, currentActivity, msg, 0); toast.Call(show); } }這里解釋一下關(guān)鍵點(diǎn)com.unity3d.player.UnityPlayer 是 Unity 在安卓側(cè)的核心類(lèi)currentActivity 這個(gè)靜態(tài)字段在任何標(biāo)準(zhǔn) Unity Activity 生命周期內(nèi)都可訪問(wèn)。makeText 是 Toast 的靜態(tài)方法接收三個(gè)參數(shù)Context、CharSequence、duration。C# 傳字符串、int 時(shí)JNI 層會(huì)自動(dòng)映射到對(duì)應(yīng)的 Java 類(lèi)型。toast.Call(show) 調(diào)用的是實(shí)例方法返回值是 void所以直接 Call 即可。代碼是通了但有個(gè)細(xì)節(jié)必須說(shuō)不要在任何回調(diào)、協(xié)程恢復(fù)、或者事件系統(tǒng)里反復(fù) new AndroidJavaClass。這是因?yàn)槊?new 一次JNI 全局引用表里就會(huì)多一條引用長(zhǎng)期運(yùn)行可能把引用表?yè)伪_@個(gè)坑很隱蔽實(shí)際項(xiàng)目里遇到過(guò)一次排查了一整天才定位到。3. 三種集成方式與參數(shù)透?jìng)鲝姆瓷湔{(diào)用到導(dǎo)出 aar3.1 方式一運(yùn)行時(shí)反射——適合輕量調(diào)用不碰 Android Studio如果你只是調(diào)用系統(tǒng) APIToast、振動(dòng)、剪貼板或者調(diào)用一個(gè)不常改動(dòng)的第三方 Java 靜態(tài)方法運(yùn)行時(shí)反射方式最省事。它不需要你在 Android Studio 里建工程也不需要導(dǎo)出 aar直接把類(lèi)名、方法名、參數(shù)寫(xiě)在 C# 里。比如讀取設(shè)備 Android IDpublic string GetAndroidId() { AndroidJavaClass unityPlayer new AndroidJavaClass(com.unity3d.player.UnityPlayer); AndroidJavaObject activity unityPlayer.GetStaticAndroidJavaObject(currentActivity); AndroidJavaObject resolver activity.CallAndroidJavaObject(getContentResolver); AndroidJavaClass settingsSecure new AndroidJavaClass(android.provider.Settings$Secure); // 第二個(gè)參數(shù)是默認(rèn)值當(dāng)系統(tǒng)未開(kāi)啟時(shí)返回的兜底字符串 string androidId settingsSecure.CallStaticstring(getString, resolver, android_id); return androidId; }這種方式的好處是靈活C# 改完直接跑。壞處也明顯沒(méi)有任何編譯期檢查方法名拼錯(cuò)、參數(shù)類(lèi)型傳錯(cuò)都得運(yùn)行時(shí)報(bào)異常而且異常信息被 JNI 層包了一層Logcat 里往往是 UnsatisfiedLinkError 或 NoSuchMethodError對(duì)新人來(lái)說(shuō)排查成本高。所以我一般會(huì)在方法入口包一層 try-catch把異常信息帶出來(lái)try { // ... 調(diào)用邏輯 } catch (System.Exception e) { Debug.LogError($[NativeBridge] JNI 調(diào)用失敗: {e.Message}); }這樣至少能看到是類(lèi)找不到、方法找不到還是參數(shù)類(lèi)型不匹配。3.2 方式二導(dǎo)出 aar——功能復(fù)雜時(shí)更穩(wěn)的工程化路徑當(dāng)你的原生代碼里開(kāi)始有多個(gè)類(lèi)、有 Activity 跳轉(zhuǎn)、有回調(diào)接口的時(shí)候運(yùn)行時(shí)反射方式會(huì)變得很脆每改一次 Java 代碼都要重新打包、替換文件。這個(gè)階段就要轉(zhuǎn)到 Android Library 工程上去。常見(jiàn)做法是在 Android Studio 里新建一個(gè) Library Module然后編寫(xiě)原生邏輯。我用一個(gè)最小示例模塊名比如叫 nativebridgepackage com.example.nativebridge; import android.content.Context; import android.widget.Toast; public class Bridge { private Context context; public Bridge(Context ctx) { this.context ctx.getApplicationContext(); } public void show(String message) { Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); } public int add(int a, int b) { return a b; } }模塊的 build.gradle 需要做兩處關(guān)鍵配置android { defaultConfig { // 這兩項(xiàng)必須和 Unity 的 Player Settings 匹配或更低 minSdkVersion 22 targetSdkVersion 34 } }導(dǎo)出的 aar 文件位置一般在 build/outputs/aar/ 下。把這個(gè) aar 復(fù)制到 Unity 工程的 Assets/Plugins/Android 目錄后在 C# 側(cè)這樣調(diào)用public class NativeBridge : MonoBehaviour { private AndroidJavaObject bridgeObj; void Start() { AndroidJavaClass unityPlayer new AndroidJavaClass(com.unity3d.player.UnityPlayer); AndroidJavaObject activity unityPlayer.GetStaticAndroidJavaObject(currentActivity); // 構(gòu)造 Bridge 實(shí)例傳入當(dāng)前 Activity 的 ApplicationContext bridgeObj new AndroidJavaObject(com.example.nativebridge.Bridge, activity); bridgeObj.Call(show, bridge ready); int sum bridgeObj.Callint(add, 3, 5); Debug.Log([NativeBridge] sum sum); } void OnDestroy() { // 顯式釋放 JNI 引用長(zhǎng)期項(xiàng)目尤其重要 bridgeObj?.Dispose(); } }這段代碼里有兩個(gè)值得說(shuō)的點(diǎn)。第一new AndroidJavaObject(com.example.nativebridge.Bridge, activity) 的第二個(gè)參數(shù)會(huì)被 JNI 當(dāng)作構(gòu)造函數(shù)的第一個(gè)參數(shù)。因?yàn)?Bridge 的構(gòu)造器接收 Context這里傳 activity 正好匹配。如果構(gòu)造函數(shù)是重載的JNI 會(huì)根據(jù)傳入?yún)?shù)類(lèi)型去匹配簽名匹配不到會(huì)拋 NoSuchMethodError。第二OnDestroy 里做 Dispose。不看 GC 的情況下C# 側(cè)的 AndroidJavaObject 回收是不確定的顯式 Dispose 能防止 JNI 引用表泄漏。3.3 數(shù)據(jù)類(lèi)型映射表與帶參調(diào)用示例跨語(yǔ)言調(diào)用最容易出錯(cuò)的是類(lèi)型映射。下表是我從項(xiàng)目里總結(jié)出來(lái)的一份常用映射按C# - Java方向C# 側(cè)類(lèi)型Java 側(cè)接收類(lèi)型說(shuō)明stringString自動(dòng)轉(zhuǎn)換為 UTF-16 序列注意不要傳 nullintint32 位整型longlong64 位整型被 JNI 當(dāng)作 jlongfloatfloat32 位浮點(diǎn)doubledouble64 位浮點(diǎn)boolbooleanJNI 層用 z 表示AndroidJavaObject任意對(duì)象傳遞的是 JNI 引用不是拷貝有一個(gè)隱蔽的坑C# 的 string 在傳給 Java 時(shí)如果值是 nullJNI 層有時(shí)候會(huì)拋 NullPointerException 而不是友好提示。我在給某個(gè)功能傳剪切板文案時(shí)翻過(guò)一次車(chē)文案是空的Java 側(cè)收到的直接是 NPE。從那以后所有跨層字符串參數(shù)我都會(huì)先做空串兜底。再看一個(gè)帶數(shù)組參數(shù)的例子。假設(shè) Java 側(cè)有一個(gè)方法接收 int[] 和 String[]public void processArray(int[] values, String[] names) { // 業(yè)務(wù)邏輯 }C# 側(cè)調(diào)用路徑是int[] values { 10, 20, 30 }; string[] names { alpha, beta }; bridgeObj.Call(processArray, values, names);注意這里不能傳 List 或 List JNI 不會(huì)幫你做集合到數(shù)組的轉(zhuǎn)換。你需要手動(dòng)轉(zhuǎn)一次Liststring nameList new Liststring { alpha, beta }; bridgeObj.Call(processArray, values, nameList.ToArray());3.4 從安卓側(cè)拿返回值同步調(diào)用與異常捕獲前面 add 的例子已經(jīng)展示了 Call 同步拿返回值。這里的同步要再次強(qiáng)調(diào)Unity 的調(diào)用線程會(huì)阻塞直到 Java 方法執(zhí)行完。如果 Java 方法里有耗時(shí)操作比如網(wǎng)絡(luò)請(qǐng)求Unity 的 Update 循環(huán)會(huì)卡住表現(xiàn)就是游戲畫(huà)面掉幀甚至看起來(lái)像卡死。情況再極端一點(diǎn)如果 Java 方法內(nèi)部真正做的是阻塞在主線程上的東西而 Unity 側(cè)恰好是在主線程調(diào)用那連 Activity 的 UI 事件都處理不了最終可能觸發(fā) ANR。處理方式是讓 Java 側(cè)把耗時(shí)操作放到子線程或者 C# 側(cè)用異步包裝。C# 側(cè)異步包裝的一個(gè)簡(jiǎn)單方式是用協(xié)程輪詢(xún)結(jié)果。Java 側(cè)先啟動(dòng)任務(wù)C# 側(cè)每幀檢查一個(gè)是否完成的標(biāo)記IEnumerator WaitForNativeResult() { bool done bridgeObj.Callbool(isTaskDone); while (!done) { yield return null; done bridgeObj.Callbool(isTaskDone); } string result bridgeObj.Callstring(getResult); Debug.Log([NativeBridge] async result: result); }這段輪詢(xún)代碼適合低頻任務(wù)但如果每幀檢查頻繁JNI 調(diào)用開(kāi)銷(xiāo)會(huì)累積。更高效的做法是讓 Java 側(cè)在任務(wù)完成時(shí)主動(dòng)回調(diào) Unity這個(gè)到第5章展開(kāi)。4. 高頻踩坑與排查五個(gè)典型問(wèn)題的現(xiàn)象和根因這一章是我實(shí)際調(diào)試中遇到最多的問(wèn)題。每條都按現(xiàn)象 - 原因 - 解決來(lái)寫(xiě)讀的時(shí)候可以對(duì)照自己的項(xiàng)目逐條排除。4.1 現(xiàn)象調(diào)用 Java 方法直接閃退Logcat 提示 currentActivity 為 null原因UnityPlayer 的 currentActivity 靜態(tài)字段會(huì)在 Activity 的早期生命周期階段未被賦值。如果調(diào)用發(fā)生在 Application.onCreate比如你在自定義 Application 里初始化 SDK或者發(fā)生在 Activity.onDestroy 之后那拿到的引用就是 null。JNI 把 null 傳給 Java 方法時(shí)很多原生方法會(huì)直接拋空指針。解決把初始化時(shí)機(jī)推遲到第一個(gè)場(chǎng)景加載完成后或者緩存當(dāng)前 activity 之后手動(dòng)判空if (currentActivity null) { Debug.LogError([NativeBridge] currentActivity 為空檢查調(diào)用時(shí)機(jī)); return; }另外如果你的項(xiàng)目里啟用了自定義的 Intent Filter 或者使用了別的安卓組件currentActivity 在不同進(jìn)程里可能不一致這時(shí)候不要依賴(lài)它做操作改成傳 Application Context 更穩(wěn)。4.2 現(xiàn)象aar 文件放在 Assets/Plugins/Android 下打包出來(lái)類(lèi)找不到原因這類(lèi)問(wèn)題我遇到三種情況。第一aar 里的 AndroidManifest.xml 與 Unity 主工程 manifest 沖突導(dǎo)致整個(gè) aar 沒(méi)有被打進(jìn)最終包第二aar 的 minSdkVersion 高過(guò) Unity 項(xiàng)目的 Minimum API LevelGradle 合并時(shí)直接跳過(guò)第三Unity 版本太老2019 之前對(duì) aar 原生產(chǎn)物的支持有缺陷需要改成導(dǎo)出 Project 再通過(guò) Android Studio 集成。解決先檢查 aar 是否存在用壓縮工具打開(kāi)確認(rèn)里面 classes.jar 是否包含你的類(lèi)。再在 Player Settings 里調(diào)高 Minimum API Level 到至少和 aar 持平。如果還不行用 Unity 的 Export Project 導(dǎo)出 Gradle 工程然后在 Android Studio 里手動(dòng)添加 aar 依賴(lài)看 Android Studio 的 Gradle 面板輸出會(huì)更明確。4.3 現(xiàn)象從 Java 子線程調(diào)用 UnitySendMessageUnity 側(cè)偶爾收到、偶爾崩潰原因UnitySendMessage 這個(gè)接口在部分版本下要求必須從 Unity 主線程GL 線程調(diào)用。Java 子線程直接調(diào)時(shí)如果正好趕上 Unity 渲染管線切換會(huì)觸發(fā)一個(gè)未定義行為表現(xiàn)就是時(shí)好時(shí)壞。解決Java 側(cè)不要在子線程直接調(diào)而是先用 Handler 把回調(diào) post 到主線程再在主線程里調(diào)用 UnitySendMessageHandler mainHandler new Handler(Looper.getMainLooper()); mainHandler.post(new Runnable() { Override public void run() { UnityPlayer.UnitySendMessage(BridgeObject, OnNativeResult, done); } });這段代碼把真正調(diào)用 UnitySendMessage 的時(shí)機(jī)鎖定在安卓主線程規(guī)避了跨線程同步問(wèn)題。4.4 現(xiàn)象C# 傳 longJava 方法簽名是 int方法能調(diào)到但參數(shù)值不對(duì)原因JNI 的參數(shù)匹配是按照方法簽名嚴(yán)格來(lái)的C# 的 long 會(huì)映射成 Java 的 long而 Java 的 int 需要的是 C# 的 int兩者簽名的類(lèi)型描述符不同本來(lái)應(yīng)該拋 NoSuchMethodError。但某些 API特別是系統(tǒng) API可能有重載JNI 匹配到了另一個(gè)重載參數(shù)被靜默截?cái)?。表現(xiàn)就是代碼能跑結(jié)果錯(cuò)得離譜。解決嚴(yán)格按第3章的映射表來(lái)。不確定 Java 方法簽名時(shí)用 javap -s 查看真實(shí)簽名然后回到 C# 側(cè)比對(duì)。再補(bǔ)充一條這個(gè)方法在編譯時(shí)不會(huì)報(bào)錯(cuò)因?yàn)?AndroidJavaObject.Call 的泛型參數(shù)只決定了返回值的轉(zhuǎn)換不決定參數(shù)匹配。很多人在這一步翻車(chē)最后只能用日志排查。4.5 現(xiàn)象Release 構(gòu)建在真機(jī)上跑報(bào) NoClassDefFoundErrorDebug 構(gòu)建正常原因這是混淆或裁剪把類(lèi)丟了。兩個(gè)方向R8/ProGuard 把 Java 側(cè)類(lèi)名混淆了Unity 側(cè)再用反射查找原始類(lèi)名自然找不到另一個(gè)是 IL2CPP 的 Managed DLL 裁剪把 Unity 側(cè)調(diào)用 JNI 的 C# 類(lèi)裁掉了Unity 側(cè)代碼直接不存在。解決如果是 Android 側(cè)混淆在 proguard-rules.pro 里加保留規(guī)則-keep class com.example.nativebridge.** { *; }如果是 IL2CPP 裁剪在 Unity 里添加 link.xml保留包含 JNI 調(diào)用的程序集linker assembly fullnameAssembly-CSharp type fullnameNativeBridge preserveall / /assembly /linker這兩種處理方式在很多項(xiàng)目里是同時(shí)要做的缺一不可。5. 進(jìn)階把回調(diào)鏈路理順再做一次 JNI 調(diào)用瘦身5.1 用 UnitySendMessage 做雙向通信的完整閉環(huán)前面提到 Java 側(cè)要主動(dòng)通知 Unity 時(shí)用 UnitySendMessage。雙向通信在業(yè)務(wù)上往往是這樣閉環(huán)的Unity 發(fā)起一個(gè)請(qǐng)求Java 側(cè)在后臺(tái)執(zhí)行完成后回傳結(jié)果。Java 側(cè)關(guān)鍵代碼public void startAsyncWork(final String param) { new Thread(new Runnable() { Override public void run() { // 模擬耗時(shí) String result process(param); // 回調(diào)到 Unity 側(cè) runOnMainThread(new Runnable() { Override public void run() { UnityPlayer.UnitySendMessage(BridgeObject, OnNativeResult, result); } }); } }).start(); }Unity 側(cè)對(duì)應(yīng)接收方法public class BridgeObject : MonoBehaviour { void OnNativeResult(string json) { // 這里天然在主線程可以直接操作 Unity API ResultData data JsonUtility.FromJsonResultData(json); Debug.Log([NativeBridge] data.code data.message); } }注意 UnitySendMessage 的第一個(gè)參數(shù)是場(chǎng)景里的 GameObject 名稱(chēng)第二個(gè)是掛在它上面的組件里的方法名。GO 沒(méi)找到或者方法名不存在時(shí)Unity 只在 Logcat 里打一條 warning不會(huì)崩潰這也會(huì)讓問(wèn)題更難發(fā)現(xiàn)。我的習(xí)慣是在 Start 里顯式檢查一次if (FindObjectOfTypeBridgeObject() null) { Debug.LogError([NativeBridge] BridgeObject 不存在回調(diào)會(huì)靜默丟失); }5.2 高頻調(diào)用場(chǎng)景下的引用緩存與批量透?jìng)髯詈笠粋€(gè)貼士關(guān)于性能。高頻調(diào)用時(shí)別每幀 new AndroidJavaClass。把類(lèi)引用和實(shí)例引用緩存起來(lái)即可private static AndroidJavaClass sBridgeClass; private static AndroidJavaObject sBridgeObj; public static AndroidJavaObject GetBridge() { if (sBridgeObj null) { sBridgeClass new AndroidJavaClass(com.example.nativebridge.Bridge); // 初始化實(shí)例只做一次 } return sBridgeObj; }至于批量透?jìng)靼讯鄠€(gè)參數(shù)拼成 JSON 字符串給 Java 側(cè)解析可以把多次 JNI 調(diào)用合并成一次。我在某個(gè)模擬項(xiàng)目 X 里實(shí)踐過(guò)用 dispatch(json) 統(tǒng)一入口后原來(lái)每幀 20 次 JNI 調(diào)用降到 1 次。JNI 單次調(diào)用成本在微秒級(jí)一幀幾十次就會(huì)明顯吃掉主線程時(shí)間。從那個(gè)第一次跑 Toast 就閃退的項(xiàng)目到現(xiàn)在我每次接安卓原生功能都強(qiáng)制先走一遍最小鏈路驗(yàn)證再談業(yè)務(wù)擴(kuò)展。閾值設(shè)得很簡(jiǎn)單Toast 能彈出來(lái)通路就通了通路不通后面所有功能都等于白搭。這個(gè)習(xí)慣幫我省下過(guò)很多個(gè)下午。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
一起草性爱不卡视频| 九九偷拍网| 五月丁香婷婷激情澎湃四射| 丁香五月花婷婷开心| www.com久久久久久久久久久久久久久久久| 丁香五月AV| 日日干夜夜撸夜夜骑| 94干大香蕉| 六月综合婷婷开心伊人| 99热爱爱干干日| 色欲色香,www,com| 四川BBB搡BBB爽爽视频| 激情综合五月| 91碰碰碰| 99久久久久| 九九亚洲| 丁香五月成人| 丁香五月天.com| 五月丁香六月婷婷的女人| 丁香五月情色| www.激情| 天天爽在线视频| 久久一级免费黄色片| 无码人妻少妇色欲AV一区二区| 91偷拍视频| 色五月在线观看| 97深爱伊人综合| 六月婷婷综合| 九九热99re8热免费观看| 男人的天堂97| 色综合久久综合中文综合网| 婷婷的99视频网站| 婷婷午夜| 影音先锋xfplay资源男人网| 天天做天天双| 婷婷玉月丁香五月在线视频| 欧美久久久久久久久中文字幕| 丰满少妇猛烈A片免费看观看| 91性高潮久久久久久久久| 国产色网站| 色婷婷狠狠18| 激情第四色| 五月天六月婷婷| 六月五月婷婷| 天天色天天爱天天爱天天爱y| 六月丁香五月亭亭| 婷婷综合色五月天| 丁香六月激情综合| 色婷婷婷婷| 手机旧版看人妻1025| 五月丁香色| 日本颜色视频人人爱| 91wwmm导航| 丁香狠狠色婷婷久久无码视频| 99爱在线视频观看| 欧美六月| 日本欧美成人片AAAA| 激情开心五月天| 精品一二三区久久AAA片| 婷婷成人五月天成人文学| 激情五月婷婷五月| 九九婷婷激情综合网| 久久久婷婷五月天| 色五月婷婷91| 久久黄色免费视频| 五月婷婷天| 噜噜国产| 99精品网| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 噜一噜免费视频| 那里有AV网址| 99只有这里是精品| 丁香五月婷婷偷拍| 亚洲高清在线| 99九九免费精品| 超碰网站在线观看| 激情五月丁香综合蜜桃| 99精品大片| 亚洲色图五月丁香| 全部老头和老太XXXXX| 91九九九九九九| 国产AV不卡福利| 九九青青草成人| 伍月婷丁香婷| 色五月综合激情| 久久久久久人妻| 超碰a女人的天堂| 大香蕉伊人99| 久久精品99国产精品日本| 另类视频在线| 99色免费| 色五月婷婷少妇人妻| 怡红院院久久| 狠狠狠狠狠狠| 年轻的妺妺伦理HD中文| 日本丁香久在线| 超碰成人av| 婷婷五月天堂网| 人妻在线中文字幕久久| 外国碰视频网站97| 激情色五月天| 久久精彩综合视频| 五月丁香六月婷婷亚洲综合| 人妻内射视频| 久久色9| 情色婷婷五月天| 五月色婷婷在线观看| 婷婷综合成人五月天| 综合久久人妻| 激情网五月天| 午夜色婷婷| 五月激情开心婷婷| 超碰精品在线| 98热精品| 国产丁香五月天婷婷| 99秘 在线| 五月婷在线观看| 天天操天天干天天日| 婷婷中文综合网| 久久五月天视频| 丁香五月图片| 亚洲综合久| 大地9中文在线观看免费高清| 五月天丁香啪啪啪啪| 亚洲AV日韩无码| 婷婷五日b| 一本色道久久综合狠狠躁小说| 深爱综合网| 欧美色必爱| 思思热久久艹| 五月丁香综合激情| 内射在线CHINESE| 五月丁香无码| 丁香美女五月天婷婷| 亚洲第一综合| 91九色国产| 五月天激情网页| 天天干天天干天天干天天干天| tingtingcaobi| 久草天堂| 五月婷婷久久综合| 丁香视频| 色播五月| 在线91日韩| 丁香桃色综合网| 色综合久久44| 天天操天天曰天天射| 九九热再线九九视频免费在线观看 | 国产白丝在线一区| 老师把我爽高潮了免费A片| 这里只有精品日韩| 欧美成人A片AAA片在线播放 | 久久九九蜜| 色播五月网| 天堂久久性| 呦呦AV| 五月婷激情| 99色五月| 五月综合视频| 另类激情码| 26uuu亚洲精品国产| 精品夜夜澡人妻无码AV| 99re在线观看视频| 日本不卡高字幕在线2019| 婷婷五月天综合网| 婷婷91| 五月天婷婷色色首页| 国产精品色色色色| 99人人爽| 99久在线精品99re8| 大香伊人久色| 综合网五月天123| 狠狠色综合网| 夜夜夜叫天天天做| 五月婷婷六月丁香综合在线| 丁香婷婷免费| 日本婷婷激情四射中文字幕在线观看| 伊人狠狠操| 五月天婷婷综合网| 99re思思热这里| 国产古装妇女野外A片| 天天插综合在线| 伊人激情影院| 激情婷婷丁香色五月综合| 日本狠狠色| 九九热视频精品2| 深爱激情六月天| 色婷婷五月天激情| 国产午夜成人AV在线播放| 五月婷免费视频久久久| 日韩乱轮AV| 拳交大逼| 久久综合五月天| 欧美色色色色色色色| 任你擦免费视频| 99色视频| 五月丁香激情片| 激情小说在线视频| 97婷婷丁香五月| 久久艹 五月天| 天天色激情| 九九精品系列| 91超碰人人操| 五月天婷婷爱丁香中文字幕| 激情av网| 色情婷婷| 五月综合色播播丁香婷婷| 婷五月天| 丁香大香蕉| 伍月婷婷免费视频| 超碰在线资源| 狠狠爱综合| 成人欧美一区二区三区在线观看| 99操不停| www.激情| 啪啪日热| 综合久久久| 67194国产| 大地9中文在线观看免费高清| 色宗合久久五月婷婷| 99在线看视频| 五月激情偷拍| 人妻久久久久久久 | 日本视频不卡123区| 久狠日av| 桃色Av色哟哟| 热99一二三| 五月天久久婷婷| 怡红院99| 99ri视频在线播放| 97人人操人人插| 婷婷五月在线视频| 婷婷丁香五月欧美人| 综合九九久久| 7EzOBIhNq85TO| 婷婷五月天小说| 九九熱最新視頻| 美女婷婷激情亚洲| 久9视频| 婷婷色成人| 99日本在线| 亚洲九N| 天天插天天爱| 天天日夜夜草进麻麻的子宫| 日本超碰在线| 久久六月婷婷| 亚洲爆乳无码精品AAA片蜜桃| 熟女激情五月天| 丁香六月婷婷五月天| 丁香婷婷久| 久久五月天婷婷| 久久se 综合网| 婷婷丁香五月社区亚洲| 狠狠另类视频| EEUSS鲁片一区二区三区| 无码人妻电影| 激情五月天社区| 综合激情在线观看| 黄色激情五月天| 亚洲国产成人AV在线| 五月婷婷免费| 久草婷妨| 五月婷婷啪啪啪啪| 98色丁香五月婷婷综合网| 99爱在线视频观看| 色色色色色日韩午夜激情 | 丁香六月婷婷姐网| 丁香五月婷婷综合激情啪啪啪啪啪啪啪 | 婷婷亚洲丁香五月| 亚洲狠狠色丁香婷婷综合久久| 日本天天综合| 激情五月婷婷老师| 99久久五月婷婷| 丁香花五月天社区| 色婷婷综合影院| 久久玖玖综合| 99色婷婷视频| 天天婷婷天天| 91婷婷丁香五月亚洲| 天天操,夜夜骑| 九色成人AV在线| 婷婷丁香激情五月天色色| 色婷婷在线电影| 日韩综合久| 天天干,夜夜爽| 91色吧网| 天天日天天色| 亚洲精品va| 激情五月综合网| 欧美久久五月婷婷| 九九Y精品热播| 久久五月丁香| 亚洲婷婷在线播放十月| 搡BBBB搡BBB搡18 | 五月婷婷 激情五月| 伊人9草在线观看| 激情综合网五月婷婷| 丁香玖玖| AV中文在线| 激情都市五月天| 99热国产在线| 国产.亚洲.欧洲视频在线| 久久久久9| 国产人妻777人伦精品HD| 思思精品久久艹| 日韩 mm 不卡| 99ri精品| 深爱激情婷| 婷婷 伊人 久久| 欧美日韩一区二区三区四区| 99久久综合精品五月天| 色婷婷丁香综合中文字幕| 九九视频这里只有精品| 五月天婷婷社区久久综合| 精品久久9| 欧美五月丁香啪啪响视频| 色www久视频| 第五色婷婷| 99在线精品视频免费| 中日韩美欧成人一区二区精品在线| 色五月综合激情| AV在线免费网站| 国产精品a无线| 色五月在线观看| 久久综合激情| 91人人人人人人人| 五月天激情视频| 日本va欧美va欧美va| -91九色大屁股| 久草热久草在线视频| 99热这里只有精品16| 草草影院爱爱| 91夫妻网站九色| 欧美五月婷婷| 五月婷久久在线| 91人人网| 色色97丁香婷婷五月天| 在线播放中文字幕| 亚洲色夜| 99热在线免费| 色色婷五月天| 亚洲AV日韩无码| 日韩丰满少妇无码内射| 大香蕉天堂| 婷婷在线午夜| 成人片在线播放| 99视频日韩| 日韩色色视频| 五月天婷婷基地综合网| 五月婷婷开心丁香| 婷婷久久夜| 日本99在线| av操逼网| 可以看的av| 丁香六月婷婷综合| 色噜噜,噜噜色| 激情五婷网| 中文字幕在线视频播放| 91综合在线| 香焦网五月天| 成人开心五月天| 天天爽日日搞| 熟惀91九色在线| 久热99| 五月成人网站| 天天色天天色天天色天天色天天色| www九九热| 99视频在线看| 久久九九经典| 久久综合55| 亚洲综合激情五月久久| 五月天婷婷基地| 激情人妻综合| 99爱在线免费视频| 婷婷五月美女直播| 色五月婷激情| 九六五月天婷婷| 五月丁香美女| 色噜噜狠狠色综合AV兰草影视| 久久婷婷网址| 午夜激情四射影院| 色五月噜噜| 国产精品久久久久久久久久| 日韩婷婷| 久久九九网| 色久九| 精品人妻一区| 五月天亚洲综合网| 婷婷激情综合| 婷婷五月色激情欧美激情| www.99热. com这里只有精品| 777色婷婷爱五月| 久久九九综合| 五月天婷婷色色| 色欲九区| 婷婷的99视频网站| 久久婷婷精品| 99视频这里只有免费精品| 丁香九月综合| 欧美色五月| 另类小说色婷婷| 色情五月综合婷婷| 99ri视频在线播放| 91操碰| 国产91视频| www.91.com黄| 婷婷五月天电影网| 日本欧美成人片AAAA | 婷婷五月天激情综合婷婷五月天激情综合 | 97碰碰草| 狠狠色狠狠色综合日日91| 99视频免费播放| 狠狠干五月| chaopeng在线人人| 五月丁香啪。| 狠狠人妻色综合| 色婷婷www| 日本啪啪天堂| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 91人人网| 丁香五月婷婷亚洲人| 久久九九怡红院| 丁香色五月婷婷17C| 99视频色在线观看| 操逼福利视频| 婷婷婷婷色| 五月天婷婷社区| 2017人人操| 婷婷五月天AV| 精品国产乱码久久久久夜深人妻 | 色婷婷色五月另类综合| 色婷婷六月激情| 丁香五月天在线直播观看| 涩涩婷婷五月| 女婷久久| 26uuu国产色| 激情久久天天| 亚洲激情五月| 婷婷五月无码| 国产黄大片在线观看画质优化| 色婷婷丁香女女| 免费看欧美成人A片无码| 久热精品免费视频4| 亚洲精品444久久久久久| www热久久yy9| 日韩五月婷婷| 日韩视频99| 欧美人人操| 国产亚洲精品久久久久久豆腐| 五月天社区婷婷| 九月色婷婷综合| 91Chinese在线| 激情婷婷五月天伊人在线观看| 99热这里精| 色婷婷丁香五月在线观看| 亚洲婷婷91丁香| 五月天激情网站| 婷婷五月综合免费在线| 亚洲人成网亚洲欧洲无码久久| 玖操97| 色婷婷小说网| 另类少妇人与禽zOZZ0性伦| 99久热视频在线| 四月婷婷五月丁香| 丁香 婷婷五月| 丁婷婷五月天在线播放| 国产亚洲色婷婷久久99精品91| 婷婷色网址| 色婷婷www| 大香蕉院线| 97久久精品| 亚洲视频一区| 天天插天天插| 日本乱论99| 五月丁香色婷婷伊人| 天天狠狠六月婷丁香影院| 丁香五月婷婷基地| 久碰综合| 午夜爱爱爱成人| 久久婷婷综合国产| 五月婷婷丁香日韩在线| 九月色婷婷| 亚洲欧州色情在线观看| 天天色综网| 亚洲五月婷婷在线| 狠狠五月激情在线| 少妇人妻综合色6699| www天天爽| 五月婷婷片| 97热精品| 婷婷亚洲天堂| 丁香婷婷影院| 国产成人网站在线观看| 新99思思视频| 色婷丨日丨天丨综合久久| 停停五月丁香| 久操人妻| 久久99国产综合精品免费| 三年高清大片免费观看国语| 色色色色色日韩午夜激情 | 五月丁香啪啪激情| 人草人人| 五月丁香婷婷综合| 超碰免费人人肏| 超碰丁香五月| a在线观看| 五月天亚洲最大成人| 99思思热只有在这里看| 色欲婷婷五月天丁香| 99热精品在线播放| 丁香五月天91| 丁香五月天啪啪| 丁香五月成人在线| 成人av播放| 丁香五月性| 久久婷婷五月综合网| ′久久99一| 丁香六月婷婷缴情欧美| 成年人丁香五月| 五月天综合视频| 久久激丁香| 亚洲免费观看高清完整版AV线| 亚洲色涩视频| 国产婷婷五月色情综合| 精品人妻伦九区久久AAA片| 一起草aV| 天天干天天干天天干天天干天天干天天| 九九九九这里只有精品| 色啪网| AV六月丁香| 五月天激情综合首页| 夜丁香综合| 色五月激情| 五月天丁香欧美激情| 色色成人網| 人人爱摸视频| 久久五月婷综合| 色激情综合| 亚洲欧美999| 激情综合婷婷| 婷婷永久在线| 99热这里只有精品免费| 伊人婷婷大香蕉在线| 探花搜索结果 - 黄上黄| 欧美97p| 久久只有18视频| 96色婷婷| 人人操人av| 亚洲色综合| 色玖玖导航| 99er精品视频| 99欧美精品99日本精品| 欧美日韩AAAAA| 欧美激情综合色综合啪啪五月| 男人操女人高潮91视频| 色婷婷久久综合久色| 亚洲成人高清在线| 婷婷久久内射| 99视频在线观看网址| 超碰只有精品在线| 婷婷激情综合| 成人一区在线观看| 色色丁香婷婷综合| 久久这里在精品视频| 婷婷五月影院| 婷婷六月天亚州| 碰人人97| 国产精品成人AV在线| 玖玖综合网| 激情综合五| 97干婷婷五月天| 波多野结衣不卡AV| 天堂草在线观看| 超碰人人91| 欧美色婷婷| 性小说五月天| 中文字幕成人日韩| 五月婷网| 五月丁香婷婷婷婷综合网| 亞洲自怕| 9热精品| 五月天激情黄色小说在线观看| 99在线免费观看| 色五月成人网| 香蕉伊人综合| 久久怡红院| 五月婷婷丁香五月婷婷| 69久久99精品久久久久婷婷| 久操热| 婷婷五月天成人影片| 午夜日日| www.91色| 激情综合五| 免费无码毛片一区二区A片| 久热播这里只有精品| 伊人激情网| 婷婷五月天久久| 色婷婷综合中心| 婷婷五月a| 激情五月天在线视频| 天天综合天天玩夜夜玩天天玩夜夜玩 | 五月婷婷啪啪| 99色性爰网络| 538在线| 丁香亚洲色综合| 在线成人网址| 五月婷婷丁香六月在线| 久碰久操| 1024欧美看片| 啪啪啪大香蕉| 91九色欧美| 婷婷五月天少妇| www综合久久| 大香蕉伊人久久| 国产色色视频| 激情综合激情五月| 91人操| 丁香五月婷婷综合激情哟哟哟| 成人亚洲精品| 九九色综合视频| 五月丁香| 91人人妻人人操| 久久久久久久人妻| 丁香五月在线自慰| 五月婷婷丁香狠狠撸久久| 综合亚洲六月婷婷在线| 亚洲AV无码成人精品电影| 色综合99| 9久久久久| 丁香九月婷婷色| 深爱五月月天| 91人碰| 色婷婷伊人激情在线观看| 99热6精品| 无人精品在线视频| 99性爱无码| 久久xx| 高清国产AV| 久久久天堂国产精品女人| 爆乳熟妇一区二区三区爆乳| 色婷婷丁香| 9久视频| 色吊丝永久访问网址| 五月丁香婷婷伊人| 五月丁香综合网| 婷婷五月天影院| 久久久久人妻网址| www.夜夜.com| 综合网网欲色| 开心婷婷五月综合| 国产看真人毛片爱做A片| 97久久久久| 五月婷婷综合丁香视频| AV79| 五月丁香六月婷婷玖玖| 五月天婷婷色紫薇阁| 色九月婷婷综合| 色播五月综合网| 91a片爽| 51精品国自产在线| 久久久久久欧美精品se一二三四| 爱射综合| 色五月色图| 丁香五月色| 婷婷五月天播播| 99视频只有这里精品| 狠狠干狠狠干狠狠干狠狠干| 色婷婷婷婷成人网| 婷婷五月丁香综合激情小说| 激情五月激情综合俺也去婷婷小说| 91碰在线| 97色婷婷五月天| 五月丁香婷婷久久| 色婷婷成人网| YJLZZJLZZ亚洲乱熟无码| 日韩欧美老妇性视频91久久久| 综合久久首页| 欧美婷婷综合| 伊人影院久久网| 超碰在线caop| WW婷婷五月天com| 日曰躁夜夜躁2026| 五月丁香亭亭激情操逼网| 91精品久久久久久久久久| 少妇熟女视频一区二区三区| 成人无码髙潮喷水A片| 色婷婷影院| 亚洲AV影片在线观看| 婷婷D区| 日韩综合成人| 久热久69| 1024亚洲| 另类视屏| 丁香五月婷婷激情网| 国产韩日亚洲美州欧亚综合在线| 丁香五月综合高清在线| 激情五月婷婷视频| 果冻传媒A片一二三区| Www.久久| 亚洲AV无码影院| 日韩AV在线免费观看| 4438成人电影| 中文字幕av久久爽一区| 久热这里只有精品6官网亚洲| 婷婷五月天激情四射五月天激情| 色色色色色色色综合| 五月丁香AV、伊人业余、性色熟妇| 99综合99| 99热亚洲精品| 久久99网站| 97色色网| 五月天激情日色在线| site:minyis.com| 99精品久久久久久久婷婷久久| 丁香激情综合| 色婷丁香| 国产亚洲99久久精品熟| 香蕉久久国产av一区二区| 丁香五月成人| 久噜久噜| 综合色五月| 国产偷人爽久久久久久老妇APP | 极品少妇XXXX精品少妇偷拍| 无语停婷丁香网| 天堂中文国产| 久久五月视频| 69精品人人人人| 91seAV| 色5月婷婷色| 丁香五月 综合| 五月天色婷婷基地| 99re在线视频| 热91久| 色色五月天com| 久久激情五月| 99性感视频| 久久精品99久久久久久| 99久热| 麻豆AV一区二区三区| 黑人无码一区| 九九视频这里只有精品在线播放 | 538在线精品| 久热伊人91| 中文字幕AV在线播放| 婷婷丁香五月天色区| 激情综合网五月天| 丁香色五月 97干| 日韩无码AV电影网站| 婷婷成人AV| 久久久月丁香| 9热精品| 爱久久小说下载网| 香蕉久久国产av一区二区| 26uuu亚洲色| 丁香六月综合激情| 国产精品a无线| 久久色五月天| 人人操超踫| 99久久婷婷国产综合精品草原| av五月天婷婷丁香| 天天做天天爱天天爽夜夜揉| 婷婷香五月天| 国产一区二区三区影院| 中文字幕97超级碰| 嫩BBB槡BBBB搡BBBB视频| 97在线精品视频| 色婷婷丁香AV综合| 国产精品色情AAAAA片软件| 色综合中文| www色中色综合| 丁香六月婷婷综合| 色婷婷在线视频观看| 亚洲婷婷开心五月| 99热最新| 91视频久久久| 欧美97p| 九九这里都是精品| 久久久五月天婷婷| 97色色色色色色色色色色色色色| 99热都是精品| 久操人| 伊人丁香花综合影院| 久久xx| 97成人在线视频| 丁香五月宝贝激情网| 激情久久久| 热日韩欧美| 久久九九免费大视频| 婷婷五月丁香六月| 五月亭大香蕉| 五月丁香花婷婷玉莉AV| 性一交一乱一交A片久| 天天爽在线视频| 97亚洲婷婷| AV在线不卡网站| 色婷五月丁香久亚洲| 五月天婷婷社区| 九九热在线视频观看免费10| 亚洲色模骚货| 九九爱激情| 婷婷黄色五月天在线视频| 99精品久久| 丁香婷婷色九月| 丁香五月婷婷手机| 色婷婷香蕉在线| 婷婷五月天激情综合| 色播五月丁香| av网址在线| 91ncm视频| 久久免费操| 日本九婷婷| 九九热在线视频观看免费10| 激情五月天伊人av| 欧美三级视频| 亚洲久热无码| 丁香操逼| 天天摸夜夜夜| 五月激情综合婷婷| 精品久久久久久久人妻| 色99综合色88| 五月天天天开心激情网| 久久爱婷婷| 色综合9| 狠狠五月天激情| 99热综合在线观看| 综合深爱五月| www.婷婷五月天,com| 啪啪亚洲综合| 婷婷五月激情视频网| 开心激情网在线| 狠狠色噜噜色狠狠狠综合色| 五月天婷婷婷| 9久久网| 九九热精品| 日本WWW九九九| 91日视频| 婷婷五月丁香久久| 亚洲无线视频| 久久狠狠欧美| 五月天开心网| 久久 这里只有精品1| 国产午夜精品一区二区三区四区| 米奇影视资源婷婷狠狠色激情欧美五月丁香 | 99性爱视频网站| 淫荡A片| 日日夜夜狠狠| 久久9精品| 五月婷av| 六月丁香综合999| 国产看真人毛片爱做A片| 艹| 五月丁香婷久久| 精品无吗va视频免费观看| 久久综合首页| 九九热只有精品| 成人婷婷桔色| 亚洲操女| 激情综合一| 五月婷在线观看| 99精品在这里| 人妻操操色| 九月av在线| www.黄色片-久久成人国产精品在线播放-999AV | 久久天天天| 中文字幕丰满孑伦无码专区| 婷婷五月色網站| 4438成人电影| 色婷久久| 五月婷婷丁香av| 九九偷拍网| 色噜噜婷婷| 婷婷五月天直播| 91大神在线免费看视频全集男男一起操| 天天日天天插| 激情色中文| 岛国AAAV| av在线中文| 婷婷丁香六月激情综合| 综合久久六月| 伊人五月天在线| 丁香婷婷久久老熟女综合网| 东京热免费视频网站| 色情激情五月| 亚洲免费av观看| 色色日本| 亚洲小视频| 最新色色五月天| 婷婷五月激情基地| 激情99| 婷婷深爱五月天在线| 五月婷婷之综合激情在线| 婷婷久久亚洲| 丁香五月婷婷五月天在线| 久久久久九九九九视屏小说88| 激情六月婷婷| 99热这里只有精品23| 97操碰在线视频| 超碰在线91| 激情图片婷婷丁香五月| 色婷婷丁香五月天在线视频| 五月婷婷综合性爱噜噜| 六月婷婷亚洲| 伊人丁香六月婷婷| 人人色AV| 五月丁香婷中文| 五月丁香婷婷六月天| 少妇口诉沐足视频播放器网址| 国产色色网站网址| 天天日天天操天天干| 五月婷六月丁| 另类图片婷婷五月天| 婷婷色欧美激情| 综合婷婷五月丁香在线观看| 婷婷丁香六月| 97碰久久| 天天做天天爱天天高潮| 开心五月激情网| 青草视频在线观看视频| 天天肏视奸| 九九精品少妇| 激情亚洲婷婷| 九九精品在线视频观看| 亚洲另类婷婷综合| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 超碰色色综合| 欧美在线视频99| 久久这里只精品| 欧美性猛交AAAA片黑人 | 亚洲综合色婷| 小骚穴电影| 91碰碰碰| 9999热这里只有精品| 激情五月天色婷婷| 99热碰碰| 这里只有精品久久| 1024欧美看片| 射区导航| 综合在线网| www.日韩艹| 亚洲天天| 国产亚洲色婷婷久久99精品91| 五月丁香婷婷色| 五月激情四射网站| 久艹伊| 香蕉久久国产AV一区二区| 亚洲激情免费久久| 丁香六月色婷婷| www.91色| 91国产精品视频播放| 97干视频在线| 婷婷丁香五| 天天透天天爱| 97自拍视频在线| 五月婷婷色啪| 高清无码 一区 二区 三区| 噜噜网免费视频| 在线观看中文字幕| 成人丁香| 综合激情专区| 婷婷六月开心网| 欧洲色色| 国产欧美熟妇另类久久久| 国产精品色婷婷久久久精品| 狠狠88综合久久久久噜噜噜| 激情五月天婷婷五月天| 婷婷久久综合久| 亚洲色婷婷久久99精品91| 欧美va视频不用播放器的va视频网| 99热a片免| 丁香五月色| 五月婷婷丁香啪啪| 夜夜夜叫天天天做| 六月丁丁香| 综合激情专区| 丁香五月天激情综合网| 91九色国产| CAOBIBI| 久久五月丁香激情综合| 日韩AV片| 丁香伊人五月色婷婷五十路| 2015WWW永久免费观看播放| 俺去也在线官网| 99re在线观看| 九热视频精品| 色婷婷五月综合网| 精品夜夜澡人妻无码AV| 日本三级中文字幕| 婷婷五月激情五月激情| 少妇被下春药玩弄A片| 午夜激情婷婷| 婷婷久久精品| 91女人18毛片水多国产| 加勒比色色| 超碰在线99| 玖玖在线视| 色五月婷婷小说亚洲中文字幕组| 人妻丰满精品一区二区A片| 九九成人精品免费视频| 视频一二区| 婷婷色吧| 九九热只有精品| 日韩成人中文| 天天操天天爽天天爱| 丁香六月激情综合| 99色在线| a在线观看| 大香蕉久久草| 欧美丁香婷婷五月天| 97caop| 69五月天视频| 91碰碰| 99er日韩| 五月天社区| 婷婷色女| 天天插天天插| 久热99| 99视频精品| 五月婷婷与六月丁香图片激情| 天天干天干| 草草视频91| 美日韩成人| 亚洲第一色色色| 五月丁香激情综合网| 亚洲夜五月| 少妇人妻丰满做爰XXX| 五月丁香六月欧美综合| 无码人妻AV久久久一区二区三区| 激情五月婷婷欧美极品| 亚洲高清在线| 五月综合婷婷网| 一起草AV入口| 婷婷香五月综合激情| 涩涩激情五月婷婷| 丁香婷婷影院| 伊人网啪啪| 中文字幕视频在线播放| 色婷婷婷av | 成人精品视频99在线观看免费| 日韩成人五月天| 天久综合91综合首页| 五月丁香花婷婷玉莉AV| 97操男人的天堂| 大天天伊人| 色v综合网| 色五月激情婷婷| 九九综合久久丁香婷婷,开心激情综合网| 97色色视频| 丁香五月亚洲激情婷婷射| 国产69久久久欧美黑人A片| 色情免费视频播放| 天天透天天干| 五月天啪啪视频| 精品无码人妻一区| 色婷婷久久9.com| 丁香五月婷婷偷拍| 久久伊人大香蕉| 成人做爰高潮A片免费视频| 色五月婷婷天天操夜夜操| 日韩有码久久| 综合网色| 丁香五月婷婷色播艳门照| 丁香五月AV| 婷婷伊人綜合中文字幕| 国产综合网在线| 色色免费网站| 亚洲V国产V欧美V久久久久久| 美女美女美女三级色天天天天天| 丁香五月六月综合激情| 五月天激情小说网| 五月天亚洲色| 婷婷五月天最新综合你懂的| 99九九这里有免费视频| 丁香五月最新地址| 丁香六月色情| 91综合在线观看| 99爱精品| 婷婷99狠狠躁| 婷婷免费精品视频| 五月天婷婷久草丁香| 婷婷丁香五月天激情| 在线可以看的av网址| 97人人看一| 大香焦啪啪啪| 九热视频| 蜜桃五月天| 九九激情网| 99久久.www| 熟妇人妻中文字幕无码老熟妇| 99色视频免费在线规看| 丁香六月色香蕉视频| 99热一本久道| 国产毛多水多女人A片| 色七七九九| 色婷婷AV五月天| 丁香五月婷婷啪啪啪| 九九热精品| 久久婷五月婷| 婷婷婷婷色| 蜜臀av无码久久久久久久久| 9久国产精品| 啪啪九九色| 这里只有精品视频| 亚洲旡码| www.狠狠操| 巴基斯坦粉嫩无码视频| 亚州精品色情无码A片| 99视频九九热| 99精品综合在线| 五月色婷婷综合| 久久这里只有精品视频26| 亚洲综合激情五月久久| av成人在线播放| 五月丁小婷婷激情四射| 色婷婷电影网| 色播五月婷婷| 五月丁香久久久久| 99免费| 婷婷久久综合久色| 五月婷婷激情69| 99热这里只有精品21| 六月丁香AV| 另类婷婷五月天啪帕帕| 极品少妇XXXX精品少妇偷拍| 超碰在线人妻| 五月丁香六月情| 97视频91| 激情av在线| 99视频在线播放大全| www.久热| 99久在线精品99re8热| 婷婷五月天在线一区| 3www激情| 夜夜骑福利资源| 五月婷婷丁香综合| WWW激情五月天| 激情小说五月天中文字幕| 五月丁香啪啪婷婷| 色婷婷综合综合网| 免费人人操| 99九精品| 色色五月天丁香婷婷| 五月婷婷婷综合网| 婷婷 丁香 久久| 激情人妻综合| 亚洲无码11| 国产老熟妇亲子乱对白| 国产精品久久..4399| 久久9视频欧美| 激情综合五月激情| 亚韩在线视频| 久久精品系列| 五月天综合在线观看视频| 色色COm| 九九精品视频在线观看| 婷婷五月天堂一本在线| 中文乱子伦视频| 天天日,夜夜爽| 亚洲VA在线| 激情小说视频图片网| 能看的AV网站| 五月天网站免费欧美| 天天爱天天秀天天做| 欧美日本黄色| 大香网伊人久久综合| 免费看欧美成人A片无码| 久久精品一区二区三区四区| 婷婷五月综合基地| 在线超碰91| 日良久久| 伊人五月久久| 综合网五月天123| 亚州色色色| 五夜婷婷| 精品影院| 精品九九久久| 伊人久久99| 久久成人性爱| 五月天久久综合婷婷丁香| 99久在线观看| 九色婷婷| 无毒黄色网址| 91viP在线看| 日韩av干| 色五月婷婷一二| 97九色| 伊人久久丁香狠狠婷婷综合香蕉 | 激情超碰网| 婷婷五月丁香花综合| 久久停停超碰| 色综合播放| 婷婷五月天激情诱惑| 99热| 9999久久久久| 五月天久久小说| 97婷婷狠狠久久综合9色| 99热18| 色噜噜在线| 婷婷伊人| 亚洲中文字幕在线电影| 色婷婷av在线| 激情五月天小说视频| 在线视频99| 久久久国产精品黄毛片| 婷婷射图五月天| 91操操操| 激情久久五月天| 亚洲AV日韩在线观看| 久操综合| 五月婷婷丁香五月婷婷| 色婷婷丁香五月| 国产精品成人网址| 日韩成人电影AV| 久久伊人五月天| 五月天婷婷基地| 婷色天堂| 99re思思| 99色视频| Www.se.久久| 秋霞黄色一级久久| 欧美这里只有精品| 婷婷五月色播天| 天天爱天天做天天日| 五月天天天色| 成人超碰网| 操操啪| 丁香五月婷综合网| 激情开心五月天| 色九月婷婷综合| 97色色色| 综合色、色综合| 久久机热这里只有精品免费视频| 五月丁香六月激情综合| 国产午夜伦鲁鲁| 人人操人人添人人摸97| 六月丁香激情婷婷| www激情| 亚洲天堂99| 五月天综合在线观看视频| 精品久久久中文字幕大豆网推荐理由| 蜜臀AV在线成人| 婷婷狠狠18禁久久| 婷婷五月天桃花网| 五月丁香少妇A| 日韩色色视频| 激情五月综合| 亚洲AV中文在线| 男人天堂 久久| 热99在线| 97碰91| 婷婷五月天六点丁香五月| 操人妻AV| 77799热| www.夜夜| ay2区| AV九九| 五月激情丁香五月| 婷婷色丁香五月| 噜噜噜狠狠色综| 99综合自拍| 久久综合无| 久久精品系列| 色狠狠综合入口| 欧洲一区二区| 4399亚洲视频| 色色网站| 六月丁香婷婷拍拍|