免费国产精品自在自线-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.99免费视频| 五月停亭六月,六月停亭的英语 | 爱久久小说下载网| 99色视频| 天天肏在线观看| 六月丁香成人| 亚洲精品国产成人AV在线| 丁香网五月天| 国产成人精品一区二三区熟女在线| 99精品在这里| 九九视频这里只有精品| 五月天激情网页| 亚洲九九夜夜| 婷婷丁香成人| 99久久网站| 人妻第九页| 思思热在线观看| 丁香五月婷中字幕| 伊人啪啪网| 99 热| 九色激情网| 爱爱网址9| 欧美六月| 91九色|疯狂|高潮|对白|| 五月天婷婷久久综合| 日本激情91| 色色色色色色色五月| 丁香成人五月天| 99爱视频| 97干97色| 狠狠做婷婷| 人人草人人舔| 久久婷婷综| 常久最新免费的色吊丝| 色日本网| 月婷婷婷婷五月| 免费播放99性爱视频| 丁香婷婷精品视频| 色五月aV| 精品无码99| 五月婷婷婷婷婷婷艺术| 婷婷五月天日本无码| 婷婷基地五月色| 99热国内| 亚洲色爱综合| 五月天狠狠网| 无码色| 九九在线这里只有精品视频| 五月丁香婷庭在线| 91热视频色网站| 99色亚洲| 99a级片| 久久超视频| 日韩AAAAAAAAAAA片| 婷婷五月无码| 婷婷久久网| 九九精品综合| 天天综合精品| 第四色色六月色综合| 五月丁香综缴情性爱| 婷婷五月天VI| 91综合色| 五月天成人在线视频丁香| 99综合视频在线| 亚洲综合激情五月久久| 五月婷婷婷婷婷婷艺术| 五月天成人网在线观看| 久久怡红院| 六月丁香网| 无码激情AAAAA片-区区| 五月婷久久久| 狠狠做五月婷婷| 婷丁香五月天| 色婷婷69| www.9操| 久久97久久99久久综合欧美| 六月婷婷网| 影视av久久久噜噜噜噜噜三级| 玖玖综合网| 婷婷激情中文综合| 六月丁香VA| 亚洲精品在线视频| 在线中文AV| 日本wwww在线| 五月丁香日本片| 日本本土色网第一区| 第四色婷婷色五月| 日本久久精品| 91主播在线| 五月停停色| 日本综合久久| 久久偷拍综合五月天| 欧美在线视频免费播放| 婷婷最新地址| 天天弄天天爽| 婷婷涩五月| 国产精品人成A片一区二区| 丁香六月婷婷操逼网| 神马欧美精| 678五月丁香亚洲综合| 亚洲精品午夜国产va久久成人| 99热99在线| 色婷婷丁香花五月天| 99九九热视频免费| 五月色俺婷婷| 人人摸人人干| 五月天日日操夜夜操 | 亚洲精品乱码久久久久久综合| 无月播播激情在线观看视频| 人妻少妇色综合| 婷婷五月综合丁香久久| www.日日日.com| 日本婷婷| 青青草五月天| 五月天影院| 天天色视频| 亚州色综合| 婷婷六月天精品| 99九九玖玖| 综合狠狠干| 久久视频婷婷| 99精品高潮| 六月激情久久婷婷| 精品色| 99热99思午夜精品| 久久激情五月天| 九九久久精品| 九九AV在线| 婷婷五月骚厕所| 欧美色五月| 久久婷婷六月综合综合| 丁香五月综合AV在线| 六月色婷婷| 在线观看亚洲视频影院| 久草热在线视频| 欧美精品在线观看| 99re在线这里只有精品视频首页| 国自产拍偷拍精品啪啪一区二区| 丁香无月在线观看| 欧美精品999| 99热爱爱干干日| 欧美xx激情视频在线观看| 五月天婷婷久久视频| 99久久99九九九99九他书对| 伊人色五月| 丁香亚洲婷婷五月| 亚洲色无码A片一区二区麻豆| 色三级色三级| 久久久com| 9 99免费视频| 亚洲综合色网| 欧美精产国品一二三区| 激情综合五月丁香| 9久久久久久久久久久| 亚洲av骚货| 国产精品扒开腿做爽爽爽A片唱戏| 亚洲婷婷在线播放十月| 99精品视频在线观看| 欧美精品999| 亚洲秘 无码一区二区三区妃光/1| 亚洲成人AV电影网| 一区二区免费看| 日本97在线观看| 久久久久人妻精选| 狼友超碰| 开心激情婷婷| 无码婷婷五月天| 婷婷99视频在线| 99综合99| 色婷婷88| 五月丁香在线| 天天爽夜夜爽夜夜爽精品视频| 婷婷丁香五月天熟女丝袜| 五月婷婷五月天激情网| 日韩AV在线免费观看| 久久狠狠干| www..999热久| 大战熟女丰满人妻AV| 俺去也在线官网| 亚洲AV日韩在线观看| 天堂久久丁香| 丁香五月色五月| 国产一级片| 大香蕉啪啪啪| 色婷婷精品视频| 91操在线视频| 五月丁香六月激情网站| 五月婷色色| 五月天开心婷婷久久| www.91五月| 99精品国产在热久久婷婷| 丝袜激情网| 99热免费精品热久久66| 九九九九中文字幕| 成熟妇人A片免费看网站| 色婷婷激情视频| 中文字幕亚洲-区久久99婷婷| 99热免费精品| 婷婷精品性性性性性性性| 4399高清无码视频| 婷婷中文字幕欧美| 久久99视频| 激情色视频| 一区视频网站| 成年视频免费观看| 色综色网| 噼里啪啦在线观看免费完整版视频| 五月激情婷婷六月| 色色丁香五月婷婷| 色婷婷五月开心六月综合| 猫咪伊人AV| 婷婷久久亚洲| 思思热在线观看| 插插插丁香五月婷婷| 婷婷亚洲久久| 五月丁香婷婷激情图片| 欧洲电影在线观看免费版英语版| 91蜜桃婷婷狠狠久久综合9色| 九六五月天婷婷| 九九热10| 操久久精| 亚洲av网址| 青草视频在线播放| 亚洲中文字幕在线观看| 五月天播播| 亚洲色五月婷婷| 日韩成人精品一区久久久久| 99热这里只有精品国产免费| 天天做天天爱天天爽夜夜揉| 五月婷婷丁香综合| 久久综合中文字幕| 91精品久久久久久久久| 99人人操| 国产亚洲99久久| 亚洲欧美成人在线观看| 国产女18毛片多18精品| 婷婷丁香精品视频在线观看| www超碰com| 国产欧美精品AAAAAA片| 婷婷六月天| 91超级碰碰碰| av人人干| 丁香六月综合激情| 五月丁香啪啪| 丰满少妇猛烈A片免费看观看| 成人精品在线观看| 成人在线视频网| 五月婷婷熟女| 中文字幕成人| 色99在线| 国产精品第一国产精品| tingtingcaobi| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 99er免费在线观看| 99热这里只有精品1998| 思思久日精品视频| 狠狠的日| 成人五月天丁香| 99亚洲视频| 久久九九国产精品怡红院| 国产无套精品一区二区| 婷婷五月综合色拍| 色爱五月天| 五月天开心激情综合网| 超碰免费在线| 亚洲图片 丁香婷婷| 色图亚洲91| 九九热狼人| 亚洲精品444久久久久久| 超91热| 996黄色片| 色婷婷色五月综合| 九九五月天| 五月婷视频久久| 去干网av| 可似看的AV| 婷婷丁香五月激情密臀av| 人妻久久久久久| 丁香五月婷婷激情尤物| 久久婷婷视频| 超碰免费电影| 色九月| 激情婷婷五月天伊人在线观看| 天天碰天天插天天操| 这里只有精品免费观看网占| 国产99久久久| 精品九九九久| 久久久com| 777久久综合视频| 精品九九视频| 97色女人在线| 丁香婷婷狠狠97| 亚洲天堂制| 九九热啪啪| 五月丁香激情片| 中文字幕性爱丰满| 色综合久| 色九九丁香九月色九九色| 五月天丁香综合久久国产| 九九色色| 亚洲午夜一区二区| 精品日本视频444| www.五月天色色.com| 亚洲性图一区二区三区| 99热在线观看精品| 成人视频免费观看高清完整版在线观看| 日本久草福利| 天天色综合综合| 超碰99久久| 内射干少妇亚洲69XXX| 丁香五夜激情四射夜夜夜| 婷婷五月天久久久| 色五月AV| 色插人人| 亚洲激情高潮| 玖玖婷婷五月天| 99久久偷拍视频| 婷婷丁香色五月亚洲| 狠狠干五月丁香综合网| 疯狂做受XXXX高潮A片| 婷婷五月丁香超碰| 六月综合在线| 九色亚洲| 亚洲VA在线| 婷婷亚洲天堂| 99在线视频色版| 99热这里只有精品最新| 99精品偷自拍| 久久亚洲色导航| 色欲婷婷五月天丁香| 中文字幕 中文字幕明步| 热99精品视频| 色婷婷国产精品综合在线观看| 国产69久久久欧美黑人A片| 91热视频色网站| www.色色色色| 97偷拍在线视频| 6080av| 五月天色社区| 色色五月天激情| 激情丁香五月婷婷| 婷婷丁香社区| 五月丁香久久| www.com亚洲网站在线免费| 成人精品99| 亚洲V国产V欧美V久久久久久| 特黄三级片| 日本高清久| 激情啪啪五月天| 亚洲人妻一区二区| 亚洲9久久精品| 色婷婷色五月综合| 激情婷婷护士激情| 五月的色婷婷高潮| 日91高清无玛| 超碰在线精品| 99热 这里只有精品 国产 日韩| 综合性爱网| 丁香五月天天| 综合久久97| 色丁香五月| 久久99精品久久久久久三级| 久久婷丁香五月| 亚州操操| 在线观看五月婷婷网| 五月天婷婷丁香| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 亚洲另类电影| 91精品电影18T| 国产精品99久久久久久久女警| 一夜福利不卡| 色播jjjj| 色婷婷先锋| 欧美日韩成人免费在线| 99热91| 激情婷婷内射| 99青青草99| 亚洲色激情| 国产精品岛国片在线观看免费| 99性爱视频| 9久国产| 99ri国产| 六月婷色六月| 丁香五月婷婷天堂大香蕉| 婷婷色五月激情强奸四射| 久久伦乱| 成人无码髙潮喷水A片| 丁香五月狠狠综合欧美| 日韩免费99| 久9视频| 丁香五月综合久久八| 最近中文字幕2019视频1| 色五月婷婷啪啪五月| 五月丿香啪啪| 久久五月视频| 五月丁香六月成人| 色五月婷婷五月丁香五月激情五月视频| 青草青草视频2免费观看| 五月婷婷综合潮喷| 婷婷在线精品| 欧美日韩一区二区三区四区| 超碰超碰在线| 婷婷色五月情| 久久免费精品小视频| 婷婷五月综合啪| 久久人人妻| 综合久久影院| 久久综合婷婷激情| caop在线| 深情五月天| 激情四射五月天| 五月丁香啪啪综合| 九九爱激情| 超碰在线人人| 91美女啪啪| 亚洲av免费在线| 天天日中文| 激情九色| 丁香五月天网友自拍啪啪啪视频| 看黄的网站18禁| 伊人久热91网| 久久视9精| 91美女被操| 激情综合色| 日韩啪啪视频| 五月天丁香婷婷社区| 日本天天操| 日韩人妻在线观看| 99色在线视频| 五月天婷婷无码视频| 轮奸综合网| 东北黄色一级| 五月丁香A∨在线| 强壮公让我夜夜高潮A片视频| 六月婷婷啪啪| 99热综合网| 四色 爱 婷婷 精品 亚洲 五月天| 99热九九在线| 99热热热99精品婷婷| 激情六月婷婷| 大香蕉欧美在线| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 久久精品夜色噜噜亚洲a∨| 狠狠干狠狠干| 五月丁香婷中文| 丁香婷婷色五月| 色婷丨日丨天丨综合久久| 欧美99热| 婷婷天堂综合| 大香蕉久久伊人婷婷五月丁香| av成人在线播放| 黄色AAAA韩国guochansanji| 202丰满熟女妇大| 丁香五月婷婷影院| 天天干天干| www99在线观看视频| 婷婷基地爱| 色欲资源网| 日韩成人精品一区久久久久| 婷婷五月天亚洲激情戏精品| 五月婷婷黄色视频| 五月丁香青草综合啪啪| 啪啪激情网站| 色5月婷婷| 这里只精品热在线18| 六月丁香综合网| 色综合天天网| 激情综合激情五月| 婷婷激情欧美| 日日夜夜狠狠操| 丁香五月亚综合图片| 丁香五月婷婷俺也要去| 色五月激情婷婷| 五月天六月婷婷| 最新va在线播放| 大香蕉婷婷| 99色在线视频| 激情五月网站| 色五月天在线观看| www99精品| 国产精品电影| 字幕网AV中文字幕| 天天网曰日曰夜夜综合永久免费| 美女激情综合| 少妇日麻屄| 亚洲综合色丁香五月天| 久久九九色| 狼人婷婷久久| 强辱丰满人妻HD中文字幕| 9热网站| 久久爱综合| 蜜桃婷婷狠狠久久| 99激情网| 黄色AAAAA| 久久色五月| 97福利视频| 综合色图婷婷| 91超碰在线播放| 五月天婷婷黄色视频| 亚洲丁香五月天在线视频| 色综合色综合网| 丁香久月| 97人妻超级碰碰碰碰碰| 激情九月天天天天婷婷| 久久99激情| 成人超碰Av| 9久久婷婷国产综合精品性色| 涩涩五月天| 丁香五月婷婷老师网站| 在线国产精品色| www.五月瑟| 成人五月天丁香| 国产欧美精品AAAAAA片| 欧美三级黄色片久久| 五月丁香六月日逼| yellow视频在线观看91| www九九免费视频| 五月丁香婷婷综合久久| 婷婷五月天在婷| 色婷婷综合久久久久| 99免费超碰在线| 久99热在线观看| 天天婷婷操| 成人婷婷| 色久一| 天天拍天天做视频| 超碰女人天堂| 大香蕉丁香| 月婷婷亚洲| 91日日日| 免费观看2018www黄色操逼网站| 伊人五月天日日夜夜久久久天天| 玖玖婷婷综合| 操操操91| 婷婷五月丁香综合人妻| 91丨九色丨国产打屁股| 色五月综合在线| 99热在线只有精品| 91九色 熟| 激情综合五月色在线| 99热资源在线| 色色综合院| 初夜av| 五月婷婷五月天| 黑人熟妇一区二区三区| 亚洲另类视频| 色色六月| 五月婷婷人妻| 五月天啪啪网| 丁香五月婷婷骚视屏| 九九热精品视频在线观看| 五月婷婷色播| 黄色一级影片| 插逼综合网| 五月激情站| 婷婷97C| 快色t v在线入口| 亚洲亚洲人成综合网络| 丁香婷婷五月天色播| 色婷五月天| 大香蕉九九| 91Chinese在线| 激情综合网址| 久久综合丁香激情五月| 这里只有精彩小视频视频网站| 久操激情| 噜噜噜噜噜久| 婷婷啪啪| 99在线视频在线观看| 欧美成人精品A片免费一区99| 日韩欧美五月丁综合| 天天天天天天操| 青草青草久热这里只有精品| 另类小说色婷婷| 五月六月丁香激情视频| 九九综合| 久久九九蜜| 亚州在线中文字幕| 五月激情婷婷在线| 1024婷婷综合久久五月天| 先锋资源91| 亚洲成人一区| 91九九| 先锋男人99资源| 99在线视频操999| 五月婷婷说| 婷婷刺激综合| 热99这就是精品视频| 丁香六月婷婷开心| 国产免费性爱| 99热碰碰| 丁香午月AV中文字幕| 欧美电影在线播放| 色狠久| 五月丁香六月激情综合| 综合色播| 啄木鸟丝袜美女福利视频 | 久九九热| 婷婷久久五月| 五月婷婷视频28| 99内射视频| 五月丁香999| 玖玖在线资源视频| 狠狠色综合网站久久久久| 91成人看片| 丁香婷婷五月天校园春色| 精品爱欲五| 久草a片| 久久五月天合网| 人妻免费网站| 深爱开心激情| 亚洲欧美一区二区三区四区爱爱动图| 黄网免费看| 精品久久久中文字幕大豆网推荐理由| 丁香五月影院| 亚洲五月天伊人| 97超碰欧美中文字幕| 色五月激情五月天| 色五月在线观看| 丁香婷婷六月激情文学 | 丁香六月 婷婷六月| 亚洲成人日韩无码精品| 色五月激情五月天| 婷婷五月色天| 97婷婷丁香五月| 丁香九月婷婷综合| 国产av天天插天天操天天爽| 婷婷五月激情综合| 久久人妻伦理| 玖玖资源网站最新站| 五月婷婷深深爱| 丁香情色五月| 成人电影一区| 91久久| 五月天色婷婷伊人网| 9er热在线精品视频| 五月天激情久久| 久久成人性爱| 国产99热| 婷婷色五月开心五月| 精品成人在线| 99国产精品久久久久久久久久久| 99精品久久久久久久婷婷| 久久欧洲综合网| 成人天天爽| 婷婷五月网图片区| 日本色超碰| 香蕉AV777XXX色综合一区| 伊人久久大香蕉网| 五月天婷婷婷| 日韩在线五月天婷婷| 国产99精品免费视频| 亚洲综合婷婷| 26.uuu丁香五月婷婷| 欧美日韩成人综合9| 99热官网| 夜夜谢天天干| 看片视频在线免费日产在线看| 婷婷综合五月天| 26uuu另类亚洲欧美日本一| 丁香婷婷综合五月天| 丁香五月天婷婷在线视频| 久久久久网站| 97九色视频| 99视频在线观看网址| 久青草大香蕉| 成人VAV视频在线观看| 69超碰在线| 777精品久无码人妻蜜桃| 99啪啪视频| 天天爽天天| 久久激情网| 久久这里只有精品热在99| 丁香婷婷五月天激情四射| 激情五月婷| 丁香五月AV| 97婷婷丁香| 亚洲操逼片| 丁香婷婷网| 九九热只有精品| 综合久久99| 五月丁香影视| 少妇性BBB搡BBB爽爽爽视頻| 五月婷婷色在线| 五月天久久婷| 亚洲影院婷婷色| 激情综合在线播放| 九九热视频99| 亚洲第一色色色色| 五月综合六月婷婷| 五月婷婷中文字幕AV| 日本色久| 人人爱人人草| 九久久婷婷| 久久ri精品视频| 日韩欧美一道四区中文字幕| 97久久久| 丁香六月婷婷色XXXX| 这里只有精品网| 色情五月婷| 婷婷五月天色播| 男男野外做爰全过程69| 日本在线观看91| 色综合色五月| 婷婷激情五月天亚洲综合| 亚洲99精品欧美一区| 色色五月丁香婷婷| 亚洲亚洲人成综合网络| 五月婷婷亚洲色图| AV激情五月| 欧美天天干天天草| 91婷色| 俺去也五月| 久碰久| 综合色久| 五月丁香婷婷三级| 超碰在线看| 99视频热99| 色九网| 婷婷五月天欧美图片在线播放电驴| 狠狠色大香蕉| 欧美性猛交99久久久久99按摩| 丁香五月婷婷综合激情啪啪啪啪啪啪啪| 中文字幕综合| 伍月婷婷六月丁香| 天天干 夜夜爽| 色吧99| 五月天婷婷久久日| 久久久无码精品成人A片小说| 狠狠操狠狠插| 亚洲六月色婷婷| 高清无码中文字幕aVDV| 狠狠色婷婷777| 丁香99| 欧日韩AV| 97资源碰碰| 玖玖婷婷五月天毛片| 丁香五月婷婷久久综合激情网 | 国语精品探花| 欧美日韩成人在线| 1024国产| 五月婷婷综合丁香视频| www久视频com| 激情五月天激情网| 婷久久| 亚洲AV永久无码影院黑人 | 五月花综合视频| 99国产精品白浆在线观看免费| 欧美日本国产欧美日本韩国99| 这里只有免费的精品| www.久热| 亚洲av免费在线| 色婷婷狠狠| 99综合97| 精品成人无码A片观看香草视频| 五月婷婷色五月| 97人人做| 99热精品观看| g00d人体西西| 综合在线色婷婷| 亚洲日本三级片| 婷婷基地五月色| 亚洲国产精品二二三三区| 丁香五月天无码AV| 色婷婷小说| 91偷拍视频| 色私五月婷婷| 98色花堂98t.R| 久色| 手机旧版看人妻1025| 天天狠狠夜夜狠狠2023| 婷婷伊人綜合中文| 99视频只有这里精品| 99re欧美精品| 日日懆天天懆| 伊人九九68| 久久婷婷五月综合啪| 九九婷婷五月天| 人人舔天天| 91色综合网站在线| 丁香5月婷婷| 影音先锋五月天婷婷丁香在线观看| 欧洲综合色| 久久久全国免费视频| 国产婷婷五月天| 久久五月丁香综合| 天天久| 青青草99热久久精品国| 97碰碰视频| 99精品久久久| 久久婷婷伊人| 秋霞电影理论| 日韩精品在线观看9| 久久偷拍综合五月天| 九月丁香欧美综合| 婷婷激情人妻| 99免费视频久久| 国产精自产拍久久久久久蜜| 人人看人人要| 97成人超碰免| 久久停停超碰| 人妻系列久久久久久久久久久 | 婷婷五月天久久| 婷婷丁香成人| 天天射综合网夜夜操| 五月丁香偷拍| 色婷婷网| 99视频在线观看欧| 欧美啪啪五月天| 五月丁香激情啪啪| 噜噜噜色噜噜| 在线99精品| 婷婷五月色天| 天天插天天| 激情图片婷婷| 777影视理论片大全在线观看| 五月丁香花激情综合网| 色五月婷婷操逼| 婷婷五月影院| 综合网天天| 日本色噜| 99热一本| 五月丁香久久| 亚洲国产精品VA在线看黑人| 久久精品爱爱| 9色免费网| 色婷婷五月天在线观看| 五月婷婷福利| 99re这里只有精品99| 99久操视频| 99久热在线精品| 五月开心婷婷| 日本色色图| 激情五月婷婷色综合| 五月丁香激情啪啪| 99热无码| 97五月天婷婷午夜| 欧美日韩国产日本精品四虎网网站物| 大香蕉五月天婷婷| 五月丁香激情综合久久| 热99视频精品| 五月天婷婷免费| 99久久喉9| 99爱视频在线| 日本九婷婷| 亚洲VA在线| 开心六月婷| 97日本在线| 久久se 综合网| 色中色综合| 九九热最新| 激情综合丁| 五月天天天综合| 色婷久九| AV免费在线网站| 国精产品一区一区三区免费视频| 日本色婷婷| 久久精品人妻| 久久婷婷五月综合伊人| 日韩一区二区三区无码| 中文字幕永久免费| 久久九九精彩| 亚洲无码免费看| 青草视频在线播放| 五月婷婷色五月| 玖玖99免费视频| WWW五月| 五月丁香亚洲综合网| 色情五月天小说| 五月天天堂久久| 天色综合网| 久久久久视剧HD| 亚洲av| 国产69久久久欧美黑人A片 | 激情综合网,婷婷五月天| 久久视网36| 成人在线视频网| 成人在线综合| 国产九九一区二区三区| 丁香五月 激情文学| 丁香五月婷婷色综合| 无码日本精品XXXXXXXXX | www.夜夜操.com| 玖玖婷婷五月天| 大香蕉婷婷五月天| 日本啪啪天堂| 日本色婷婷| 久9热| 五月天精品视频| 开心五月婷婷五月| 久久97| 亚洲欧洲99| 欧美激情五月天婷婷| 五月天天天综合| 久这里只有精品| 在线VA视频| www天天干| 婷婷五月天论坛| 伊人久久丁香婷婷六月五月综合| 99热中国| 天天噜噜| 91婷婷丁香五月| 午夜丁香| 91超碰人人操| 欧美私人家庭影院| 久草婷婷在线| 香蕉色色网| 丁香久久久| 99九九热在线观看| 色色日韩| 五月天激情图| 九九热这里| 99激情在线| 婷婷开心青青草| 婷婷五月天熟妇| 九九99一区| 影音先锋91| 日日操天天操| 91919191919久久成人视频| 精品一区久热| 十区av| 九九综合精品| 丁香六月 人妻| 五月激激激情综合网| 色噜噜狠噜噜视频| 激情www| 五月婷婷啪啪啪啪| 欧美三级级99久久| 成人版视频在线观看| 思思99热这里只有精品| 激情五月婷婷色综合| 丁香婷婷色五月| 九九热最新| 欧美色频| 免费日本aⅴ中文字幕| 婷婷情色五月天| 思思热久在线观看视频| 久久机热这里只有精品| 九艹在线| 国产精品涩涩涩视频网站| 中文字幕天天干| 精品99这里有| 欧美色色色色色色色| 久久激情五月天| 亚洲愉拍99热成人精品| 九九av在线| 五月丁香综合啪啪啪啪啪| 99热99色| 色婷婷狠狠| 色色影院黄大片| 婷婷五月天直播| 亚洲综合五月天婷婷丁香| 国产 码在线成人网站| 久久午夜丁香| 另类婷婷丁香| 成人av中文字幕| 丁香婷婷色五月天| 999久久久国产精品| 人妻丰满精品一区二区A片| 国产性爱色| 翔田千里aV中文字幕| 丁香五月天婷婷激情| 国产AV一区二区三区最新精品| 玖玖婷婷精品| 中文字幕久久一区二区三区| 色播五月婷婷| 4438国产免费看| 久99久热只有精品国产99| 玖玖在线视| www99精品亚| 色色影院aaaav| 大香蕉啪啪| 婷婷五月天性爱视频| 五月婷成人网| 婷婷久久久| 日本3级片一区2区| 99热12| 伊人激情AV一区二区三区| 99精品热视频| 夜夜爱网站| 99riAV成人在线视频| 丁香香五月激情免费视频| 97色永久免费视频| 99热很操老逼| www色综合| 操老逼综合网| 五月婷婷丁香大陆免费| 99在线免费观看| 亚洲综合婷婷| 综合婷婷久久| 丁香五月婷婷激情尤物| AV操操操| 日韩欧美性爱| 婷婷丁香色情| 超极99精品| 天天日人人爽| 国产毛片精品一区二区色欲黄A片| 99这里有精品久久97| 激情AV| 97热视频| 亚洲黄色影视| 六月婷婷综合| 色综合激情| 久久综合爱| 日本久久精品| 激情五月天婷婷直播| 九九伊人网| 婷婷五月色播网| 婷婷五月丁香基地| 永久的网站AAAA| 26uuu日韩| 热热久久精品视频| 乱岳熟女50岁| 思思99re这里只有| 久久九九热re6这里有精品| 天天日天天做天天操| 99九九这里有免费视频| 99热这里只有精品最新| 激情性爱婷婷| 人人摸人人干| 超碰人人艹| 五月天成人综合| 亚洲 激情 中文| 狠狠爱深色婷婷综合| 激情五月婷在线精品| 五六月婷婷久久| 99热在线看| 成人一级片| 婷婷五月天基地| 操逼福利视频| 一区=区操屄高清大全av| 久久激情网| 五月婷网| 久久精品99国产精品日本| 色丁香久综合在线久综合在线观看| 曰本久久女| 六九色综合婷婷五月天| 色色色婷婷五月天| 99精品久久| 激情小说之五月| 久热伊人在91| 久久综合激情| ji'qing'luan'ren'lun| 色五月美女| 秋霞A V毛片| 99这里有精品免费| 丁香五月停停av| 丁香五月在线自慰| 丁香五月综合色婷婷| 超碰人人摸人人操| 五月丁香六月激情| 噜综合| 色色色色色日韩午夜激情| 国産精品| 天天干天天干天天干天天干天天| 日本三级片片| 直接看的av| 亚洲欧美另类在线23p| 精品在线网站| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品| 亚洲激情97五月天| 日本一道久久| 黄网在线免费观| 26.uuu丁香五月婷婷| www.色婷婷。com| 国产精品人妻在线网址| 九九热精品在线| 五月婷婷之婷婷| 六月综和久久| 玖玖婷婷五月| 91精品国产综合久久久不卡电影| 2017狠狠干| 狠狠狠狠狠草| aaaaa黄色| 天天透天天干| 狠狠爱综合网| 影音先锋91| 亚洲综合狠狠艹| 五月丁香美女视频| 91久草五月天婷婷| 亚洲精品V天堂中文字幕| 99热这里只有精品在线| 五月丁香综合伦理片| 91九色丨国产丨爆乳| 色99久草在线| www久久久| 久久久.COM| 亚洲激情网站| 乱女乱妇熟女熟妇综合网站| 97色啪| 1024人妻无码中文字幕| 99热日本| 五月停亭六月,六月停亭的英语| 人人操人人爱丁香五月| 亭亭丁香久久五月| 碰碰女| 五月天婷婷久草丁香| 成人国产欧美大片一区| 99热免费在线| 99九九精品视频| 五月天久久婷婷| 五月婷婷我| 色插综合网| 天天天久久久| 久久婷综合| 激情AV在线| 婷婷五月无码| 99视频日韩| 五月天操逼激情| 色一情一乱一伦一区二区三区| www九九热| 久久婷婷婷| 精品99在线观看| 色视频五月天| 91久久婷婷人人澡草| 五月婷综合性中心| 婷婷舔| 天天草婷婷五月| 激情六月丁香综合| 噜噜色天天开心| 啪啪一区| 九月婷婷综合| 天天久久人人| 色色婷婷丁香| 久久婷婷精品| 欧美色图45678| 九九热a| 激情小说五月天社区丁香| 亚洲色综合| 99操| 九九视频免费| 丁香九月综合| 思思视频这里是精品| 蜘蛛女免费观看完整版高清电影| 久久精品爱爱| 五月久久丁香| 色九月综合| 操97在线观看| 久久日婷婷| 91jiuseshunv| 久久婷婷丁香五月宗合| 亚洲色人妻| 91婷婷色五月| 丁香五月天婷婷在线视频| 五月天另类小说亚洲| 青青草搞屄视频网站| 深爱五月天婷综合| 丁香五月婷婷激情视频播放| 人人看人人要| 激情五月,色播五月| 天天草天天爽| 久久五月丁香| 亚洲爆乳无码精品AAA片蜜桃| 内射人妻视频国内| 五月停性愛| 久热丁香| AV色五月婷婷| 丁香婷停五月激情综合深爱| 激情综合网激情五月丁香| 色色性爱视频| 国产成人AV在线| 色五月激情网| 激情五月天.色网| 一起草无码| 97色色色视屏| 99精品22| 久久婷婷网| 五月综合色| 热久91| 色狠狠综合| 最新五月天婷婷影| 精品久久这里热66| 这里只有精品1| 丁香花社区av| 台湾无码A片一区二区| 五月丁香网av| 婷婷五月美女直播| 在线中文字幕视频| 91色呦哟| 九九re精品视频在线观看| 久热这里只有精品在线观看| 日日日天天干| 色噜噜狠狠色综合日日| 99re欧美精品| 色婷婷av在线| 日韩六十路91性交电影| 亚洲色优| 亚洲午夜AV| 超碰中文字幕在线| 天天爽成人综合网站| 丁香五月婷久久| 激情五月婷| 色yeye色综合| 96人人操人人操人人| 日日操日日撸| 丰满老熟妇BBBBB搡BBB| 97日本在线| 丁香花五月天| 婷婷丁香九月| 猫咪伊人AV| 婷婷中文字幕| 丁香五月天论坛| 国产暴力强伦轩1区二区小说| 久婷婷色| 色综合日日| 久热这里只有精品6| 99ri国产精品| 亚洲Av入口| 五月婷婷啪啪| 人人叉久| 9这里只有精品| 五月天色区| 热99在线精品| 色综合色色色色色| 99精品久久| 97碰| www.久热| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 五月婷婷精品| 亚洲小说欧美激情| 亚洲色网址| 婷婷五月电影| 五月丁香婷婷成人网| 国产日产亚系列精品版优势| 色综合久久888| 激情啪啪五月| 性爱五月婷婷| 这里只有精品视频在线看| 91操碰| 91操操| 婷婷的99视频网站| www,超碰| 四色99久久| 日韩五月婷婷久久| 婷婷五月天激情视频| 亚洲成人免费电影| 色五月成人| 玖玖99免费视频| 久草九九| 色色色色网站| 日韩成人影片在线观看| 五月天婷a| 97爱艹婷婷开心丁香激情综合| 欧美日韩大黄| 激情九月婷婷| WWW,五月天| 色婷婷亚洲精品天天综| 婷婷伊人久久| 99在线播放视频| 日韩不卡DvD| 亚洲综合99| 日本三级中国三级99| 色情久久久| 日韩狠狠色| 在线中文字幕视频| 人人97碰| 免费AV播放| 五月开心婷婷极品激情| 五月天色丁香| 五月天天丁香婷婷在线中| 99热这里是精品| 99热这是里只有精品| 天天干天天干天天干| 婷婷成人丁香色情基地30|