99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
成人在线日韩| 久久这里只有精品无码| 综合色网站| 天天射综合网夜夜操| 国产AV国片偷人妻麻豆| 国产精品美女| 久久亚洲婷婷| 狠狠撸激情综合丁香五月天俺来啦| 成人亚洲精品久久久久| 日日干天天| 99九九在线视频| 91婷婷丁香| 国产成人网址| 一级七香蕉| 亚洲免费av在线| 婷婷色在线观看| 美日韩成人| 精品综合五月| 麻豆123区| 婷婷黄色| 丁香五月激情图片婷婷| 婷婷丁香九月| 天天日天天日天天搞| 欧美人人操| 综合aV在线| 色五月在线观看| 久久人人九九| 婷婷中文综合网| 深爱激情五月网| 120分钟婬片免费看| 自拍视频在线观看9| 99熟女视频| 七七九九色色| 亚洲色夜| 五月丁香色色| 丁香六月婷婷| 婷丁五月| 丁香六月婷婷久久高清| 大香蕉丁香五月| 91超级碰碰| 9l视频自拍九色9l视频自拍九色9l社区| 丁香五月图片| 激情 五月 婷婷 丁香| 色色色色色五月| 天天操婷婷| 日本 @ va 免费| 五月天丁香六月综合| 丁香婷婷成年| 国产精品第一国产精品| 99爱精品| 色综合婷婷| 99久久99热这里只有精品| 五月丁香婷色| 97性视频| 色色色色欧洲| 99在线观看| 五月丁香操婷逼| 丁香五月婷婷偷拍| 婷婷的久久网站| 欧美操逼天堂| 9热久久在线| 丁香五月停停av| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 噜噜色天天开心| www一起操| www一起操| 丁香久久久| 天天爽天天爽| 五月天色综合| 八戒青柠影视剧在线观看| 天天日日夜夜| 欧美性爱一区| 色色亚洲| 日本人妻伦在线中文字幕 | 丁香五月婷婷影视先锋| 九九精品亚洲| 中文字幕成人| 思思久日精品视频| 91碰超| 色五月丁香伊人五月| 婷婷五月中文在线| 亚洲色五月天在线| 五月丁香亭亭成人电影| 色欲丁香久久| 99热这里只有精品23| 天天射综合网天天插| 97婷婷丁香五月天激情图片| 婷婷五月天综合在线| 夜夜爽天天爽| 99热在线观看| 人人操人人干AV| 五月天激情四射| 五月天婷婷色在线视频免费观看| 激情九九这里只有精品| 天天操加勒比| 天天日天天舔| 亚洲乱码日产精品BD| 99视频| 欧美碰碰| 婷婷五月天777| 久久机热这里只有 | 五月天 综合 在线| 五月在在观看| 久久久大香蕉| 丁香五月伊人| 天天综合色99| 色婷婷a v| 色久播播| av在线免费网站| 婷婷五月激情小说| 男妓跪趴把舌头伸进我的嘴巴| 婷婷丁香精品视频在线观看| 激情涩涩网| 5月婷婷激情网| 婷婷五月天激情基地| 激情中文在线| 丁香五月婷婷高清| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 欧美情色电影一区二区| 国产欧美大香蕉一区| 五月天婷婷丁香人人操91| 激情五月色综合网| 9这里只有精品| 九热视频这里只有精品| 草草视频91| 色婷婷99| 99乱视频| 婷婷五月天在线视频网站| www.91婷婷| 亚洲精品亚洲人成人网| 久久婷婷五月天蜜桃| 日本欧美在线| 丁香五月六月婷婷怡红院| 久久伊人婷婷| 色婷婷五月天成人网| 激情五月天之五月婷婷| 91人人爽久久涩噜噜噜| 国产激情综合五月久久| 中文色婷婷| 777.色色| 天天弄天天操| 色色色欧美| 噜噜五月天综合| 99热这里只有精品9| 激情五月婷婷老师| 夜夜操夜夜姧| 国产成人精品一区二三区熟女在线| 色综合色五月| 五月天啪啪视频| www.激情com| 97韩国久久电影院| 五月天丁香久久综合| 激情五月天第四色| 五月婷婷五月天| 色玖玖| 九九色99| 日本99视频| 久久艹99| 五月婷婷综合激情网| 国产欧美精品AAAAAA片| 亚洲婷婷月丁香五月| 91色在线/日韩| 色很久综合| 五月婷六月天| 中文AⅤ大全| 色色日韩无码| 五月丁香 狠狠爱| 天天撸夜夜爽| 久草婷| 激情五月色综合国产精品| 99热天堂| 亚洲小电影在线观看黄999| 99色精品| 91九九热| 日韩啊啊啊| 超级碰碰碰久久网站| 这里只有九九精品| 九九综合88| 激情五月天www| 婷婷五月无码| 人人综合久| 激情五月天在线免费美女视频| 一区无码| 婷婷五月天在线观看第二页| 五月激香蕉网| www.99热视频| 日韩综合网络男女香蕉a片| 六月婷婷久久| 婷婷少妇激情| 五月开心网| 色婷婷五月基地在线| 久久九九综合| 五月开心激情网| 日本色五月| 亚洲国产精品二二三三区| 五月天丁香综合| 99热主页日本| 一级黄在线| 欧美综合五月丁香六月婷| 国产日产亚系列精品版优势| 五月天开心激情综合网| www色色色com| 综合另类视频| 无码AV免费精品一区二区三区 | 中文av网站| 五月丁香综合影院| se99视频| 久久婷婷五月天综合| 九月色婷婷婷| 色情婷婷| 热99只有里视频| 色色综合热| 久久久久激情| 人妻在线中文字幕久久| 婷婷97狠狠成人网站| hd五月婷婷在线| 日本偷拍九九九| 大香蕉五月天婷婷| 久久婷婷亚洲五月天| 91呦呦呦| 婷婷五月婷婷| 99re熱| 亚洲综合五月天| 五月情综合| 国产精产国品一二三在观看| 久久这里有精品在线观看| 高清国产一级婬片a免费| 色色色热热热| 天堂五月婷婷| 亚洲操精品| 久久久五月天| 伊人久久大香线蕉av一区| 99免费成人网| 婷婷色操| 综合久久狠狠| 五月天综合色| 爱婷婷都市激情| 六月色日韩| 99色婷婷| 婷婷的色色五月天| 婷婷五月综合视频| VA日本视频| 丁香婷婷五月天成人| 狠狠色噜噜狠狠狠狠综合| 开心五月深爱五月婷| 亚洲一级AV在线免费播放| 激情深爱五月天| 超碰熟女拍拍| 天天艹天天色| 国内婷婷丁香社区在线播放| 久久久.COM| 真实的国产乱XXXX在线91| 99综合一区| 久久性爱视频| 色婷婷在线影院| 久久久com| 噜噜网免费视频| 激情99。| 如何安全看伊人婷婷| 极品五月天| 国产毛片精品一区二区色欲黄A片| 婷婷5月九九| 91精品综合久久婷婷九色| 狠狠色婷婷| 激情五月丁香六月综合AVXXXX| 亚洲综人色综网| 狠狠九九婷婷韩| 亚洲情综合五月天| 麻豆AV一区二区三区| 五月丁香婷婷色色| 六月丁香婷婷综合狠狠爱夜夜爱| 婷婷五月天视频亚洲| 激情五月丁香在线观看直播| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 丁香五月成人| 五月天色影院| 狠狠干综合网| 婷婷五月天在线观看第二页| 欧美婷婷五月| 丁香五月六月婷婷综合激情| 五月天堂在线| 99思思热只有在这里看| 性生活久久人妻| 色婷婷综合中心| 激情五月婷婷丁香六月| 97操操操| 99热久| 情色五月天网站| 九热视频精品| 日本久久99久久| 色婷婷成人久久| 久久A极片| 久久精品99国产精品日本| 欧美色婷婷| 五月激情啪啪啪| 婷婷97碰碰| 在线视频99| 超碰资源在线| 91偷拍视频| 精品成人在线观看| 日韩AV大全| 久久婷婷精品| 丁香五月激情婷婷| 99人妻碰碰久久久禁片| 性爱111111| 色婷婷av综合网| 99久久五月婷婷| WWW久久99久久99久久| 伊人青涩网| 888久久久| 色色色九九九五月婷婷| 97午夜一区二区| 久久久久久久,99精品视频| 五月婷婷色在线| 久草婷婷在线| 天天色综| 日本va欧美va欧美va精品| 异能之下短剧免费观看全集| 六月丁香婷婷色综合| 69激情小说| 播五月丁香六月| 五月天婷婷综合免费| 伦乱美欧| 激情五月六月婷婷综合啪啪| 热99精品视频| 97人人做| 中国女人做爰A片| 色综色网| 婷婷六月视频| 无码天天操| www.sezonghe| 超碰九九热| 91九色精品熟女内射| 成人五月丁香花| 91久久人人操| 日夜操B| 色婷婷欧美在线| 激情婷婷另类| 五月丁香久人妻中文| 丁香五月av| 激情久久伊人| 五月丁香综合啪啪| 丁香婷婷成人在线播放| 五月天久久婷婷| 成人国产欧美大片一区| 99五月婷| www,婷婷五月天777me,com| 色五月婷婷五月天激情综合| 丁香五月激情五月| 亚洲婷婷综合视频| 99热无码精品| 久久98热re| 99热这里有精品| 毛片九九九九九九| 婷婷五月天亚洲色| 婷婷五月天激情小说| 99re热视频这里只精品| 97久久草草超级碰碰碰| 五月婷婷久| 99热这里只有精品青草| AA片在线观看视频在线播放| 久热99热| 婷婷久久亚洲| 色五月大香蕉| 国产婷婷五月天| 深爱丁香激情| 久久婷婷亚洲| 1024手机在线观看看片_日韩精品| 婷婷丁香五月天在线视频| 蜜桃人妻无码AV天堂三区| 婷婷丁香午夜综合影视| 色丁香婷婷| 久久免费高| 91狠狠色丁香婷婷综合久久| 大香蕉欧美在线| 99精品偷自拍| 99五月丁香丁| 婷婷天堂综合| 日熟女| 午夜激情五月| 亚洲亚洲人成综合网络| 丁香 婷婷 激情 综合 五月| 99热综合色图| 色综合av超碰| 五月激情六月婷婷| 丁香五月婷婷av影院| 天天操夜夜啊| 人人干av| 99色天堂| 五月停停色色丁香| 五月婷婷久久久久| 亚洲色视频| 清纯唯美 激情四射| 99热福利| 色综合com| 天堂爱啪啪| 久久久久久丁香五月| 欧美大肥婆大肥BBBBB| 丁香婷婷性爱| 97人人干人人操| 综合五月丁香六月婷婷| 999热这里只有精品| 久9精品视频在线| 激情五月婷婷欧美极品| 亚洲综合婷婷| 66久久视频在线| 五月天国产| 天天操B| 综合一区二区三区| 99热爱爱干干日| 六月撸婷婷| 亚洲AV免费国产电影| 色停停五月天| 丁香六月激情毛片| 91超级碰在线视频| 久久综合五月天| 大香蕉久久久| 久碰视频| www.婷婷五月天| 99热6这里只有精品6| 色婷婷基地| 色婷婷丁香| 91精品久久久久久77777| 日韩精品一品二区三区的使用体验| 吉澤明步Av一區二區| 伊人大香久久| 九九99九九99偷拍视频免费看| 色色五月婷婷久久| 九九伊人网| 五月丁香六月综合情在线观看| 97色色色| 甈你aaaaa| 大香蕉在线99热| 79色色| 欧美三级级99久久| 日本三级韩三级99久久| 色婷婷六月激情| 日本强伦片中文字幕免费看| 天天干com| 久久一级免费黄色片| 精品久久人妻| 操91| 超极99精品| 日韩AAAAAAAAAAA片| 人人综合久| 99免费在线视频| 五月婷丁香在线视频在线| 色婷婷成人色网| 欧美成人色婷婷| 久久精品五月天| 亚州操人在线视频| 草婷婷在线| 婷婷五月综合免费在线| 久久这里都是精品| 亚洲操逼片| 国产欧美日韩综合精品一区二区| 婷婷激情五月色综合| 91日视频| 免费观看欧美成人AA片爱我多深| 激情五月色播五月| 这里只有精彩小视频视频网站| 欧美电影在线观看| 日韩淑女人妻luan伦激情精品一区二| a在线免费v| 激情五月激情综合网| AV国产有码| 草草影院爱爱| 国产肥白大熟妇BBBB视频| 狠狠干在线| 五月伊人综合| 97超碰在线免费观看| 97色色视频| 99热中国| 精品视频99看在线视频| 激情综合色婷婷啪啪六月天| 99久久户外勾搭| 亚洲无码99| 久久99热免费| 久久伦乱| 99热免费18| 婷婷网五月天| 99在线视频资源| 午夜不卡成人一区二区| 99九九久久| 爆乳熟女-区二区三区| 亚州操人在线视频| 99热综合色图| 天天狠狠干| 色六月天天激情综合网| 91碰碰视频| 黄色AAAA韩国guochansanji| 天堂久久精品| 五月激情综| 色播播之激情五月婷婷| 亚洲激情四射| 日韩精品一品二区三区的使用体验 | 深爱五月天 开心网| 色色免费网站| www狠狠com| 五月天婷a在线| 丁香成人五月天| 综合五月天| 激情婷婷另类| 狠狠狠人妻| 婷婷色婷婷| 丁香五月综合久久综合| 伦乱人妻| 丁香五月婷婷国产在线| 日本V在线观看不卡视频网站| www超碰| 久久性爱视频| 久久婷婷综合五月天| 99热这里只有精品热| 丁香 婷婷 激情 综合 五月| 亚洲操逼网| 性色av大香综合| 日韩AV在线免费| 五月丁香六月激情网站| 男人操女人高潮91视频| 欧美性生交XXXXX无码小说 | 五月丁香六月婷婷在线观看| 99日这里只有精品| 五月婷婷开心六月激情小说| 五月花成人网| 天天干天天 亚洲| 五月六月丁香婷婷在线观看| 色色永久| 激情综合五月.....| 狠狠艹狠狠艹| www。88热在线视频免费观看| 婷婷久久久| 大香蕉婷婷丁香视频在线| 91大屁股精品| 91九色熟女| 久久精品99久久久久久| 伊人狠狠丁香婷婷综合尤物| 久久久99久久| www.99热日韩.com| 插插干干干色| 色播丁香婷婷五月激情| 人人草人人爱手机视频看看 | 色婷婷五月天视频在线| 天天爽夜夜爽夜夜爽精品视频| 色婷婷丁香| 伊人五月综合网| 玖玖婷婷五月天| 99综合| 日韩欧美成人片| 久99综合婷婷| 丁香五月影院| BBWCUCKOLD精品熟妇| 亚洲妇女熟BBW| 国产干逼片| 日韩AV一区二区三区| 婷婷九月在线| 综合色久| 婷婷成人丁香色情基地30 | 五月婷婷干干干| 亚洲夜五月| 日本婷婷丁香五月| 久色资源网| 99热8| 激情综合九月| 欧美交换配乱吟粗大25P| 51精品国自产在线| 色婷婷综合在线| 五月丁香婷草| 成人婷婷五月天| 台湾佬天天日丁香婷婷五月天| 久久婷婷五月天亚洲欧美| 丁香五月婷婷日本| 67194国产| 精品一二三区久久AAA片| 亚洲丁香花五月丁香花| 丁香婷婷色色| 开心四月婷婷在线色播播| 色偷偷狠狠| 日韩精品一区二区亚洲AV观看| 欧美色五月| 日本不卡一区二区三区| 激情婷婷九月| 99热20| 五月丁香六月婷婷开心网| 激情综合99| 九九热在线精品视频| 久久综合图片| 婷婷丁香五月亚洲欧美| 色婷婷五月视频| 色欲天天综合网| 666555。COm毛片| 三级毛片7979| 热99久久这里只有精品| 天天色99| 美女婷婷激情亚洲| 99热99在线| 亚洲综合色棒| 伊人久久婷婷| 亚州操逼网| 人妻熟妇六区| 亚洲色综合| 97久久婷婷色| WWW,色五月| 九九热99热| 97久久超碰| 操婷婷基地| 六月色色综合| 538任你爽| 婷婷五月激情基地| 丁香五月六月久久综合| 五月天婷五月天综合网在线观| 79精品视频在线观看,| 99热精品在线播放| AV成人在线播放| 婷婷涩五月天综合| 五月香婷婷| 另类视在线| 懂色AⅤ| 天天日天天操心| 77777亚洲午夜久久| 五月色无码| 欧美黄色AA片哗啦啦啦| 丁香婷婷五月人体| 日本欧美国产| 精品夜夜澡人妻无码AV| 五月婷婷啪| 五月丁香影院| 91热手机在线| 综合久久人妻| 午夜微拍福利| 激情综合五月.....| 中文字幕在线观看视频www| 亚洲色五月婷婷| 狠狠狠狠狠草| 色级停停| 久久这里都是精品视频| 五月丁香在线| 狠狠操狠狠爱| 超碰av在线| 91成人电影| 人妻精品一区二区三区| 超碰人人在线观看| 五月丁香色婷婷熟女| 国产高潮A片羞羞视频涩涩| 久久97| 欧美综合五月丁香六月婷| 久久婷婷色综合老司机| 丁香五月天在线| 婷婷五月天淫荡| 欧美综合婷婷网| 乱精品一区字幕二区| 九九日本视频| 色色色五月婷婷| 丁香婷最新动态| 9999久久久久| 天天综合情| 久久机热/这里只有精品| 久久久.COM| 91九色首页| 九月激情网| 操99| 国产欧美婷婷| 久久视频在线视频| 天天摸日日舔狠狠添婷婷婷 | 天天狠狠婷婷在线| 天天日日夜夜| 五月丁香少妇网| 国产午夜成人免费看片无遮挡| 日日干日日s| 亚洲情综合五月天| 五月丁香婷婷激情澎湃四射| 色99超碰| 狠狠色丁香婷婷久久综合| 99精品视频偷拍| 久草五月| 婷久看人爽| 成人五月丁香花| 丁香六月婷婷激情| 六月婷婷啪啪| 五月丁香六月色| 婷婷爱综合| 色色色香蕉五月婷| 九九视频在线| 九九色中文| 香蕉AV福利精品导航| 色综合久久伊伊婷婷五月| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 激情五月天偷拍综合网| 色婷久久| 亚洲乱码日产精品BD| 五月天婷婷视频30| 婷婷五月天黄色网址| 91九色视频| 九九热10| 亚洲精品另类| www99精品| 9热在线观看| 久久99网站| 欧美色色色| 亚洲 欧洲 国产 伦综合| 黄网免费观看| 亚洲综合色丁香五月天| 久热伊人在91| a网站免费观看| 五月婷婷五月天天| 亚洲无码yw| 九月丁香| 欧美25p| 五月婷婷激情刺激| 性爱激情久久| 亚洲九区| 五月天婷婷五月| 日本97在线视频| 香蕉久久国产AV一区二区| 26uuu最新地址| 久久xxxx| 色婷婷影视99| 婷婷久久五月天| 人人爽欧美婷婷久久久五月丁香| 久久久久9| 九久久九精品视频| 日韩成人免费电影| 久久aaaa片一区二区| 色欲丁香| 天天操天天国产三级片处女学生妹| 大香蕉伊人久久| 99国产小视频| 色欲婷婷夜夜| 超碰不卡在线| 九九综合九| 丁香婷婷久久 | 丁香无月在线观看| 午夜丁香 婷婷| 99re6在线视频精品免费| 久久婷婷五月综合啪| 99热精品一区| 永久思思热在线| 大香蕉人在线65| 大香蕉AV电影在线| 丁香六月综合| 色综合久久88色综合天天99| 亚洲激情综合免费| 天天综合.com| 亚洲成人网无码| 久久五月婷婷丁香| 五月婷婷欧洲| 搡BBBB搡BBB搡18| 99精品在线| 国产成人亚洲综合A∨婷婷| 91dy.av| 色色五月婷婷| 丁香色综合| 99精品视频推荐| 97日本在线播放| 欧美激情五月天| 久久久中文| 亚洲秘 无码一区二区三区妃光/1| 狠狠草综合网| 欧美综合在线五月天色婷婷| 亚洲激情无码久久| 26uuu欧美日韩| 九色视频91疯狂| 婷婷中文字幕网| 九97免费视频| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 天天日日爽| 思思热性操| 亚洲精品乱码久久久久久综合| 日韩另类| 精品在线网站| 在线中文亚洲| 色情五月天丁香社区| 五月天堂色色| 精品一区二区三区三区| 97涩婷婷婷婷基地| www...com黄在线观看| 五月网站| 婷婷综合中文字幕| 琪琪色网在线| 免费黄网不卡AV| 激情图片亚洲| 久久女伦| 九九美女视频| 免费人人操| 国产资源在线视频| 丁香六月婷婷综合啪啪| 婷婷色在线视频| 9久久婷婷国产综合精品性色| 日本九九视频| 五月丁香婷中文| 99色婷婷视频| 26uuu四色| 婷婷伊人激情婷婷| 人人摸人人射| 久久这里有精品视频在线免费观看| 五月激情网综合| 婷婷五月天在线观看免费| 色综合激情| 色丁香五月| 国产91视频| 九九这里只有精品| 97精品人人A片免费看| 色伦专区97中文字幕| 99热网精品| 丁香婷婷激情四射五月| 婷婷五月天丁香激情| …亚洲黄色在线播放日韩、av中文a…| 玖玖婷婷精品| 国产亚洲99久久精品| 梁铮版《蜘蛛女侠》在线| 天天操,天天插| 色婷婷基地| 偷拍91九色| 狠狠的日| 丁香8月手机综合| 99热在线网站| 97碰碰视频在线观看| 天天爽在线视频| 婷婷六月久久| 五月天婷婷久久| 色五月在线播放| 亚洲欧美在线观看| 婷婷五月欧美| 亚洲愉拍99热成人精品| 五月天亚洲最大成人| 婷婷五月天黄色小说| 日韩操逼大片| 99精品偷自拍| 色情五月天丁香社区| 久草久青福利| 亚洲这里只有精品| 狠狠综合网| 久久丁香网| 丁香五月影视| 中文aV网| 97色天堂| 久久久久久久久久久-久五月天婷婷| 91九色在线观看免费| 九九综合| 五月婷婷狠狠干| 久久婷婷网站| www五月婷婷| 武则天精品久久| 五月天中文字幕在线婷婷| 少妇人妻人伦A片| 天天做天天爱天天爽| 在线日韩av| 天天日日夜夜爽| 另类激情网| 五月丁香六月婷婷啪啪| 天天婬色综合| 五月综合视频在线| 亚洲无码色色| 国产午夜精品一区二区三区嫩草| 色综合视频| 九九一综合精品| 91九色熟女| 九日日夜夜69| 色欲人妻综合aaaaaaaa网| 综合激情视频| 爽tv | 久/久精品99看9| 婷婷五月天小说网| 曰韩少妇内射免费播放| 五月天激情久久| 噜噜久| 激情婷婷五月天| 香蕉久久国产av一区二区| 开心五月综合激情综合五月| 狠狠综合网| 日韩美一级毛卡片| 激情丁香网| 可以看的AV| 伊人久久五月天综合| 色婷视频| 五月婷婷久久综合| 六月婷婷五月丁香| 国产操B| 月婷婷亚洲| 亚洲成人在线播放| 在线成人视频免费| 日本人人xxx| 伊人丁香在线| hd五月婷婷在线| 五月天激情影院| 亚洲欧美婷婷五月色综合| 一本色道久久综合狠狠躁小说| 婷婷五月天99综合网站| 五月天久久婷婷婷| 精品色色| 婷婷六月丁香在线| 久久三级视频| 激情综合网五月| 激情网婷婷五月天| www.刺激色网站www.| 99爱在线视频观看| 色婷婷很很十八禁| 开心五月婷婷激情网| 99热在线观看| 深爱 五月天| 久久综合五月| 久热这里只精品| 丁香激情久久| 精品成人久久久久久久_一二三四视| www.99日本| 欧美三级黄色片久久| 99精彩视频| 婷婷va| 五月天伊人久久久久| 丁香五月成人丝袜| 99亚洲精品视频| 婷婷五月天你懂的| 天堂五月婷婷| 九九色院| 影视av久久久噜噜噜噜噜三级| 99热日| 九色PORNY自拍成人精彩视频| 国产ava| 超碰人人操人人干| 狠狠色婷婷| 99久久久久| 色婷婷五月天激情在线播放| 色狠狠色噜噜AV天堂五区| 97干婷婷五月天| 精品二区| 99精品福利视频| 99久久亚洲国产| 久艹大香蕉| 婷婷视频网| 五月婷久久| 欧美va国产va| 九色99视频| 激情内射p| 国产老熟妇亲子乱对白| 亚洲午夜av| 六月丁香成人| 狠狠操狠狠色| 开心激情网在线| 91九色 婷婷| 狠狠干在线| 五月婷婷六月丁香激情综合网| 大香伊人久色| 色 色 色综合com| 久久大香蕉同僚| 无码色色色| 丁香六月婷婷色XXXX| 久热伊人在91| 在线视频另类| 热热久久精品视频| 色在线免费观看| 99热亚洲精品| 丁香五月自拍| 婷婷丁香五月综合久久| 涩婷婷五月天在线精品视频| 中文字幕在线免费观看视频| 成人精品视频99在线观看免费| 激情网婷婷婷| 色婷婷五月综合在线| 日本丁香五月| 五月天狠狠干| 婷婷色啪| 国产乱妇乱子在线播视频播放网站| 天天爽综合网| www.色99| 碰碰人人人| 欧洲亚洲午夜| 婷婷天天插天天爱| 婷婷五月综合色中文字幕| 做爱夜夜干天天操| 婷色影院| 超碰二区| 五月天婷婷成人资源站| 九色七七| 伊人丁香五月天丁香在线婷| 天堂综合久| 丁香婷婷丁香五月欧美人| 1级欧美日韩| 91综合色| 五月天婷婷丁香视频| www.9797国产| 粉嫩AV久久一区二区三区| 日本色视| 色五月久久成人婷婷| 99草在线免费观看视频| 91狠狠综合久久| 五月天综合影院| 五月丁香久久久久| 国产jd1024基地手机看国产| 丁香大香蕉| 五月丁香色婷| 九九五月天| 人人操99| 婷婷五月激情视频在线| 久碰视频| 激情文学 综合 九月| 五月婷婷激情久久| 色99在线观看| 美女婷婷六月色| 超级碰碰碰97免费| 免费色婷婷| 激情五月天综合| 亚洲精品婷婷| 热99这里只有精品视频| 五月婷啪啪| 久热精彩视频98| 99综合| 狠狠做婷婷| 蜜乳国产网站| 天天日天天插天天操| 青青久久大香蕉| 91在线操逼视频| 五月婷婷成人| 天天综合色丁香| 国产一二三四五六七八视频| 丁香密臀AV激情网| 亚洲日比视频| 亚洲无AV在线中文字幕| 色欲天天综合| 五月婷婷六月天| 丁香九月婷婷色| 思思99热热热99| 久99综合婷婷| 九九99热久久精品66中文字幕| 伊人久久丁香五月91| 人妻丰满精品一区二区A片| 亚洲天堂99| 婷婷五月大香蕉| 这里只有精品视频在线| 色噜噜狠狠插综合| 国产高清RV综合aVa| 中文AV在线观看| 久久精彩视频18| 91久久精品国产91性色TV| 涩涩五月天| 爱射综合| 五月天婷婷久久| 伊人久久大香网| 五月激情影院| 激情综合激情综合| 五月婷婷影| 色色色欧美色色| 678五月丁香亚洲综合| 狠狠操.com| 国产激情综合五月久久| 99在线热| 玖玖无码中文| 久久伦乱| 婷婷五月天六点丁香五月| 日本高清久| 九九综合网色全集 | 99久久极情精品一区| 超碰三级片| 久久婷婷五月综合啪| 五月婷婷六月色| 五月丁香六月婷婷开心网| 激情五月天色婷婷| 婷婷五月天在线观看免费| 久久人人人人妻| 激情小说 五月天| 激情深爱五月| 99热无码| rr天天操| 影音先锋天天日| 99热无码| 丁香综合婷婷五月天| 欧美色色色色色色| 97碰免费视频在线| 色综合久久久久| 91超级碰| 性生生活大片又黄又| 亚洲国产精品VA在线看黑人| 韩国中文字幕91| 天堂二区| 99热黄| wWW九九在线播放| 操一区| 五月婷婷激情刺激| 九月婷婷综合八月丁香在线观看| 深爱开心激情网| 九九在线免费观看| 五月婷婷六月丁香色| 九九99热久久精品66中文字幕| 激情婷婷色五月| 狼人婷婷综合| 337p大胆噜噜噜噜噜91Av| AⅤ网站在线看| 天天综合网~91| 神马欧美精| 深爱婷婷基地| 黄涩毛片| 五月天六月色| 久久99精品久久只有精品| 五月激情影院| 久久婷婷五月综合色区| 色五月婷婷五月天激情综合| 99性视频| 丁香五月日本| 激情五月综合| 思思热在线视频精品| 强壮公让我夜夜高潮A片视频| 色婷婷呢狠禁久禁| 色综合偷拍| 五月在线婷色| 色婷婷六月天在线| 超级碰碰91| 99精品无码| 啪啪啪丁香五月| 99人妻碰碰碰久久久久禁片| 五月丁香色五月| 丁香五月婷婷六月丁香| 色色色色色色色色综合网| 精品亚洲国产成AV人片传媒| 91 九色 入口| 五月婷婷在线短视频| 日日操,夜夜爽| 人人操97| 苗黎美女四级成人版一级二级毛片| 丁香五月婷婷久久久| 噜噜色天天开心| 久久视频这里99| 亚州操操| 99热在线极品极品| 91精品久久久久久| 色婷婷五月天不卡| 中文字幕视频在线播放| 亚洲中文字幕AV在线| 91丁香五月| 综合五月天天天天天五月| 9精品在线| 婷婷中文字幕欧美| a色婷婷| 思思热性操| 亚洲综合成人网| 五月婷视频在线观看| 五月丁欧美| 五月天激情婷婷| 五月色情| 超碰久热| 五月的色婷婷高潮| 亚洲欧美在线观看| 日本啪啪天堂| 婷婷五月噜噜| 五月天偷拍| 久久综合无| 色色五月婷婷丁香| 色色色色色色色色网站| 伊人久久综合| 新激情五月天色播| 日本女人久久| 97色一二三| 狠狠色丁香婷婷基地| 久久激情网| 久久人妻人人| 在线中文AV| 丁香女人五月天| 婷婷第六色| 成人在线网站| 人人人操B超碰| 开心激情五月天网| 久久五月天视频| 色婷婷小说| 91丨九色丨国产打屁股| 五月久久婷婷天堂视频| 婷婷五月丁香网| 少妇AB又爽又紧无码网站 | 天天色图| 五月天天天天天天天天天天天天天天天婷婷婷 | 五月婷婷亚洲色视频| 久久久全国免费视频| 天天射夜夜爽| 1024国产| 久久久宗合| 大天天伊人| 内射 无码 伊人| 婷婷五月免费在线| 亚洲欧洲另类| 激情综合五月婷| 五月婷婷导航| 欧美WW在线网| 九九视频这里只有精品| www.韩日视频| 婷婷激情综合网| 五月婷在线| 狠狠操天天操| 婷婷视频网| 夜夜 操无码| 成人婷99最新| 欧日韩成人| 日日日天天干| 亚洲视频在线网| 婷婷五月天久久久| 一区中文字幕电影| 开心亚洲久久开心| 99热在线观看| 五月综合婷婷网| 日产精品一线二线三线芒果| 五月天色婷伊人| 开心激情站| 五月丁香在线精品| 激情婷婷丁香| 日韩成人精品一区久久久久| 97在线观视频免费观看 | 五月婷婷婷| 亚洲午夜电影| 91精品国产99久久久久久天美| 亚洲第一色区| 96色婷婷| 思思99热| 亚洲中文字幕av| 狠狠色大香蕉| 久久婷婷五月丁香网| 超碰在线国产| 婷婷激情五月天7| 亚洲蜜桃精久久久久久久久久久久| 青青草搞屄视频网站| 色135综合网| 久久视频在线| 婷婷综合影院| 五月丁香久久久久| 日本高清久久| 99色色| 天天碰天天插天天操| 黄色中文字目| 色五月丁香网| 丁香六月婷婷综合欧美| 久热99| 激情综合网五月天天| 欧美综合激情| 色五月天成人| 另类视频一区| 性做爰1一7伦| 天天天日天天天干| 久婷自拍视频| 四色永久成人网站| XXXX岛国| 日本二级毛片二级毛片| 婷婷深爱五月丁香| 久久五月激情综合| 五月天激情综合| 丁香婷五月天| 色婷婷影视99| 久久亚洲婷婷| www·五月天| 五月天基地| 另类激情五月| 丁香五月色综合色播五月| 色色999三级片| 五月婷婷色综图片| 天天激情5月天亚洲| 久久五月婷天天干| 9久热在线视频精品| 99在线爽| 无码AV免费精品一区二区三区| 26uuu亚洲欧美日本| 五月婷婷啪啪啪| 七七婷婷综合| 久久性刺激| 色婷婷五月天天天天天| 色婷婷AV久久| 五月色亚洲| 欧美人妻一区二区| 五月丁香六月婷婷精品| 欧美 色婷婷| 97热视频| 丁香五月婷在线观看| 9久热| 亚洲亚洲人成综合网络|